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

github.com/jgraph/drawio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Benson <david@draw.io>2022-01-26 01:09:40 +0300
committerDavid Benson <david@draw.io>2022-01-26 01:09:40 +0300
commitd8601ce593f2d60922884a298979bf5ec46fb1cc (patch)
tree344012fe65d3f677044b0782ea422e9d8a412c20
parent76be4cdc94e67467f7d9d0bb07a8ddfc80797dd1 (diff)
16.4.7 releasev16.4.7
-rw-r--r--ChangeLog19
-rw-r--r--VERSION2
-rw-r--r--etc/propgen/package-lock.json106
-rw-r--r--etc/propgen/package.json2
-rw-r--r--package.json5
-rw-r--r--src/main/java/com/mxgraph/online/AbsAuthServlet.java72
-rw-r--r--src/main/java/com/mxgraph/online/GoogleGadgetServlet.java256
-rw-r--r--src/main/webapp/js/app.min.js1726
-rw-r--r--src/main/webapp/js/diagramly/App.js5
-rw-r--r--src/main/webapp/js/diagramly/Devel.js2
-rw-r--r--src/main/webapp/js/diagramly/Dialogs.js397
-rw-r--r--src/main/webapp/js/diagramly/Editor.js19
-rw-r--r--src/main/webapp/js/diagramly/Menus.js6
-rw-r--r--src/main/webapp/js/diagramly/Minimal.js16
-rw-r--r--src/main/webapp/js/grapheditor/Actions.js7
-rw-r--r--src/main/webapp/js/grapheditor/Menus.js5
-rw-r--r--src/main/webapp/js/viewer-static.min.js767
-rw-r--r--src/main/webapp/js/viewer.min.js767
-rw-r--r--src/main/webapp/mxgraph/mxClient.js6
-rw-r--r--src/main/webapp/resources/dia.txt1
-rw-r--r--src/main/webapp/resources/dia_am.txt1
-rw-r--r--src/main/webapp/resources/dia_ar.txt1
-rw-r--r--src/main/webapp/resources/dia_bg.txt1
-rw-r--r--src/main/webapp/resources/dia_bn.txt1
-rw-r--r--src/main/webapp/resources/dia_bs.txt1
-rw-r--r--src/main/webapp/resources/dia_ca.txt1
-rw-r--r--src/main/webapp/resources/dia_cs.txt1
-rw-r--r--src/main/webapp/resources/dia_da.txt1
-rw-r--r--src/main/webapp/resources/dia_de.txt1
-rw-r--r--src/main/webapp/resources/dia_el.txt1
-rw-r--r--src/main/webapp/resources/dia_eo.txt1
-rw-r--r--src/main/webapp/resources/dia_es.txt1
-rw-r--r--src/main/webapp/resources/dia_et.txt1
-rw-r--r--src/main/webapp/resources/dia_eu.txt1
-rw-r--r--src/main/webapp/resources/dia_fa.txt1
-rw-r--r--src/main/webapp/resources/dia_fi.txt1
-rw-r--r--src/main/webapp/resources/dia_fil.txt1
-rw-r--r--src/main/webapp/resources/dia_fr.txt1
-rw-r--r--src/main/webapp/resources/dia_gl.txt1
-rw-r--r--src/main/webapp/resources/dia_gu.txt1
-rw-r--r--src/main/webapp/resources/dia_he.txt1
-rw-r--r--src/main/webapp/resources/dia_hi.txt1
-rw-r--r--src/main/webapp/resources/dia_hr.txt1
-rw-r--r--src/main/webapp/resources/dia_hu.txt1
-rw-r--r--src/main/webapp/resources/dia_i18n.txt1
-rw-r--r--src/main/webapp/resources/dia_id.txt1
-rw-r--r--src/main/webapp/resources/dia_it.txt1
-rw-r--r--src/main/webapp/resources/dia_ja.txt1
-rw-r--r--src/main/webapp/resources/dia_kn.txt1
-rw-r--r--src/main/webapp/resources/dia_ko.txt1
-rw-r--r--src/main/webapp/resources/dia_lt.txt1
-rw-r--r--src/main/webapp/resources/dia_lv.txt1
-rw-r--r--src/main/webapp/resources/dia_ml.txt1
-rw-r--r--src/main/webapp/resources/dia_mr.txt1
-rw-r--r--src/main/webapp/resources/dia_ms.txt1
-rw-r--r--src/main/webapp/resources/dia_my.txt1
-rw-r--r--src/main/webapp/resources/dia_nl.txt1
-rw-r--r--src/main/webapp/resources/dia_no.txt1
-rw-r--r--src/main/webapp/resources/dia_pl.txt353
-rw-r--r--src/main/webapp/resources/dia_pt-br.txt25
-rw-r--r--src/main/webapp/resources/dia_pt.txt1
-rw-r--r--src/main/webapp/resources/dia_ro.txt1
-rw-r--r--src/main/webapp/resources/dia_ru.txt1
-rw-r--r--src/main/webapp/resources/dia_si.txt1
-rw-r--r--src/main/webapp/resources/dia_sk.txt1
-rw-r--r--src/main/webapp/resources/dia_sl.txt1
-rw-r--r--src/main/webapp/resources/dia_sr.txt1
-rw-r--r--src/main/webapp/resources/dia_sv.txt1
-rw-r--r--src/main/webapp/resources/dia_sw.txt1
-rw-r--r--src/main/webapp/resources/dia_ta.txt1
-rw-r--r--src/main/webapp/resources/dia_te.txt1
-rw-r--r--src/main/webapp/resources/dia_th.txt1
-rw-r--r--src/main/webapp/resources/dia_tr.txt1
-rw-r--r--src/main/webapp/resources/dia_uk.txt1
-rw-r--r--src/main/webapp/resources/dia_vi.txt1
-rw-r--r--src/main/webapp/resources/dia_zh-tw.txt1
-rw-r--r--src/main/webapp/resources/dia_zh.txt1
-rw-r--r--src/main/webapp/service-worker.js2
-rw-r--r--src/main/webapp/service-worker.js.map2
-rw-r--r--src/main/webapp/teams.html4
80 files changed, 2377 insertions, 2250 deletions
diff --git a/ChangeLog b/ChangeLog
index e1434934..38962b8d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+25-JAN-2022: 16.4.7
+
+- Improves output validation of AbsAuthServlet [DND-371]
+- Improves redirect url validation [DND-370]
+- Changes child-src from none to self
+- Fixes two windows with disabled start screen https://github.com/jgraph/drawio-desktop/issues/883
+- Fixes handling of hidden stroke in RoughCanvas
+- Fixes order and start point for circle layout
+- Removes tags and layers icon in sketch footer
+- [conf cloud] Replaces deprecated dialog.on('close', ...)
+- [conf cloud] Forces sketch mode even when config sets ui
+- Improves connection points dialog
+
+24-JAN-2022: 16.4.6
+
+- Fixes border for waypoint shape with sketch style
+- [conf cloud] Added support for "new line" in page name in PageIds Export
+- Fixes configurations not saving https://github.com/jgraph/drawio-desktop/issues/873
+
21-JAN-2022: 16.4.5
- Corrects SHA for bootstrap
diff --git a/VERSION b/VERSION
index f2348c07..e99c2151 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-16.4.5 \ No newline at end of file
+16.4.7 \ No newline at end of file
diff --git a/etc/propgen/package-lock.json b/etc/propgen/package-lock.json
index e2fd058b..56bf6422 100644
--- a/etc/propgen/package-lock.json
+++ b/etc/propgen/package-lock.json
@@ -9,7 +9,7 @@
"license": "ISC",
"dependencies": {
"bidi-js": "^1.0.2",
- "node-fetch": "^3.1.1"
+ "node-fetch": "^3.0.0"
}
},
"node_modules/bidi-js": {
@@ -21,17 +21,17 @@
}
},
"node_modules/data-uri-to-buffer": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
- "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
+ "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==",
"engines": {
- "node": ">= 12"
+ "node": ">= 6"
}
},
"node_modules/fetch-blob": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.4.tgz",
- "integrity": "sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.2.tgz",
+ "integrity": "sha512-hunJbvy/6OLjCD0uuhLdp0mMPzP/yd2ssd1t2FCJsaA7wkWhpbp9xfuNVpv7Ll4jFhzp6T4LAupSiV9uOeg0VQ==",
"funding": [
{
"type": "github",
@@ -43,50 +43,19 @@
}
],
"dependencies": {
- "node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
},
"engines": {
"node": "^12.20 || >= 14.13"
}
},
- "node_modules/formdata-polyfill": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
- "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
- "dependencies": {
- "fetch-blob": "^3.1.2"
- },
- "engines": {
- "node": ">=12.20.0"
- }
- },
- "node_modules/node-domexception": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
- "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/jimmywarting"
- },
- {
- "type": "github",
- "url": "https://paypal.me/jimmywarting"
- }
- ],
- "engines": {
- "node": ">=10.5.0"
- }
- },
"node_modules/node-fetch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.1.1.tgz",
- "integrity": "sha512-SMk+vKgU77PYotRdWzqZGTZeuFKlsJ0hu4KPviQKkfY+N3vn2MIzr0rvpnYpR8MtB3IEuhlEcuOLbGvLRlA+yg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0.tgz",
+ "integrity": "sha512-bKMI+C7/T/SPU1lKnbQbwxptpCrG9ashG+VkytmXCPZyuM9jB6VU+hY0oi4lC8LxTtAeWdckNCTa3nrGsAdA3Q==",
"dependencies": {
- "data-uri-to-buffer": "^4.0.0",
- "fetch-blob": "^3.1.3",
- "formdata-polyfill": "^4.0.10"
+ "data-uri-to-buffer": "^3.0.1",
+ "fetch-blob": "^3.1.2"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@@ -105,9 +74,9 @@
}
},
"node_modules/web-streams-polyfill": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz",
- "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.1.1.tgz",
+ "integrity": "sha512-Czi3fG883e96T4DLEPRvufrF2ydhOOW1+1a6c3gNjH2aIh50DNFBdfwh2AKoOf1rXvpvavAoA11Qdq9+BKjE0Q==",
"engines": {
"node": ">= 8"
}
@@ -123,40 +92,25 @@
}
},
"data-uri-to-buffer": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
- "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA=="
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
+ "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og=="
},
"fetch-blob": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.4.tgz",
- "integrity": "sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.1.2.tgz",
+ "integrity": "sha512-hunJbvy/6OLjCD0uuhLdp0mMPzP/yd2ssd1t2FCJsaA7wkWhpbp9xfuNVpv7Ll4jFhzp6T4LAupSiV9uOeg0VQ==",
"requires": {
- "node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
}
},
- "formdata-polyfill": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
- "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
- "requires": {
- "fetch-blob": "^3.1.2"
- }
- },
- "node-domexception": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
- "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="
- },
"node-fetch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.1.1.tgz",
- "integrity": "sha512-SMk+vKgU77PYotRdWzqZGTZeuFKlsJ0hu4KPviQKkfY+N3vn2MIzr0rvpnYpR8MtB3IEuhlEcuOLbGvLRlA+yg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0.tgz",
+ "integrity": "sha512-bKMI+C7/T/SPU1lKnbQbwxptpCrG9ashG+VkytmXCPZyuM9jB6VU+hY0oi4lC8LxTtAeWdckNCTa3nrGsAdA3Q==",
"requires": {
- "data-uri-to-buffer": "^4.0.0",
- "fetch-blob": "^3.1.3",
- "formdata-polyfill": "^4.0.10"
+ "data-uri-to-buffer": "^3.0.1",
+ "fetch-blob": "^3.1.2"
}
},
"require-from-string": {
@@ -165,9 +119,9 @@
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
},
"web-streams-polyfill": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz",
- "integrity": "sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA=="
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.1.1.tgz",
+ "integrity": "sha512-Czi3fG883e96T4DLEPRvufrF2ydhOOW1+1a6c3gNjH2aIh50DNFBdfwh2AKoOf1rXvpvavAoA11Qdq9+BKjE0Q=="
}
}
}
diff --git a/etc/propgen/package.json b/etc/propgen/package.json
index eeb4332e..9b7fe32d 100644
--- a/etc/propgen/package.json
+++ b/etc/propgen/package.json
@@ -10,6 +10,6 @@
"license": "ISC",
"dependencies": {
"bidi-js": "^1.0.2",
- "node-fetch": "^3.1.1"
+ "node-fetch": "^3.0.0"
}
}
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..b7af95a2
--- /dev/null
+++ b/package.json
@@ -0,0 +1,5 @@
+{
+ "devDependencies": {
+ "eslint": "^8.7.0"
+ }
+}
diff --git a/src/main/java/com/mxgraph/online/AbsAuthServlet.java b/src/main/java/com/mxgraph/online/AbsAuthServlet.java
index acb5ac19..9aaf3b73 100644
--- a/src/main/java/com/mxgraph/online/AbsAuthServlet.java
+++ b/src/main/java/com/mxgraph/online/AbsAuthServlet.java
@@ -13,6 +13,8 @@ import java.io.StringWriter;
import java.math.BigInteger;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.security.SecureRandom;
import java.util.HashMap;
import java.util.logging.Level;
@@ -197,6 +199,31 @@ abstract public class AbsAuthServlet extends HttpServlet
deleteCookie(tokenCookieName, response);
}
+ //https://stackoverflow.com/questions/4390800/determine-if-a-string-is-absolute-url-or-relative-url-in-java
+ public static boolean isAbsolute(String url)
+ {
+ if (url.startsWith("//")) // //www.domain.com/start
+ {
+ return true;
+ }
+
+ if (url.startsWith("/")) // /somePage.html
+ {
+ return false;
+ }
+
+ boolean result = false;
+
+ try
+ {
+ URI uri = new URI(url);
+ result = uri.isAbsolute();
+ }
+ catch (URISyntaxException e) {} //Ignore
+
+ return result;
+ }
+
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
@@ -210,7 +237,6 @@ abstract public class AbsAuthServlet extends HttpServlet
String state = new BigInteger(256, random).toString(32);
String key = new BigInteger(256, random).toString(32);
putCacheValue(key, state);
- log.log(Level.INFO, "AUTH-SERVLET: [" + request.getRemoteAddr() + "] Added state (" + key + " -> " + state + ")");
response.setStatus(HttpServletResponse.SC_OK);
//Chrome blocks this cookie when draw.io is running in an iframe. The cookie is added to parent frame. TODO FIXME
addCookie(STATE_COOKIE, key, STATE_COOKIE_AGE, response); //10 min to finish auth
@@ -250,8 +276,8 @@ abstract public class AbsAuthServlet extends HttpServlet
version = stateVars.get("ver");
successRedirect = stateVars.get("redirect");
- //Redirect to a page on the same domain only (relative path) TODO Is this enough?
- if (successRedirect != null && successRedirect.toLowerCase().startsWith("http"))
+ //Redirect to a page on the same domain only (relative path)
+ if (successRedirect != null && isAbsolute(successRedirect))
{
successRedirect = null;
}
@@ -262,7 +288,6 @@ abstract public class AbsAuthServlet extends HttpServlet
if (cacheKey != null)
{
cookieToken = (String) tokenCache.get(cacheKey);
- log.log(Level.INFO, "AUTH-SERVLET: [" + request.getRemoteAddr() + "] Found cookie state (" + cacheKey + " -> " + cookieToken + ")");
//Delete cookie & cache after being used since it is a single use
tokenCache.remove(cacheKey);
deleteCookie(STATE_COOKIE, response);
@@ -318,7 +343,6 @@ abstract public class AbsAuthServlet extends HttpServlet
//Non GAE runtimes are excluded from state check. TODO Change GAE stub to return null from CacheFactory
else if (IS_GAE && (stateToken == null || !stateToken.equals(cookieToken)))
{
- log.log(Level.WARNING, "AUTH-SERVLET: [" + request.getRemoteAddr() + "] STATE MISMATCH (state: " + stateToken + " != cookie: " + cookieToken + ")");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
}
else
@@ -336,6 +360,7 @@ abstract public class AbsAuthServlet extends HttpServlet
{
if (successRedirect != null)
{
+ //successRedirect is validated above
response.sendRedirect(successRedirect + "#" + Utils.encodeURIComponent(authResp.content, "UTF-8"));
}
else
@@ -424,20 +449,20 @@ abstract public class AbsAuthServlet extends HttpServlet
}
urlParameters.append("client_id=");
- urlParameters.append(client);
+ urlParameters.append(Utils.encodeURIComponent(client, "UTF-8"));
urlParameters.append("&client_secret=");
- urlParameters.append(secret);
+ urlParameters.append(Utils.encodeURIComponent(secret, "UTF-8"));
if (code != null)
{
if (withRedirectUrl)
{
urlParameters.append("&redirect_uri=");
- urlParameters.append(redirectUri);
+ urlParameters.append(Utils.encodeURIComponent(redirectUri, "UTF-8"));
}
urlParameters.append("&code=");
- urlParameters.append(code);
+ urlParameters.append(Utils.encodeURIComponent(code, "UTF-8"));
urlParameters.append("&grant_type=authorization_code");
}
else
@@ -445,11 +470,11 @@ abstract public class AbsAuthServlet extends HttpServlet
if (withRedirectUrlInRefresh)
{
urlParameters.append("&redirect_uri=");
- urlParameters.append(redirectUri);
+ urlParameters.append(Utils.encodeURIComponent(redirectUri, "UTF-8"));
}
urlParameters.append("&refresh_token=");
- urlParameters.append(refreshToken);
+ urlParameters.append(Utils.encodeURIComponent(refreshToken, "UTF-8"));
urlParameters.append("&grant_type=refresh_token");
jsonResponse = true;
}
@@ -458,27 +483,25 @@ abstract public class AbsAuthServlet extends HttpServlet
{
con.setRequestProperty("Content-Type", "application/json");
- urlParameters.append("{");
- urlParameters.append("\"client_id\": \"");
- urlParameters.append(client);
- urlParameters.append("\", \"redirect_uri\": \"");
- urlParameters.append(redirectUri);
- urlParameters.append("\", \"client_secret\": \"");
- urlParameters.append(secret);
+ JsonObject urlParamsObj = new JsonObject();
+
+ urlParamsObj.addProperty("client_id", client);
+ urlParamsObj.addProperty("redirect_uri", redirectUri);
+ urlParamsObj.addProperty("client_secret", secret);
if (code != null)
{
- urlParameters.append("\", \"code\": \"");
- urlParameters.append(code);
- urlParameters.append("\", \"grant_type\": \"authorization_code\"}");
+ urlParamsObj.addProperty("code", code);
+ urlParamsObj.addProperty("grant_type", "authorization_code");
}
else
{
- urlParameters.append("\", \"refresh_token\": \"");
- urlParameters.append(refreshToken);
- urlParameters.append("\", \"grant_type\": \"refresh_token\"}");
+ urlParamsObj.addProperty("refresh_token", refreshToken);
+ urlParamsObj.addProperty("grant_type", "refresh_token");
jsonResponse = true;
}
+
+ urlParameters.append(urlParamsObj.toString());
}
// Send post request
@@ -567,7 +590,6 @@ abstract public class AbsAuthServlet extends HttpServlet
{
response.status = HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
e.printStackTrace();
- System.err.println(details);
log.log(Level.SEVERE, "AUTH-SERVLET: [" + authSrvUrl+ "] ERROR: " + e.getMessage() + " -> " + details.toString());
}
diff --git a/src/main/java/com/mxgraph/online/GoogleGadgetServlet.java b/src/main/java/com/mxgraph/online/GoogleGadgetServlet.java
deleted file mode 100644
index 0f22f507..00000000
--- a/src/main/java/com/mxgraph/online/GoogleGadgetServlet.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/**
- * $Id: GoogleSitesServlet.java,v 1.4 2014/01/27 21:51:26 gaudenz Exp $
- * Copyright (c) 2011-2012, JGraph Ltd
- *
- * TODO
- *
- * We could split the static part and the stencils into two separate requests
- * in order for multiple graphs in the pages to not load the static part
- * multiple times. This is only relevant if the embed arguments are different,
- * in which case there is a problem with parsin the graph model too soon, ie.
- * before certain stencils become available.
- *
- * Easier solution is for the user to move the embed script to after the last
- * graph in the page and merge the stencil arguments.
- *
- * Note: The static part is roundly 105K, the stencils are much smaller in size.
- * This means if the embed function is widely used, it will make sense to factor
- * out the static part because only stencils will change between pages.
- */
-package com.mxgraph.online;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
-
-/**
- * Servlet implementation class OpenServlet
- */
-public class GoogleGadgetServlet extends HttpServlet
-{
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * @see HttpServlet#HttpServlet()
- */
- public GoogleGadgetServlet()
- {
-
- }
-
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doGet(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException
- {
- String diagram = escapeHtml4(request.getParameter("diagram"));
- String type = escapeHtml4(request.getParameter("type"));
- String title = escapeHtml4(request.getParameter("title"));
- String edit = escapeHtml4(request.getParameter("edit"));
- String embed = escapeHtml4(request.getParameter("embed"));
- String b = escapeHtml4(request.getParameter("border"));
- String zoom = escapeHtml4(request.getParameter("zoom"));
- String pan = escapeHtml4(request.getParameter("pan"));
- String fit = escapeHtml4(request.getParameter("fit"));
- String resize = escapeHtml4(request.getParameter("resize"));
- String height = escapeHtml4(request.getParameter("height"));
- String math = escapeHtml4(request.getParameter("math"));
- String x0 = escapeHtml4(request.getParameter("x0"));
- String y0 = escapeHtml4(request.getParameter("y0"));
- String s = escapeHtml4(request.getParameter("s"));
- boolean showEmbed = (embed != null) ? embed.equals("1") : true;
-
- if (diagram == null)
- {
- diagram = "";
- }
-
- if (type == null)
- {
- type = "1";
- }
-
- if (title == null)
- {
- title = "Draw.io diagram";
- }
-
- if (height == null)
- {
- height = "400";
- }
-
- if (edit == null)
- {
- edit = "";
- }
-
- if (s == null)
- {
- s = "";
- }
-
- if (x0 == null)
- {
- x0 = "0";
- }
-
- if (y0 == null)
- {
- y0 = "0";
- }
-
- if (b == null)
- {
- b = "0";
- }
-
- if (zoom == null)
- {
- zoom = "1";
- }
-
- if (resize == null)
- {
- resize = "0";
- }
-
- if (pan == null)
- {
- pan = "1";
- }
-
- if (fit == null)
- {
- fit = "1";
- }
-
- if (math == null)
- {
- math = "0";
- }
-
- response.setCharacterEncoding("UTF-8");
- response.setContentType("application/xml");
- response.setStatus(HttpServletResponse.SC_OK);
-
- // Could use makeRequest with lower refreshInterval for getting data from
- // URLs and possibly, using OAUTH, for getting Drive file contents without
- // requiring to handle auth in the draw.io app again (pass XML in via
- // postMessage for example with a message to request the XML for solving
- // the timing issue when loading cross-domain iframe contents).
- OutputStream out = response.getOutputStream();
- out.write(("<Module>\n"+
- "<ModulePrefs title=\"" + title + "\" height=\"" + height + "\"\n"+
- " screenshot=\"https://www.draw.io/images/gadget-screenshot.png\"\n"+
- " thumbnail=\"https://www.draw.io/images/gadget-thumb.png\"/>\n"+
- "<UserPref name=\"diagram\" display_name=\"Diagram ID or URL\" datatype=\"string\"\n"+
- " default_value=\"" + diagram + "\" required=\"true\">\n"+
- "</UserPref>\n"+
- "<UserPref name=\"type\" display_name=\"Location\" datatype=\"enum\"\n"+
- " default_value=\"" + type + "\">\n"+
- " <EnumValue value=\"1\" display_value=\"Google Drive\"/>\n"+
- " <EnumValue value=\"2\" display_value=\"Dropbox\"/>\n"+
- " <EnumValue value=\"3\" display_value=\"Public\"/>\n"+
- ((showEmbed) ? " <EnumValue value=\"4\" display_value=\"Public (Embed)\"/>\n" : "")+
- "</UserPref>\n"+
- ((showEmbed) ?
- "<UserPref name=\"x0\" display_name=\"Left (Embed)\" datatype=\"string\" default_value=\"" + x0 + "\"></UserPref>\n"+
- "<UserPref name=\"y0\" display_name=\"Top (Embed)\" datatype=\"string\" default_value=\"" + y0 + "\"></UserPref>\n"+
- "<UserPref name=\"border\" display_name=\"Border (Embed)\" datatype=\"string\" default_value=\"" + b + "\"></UserPref>\n"+
- "<UserPref name=\"zoom\" display_name=\"Zoom enabled (Embed)\" datatype=\"bool\" default_value=\"" + ((zoom.equals("1")) ? "true" : "false") + "\"></UserPref>\n"+
- "<UserPref name=\"pan\" display_name=\"Panning enabled (Embed)\" datatype=\"bool\" default_value=\"" + ((pan.equals("1")) ? "true" : "false") + "\"></UserPref>\n"+
- "<UserPref name=\"fit\" display_name=\"Fit diagram to gadget (Embed)\" datatype=\"bool\" default_value=\"" + ((fit.equals("1")) ? "true" : "false") + "\"></UserPref>\n"+
- "<UserPref name=\"resize\" display_name=\"Resize container (Embed)\" datatype=\"bool\" default_value=\"" + ((resize.equals("1")) ? "true" : "false") + "\"></UserPref>\n"+
- "<UserPref name=\"math\" display_name=\"Mathematical typesetting (Embed)\" datatype=\"bool\" default_value=\"" + ((math.equals("1")) ? "true" : "false") + "\"></UserPref>\n"+
- "<UserPref name=\"edit\" display_name=\"Edit URL (Embed)\" datatype=\"string\" default_value=\"" + edit + "\"></UserPref>\n"+
- "<UserPref name=\"stencils\" display_name=\"Stencils (Embed)\" datatype=\"string\" default_value=\"" + s + "\"></UserPref>\n"
- : "")+
- "<Content type=\"html\">\n"+
- "<![CDATA[\n"+
- " <script type=\"text/javascript\">\n"+
- " var prefs = new _IG_Prefs();\n"+
- " var type = prefs.getString(\'type\');\n"+
- " var diagram = prefs.getString(\'diagram\');\n"+
- " \n"+
- " if (diagram != null && diagram.length > 0)\n"+
- " {\n"+
- " if (type <= 3)\n"+
- " {\n"+
- " var file = (type == 3) ? \'&gapi=0&db=0&url=\' + encodeURIComponent(diagram) :\n"+
- " (((type == 2) ? \'&gapi=0\' : \'&db=0\') +\n"+
- " \'#\' + ((type == 2) ? \'D\' : \'G\') + diagram);\n"+
- "\n"+
- " var iframe = document.createElement(\'iframe\');\n"+
- " iframe.setAttribute(\'frameborder\', \'0\');\n"+
- " iframe.style.width = \'100%\';\n"+
- " iframe.style.height = \'100%\';\n"+
- " iframe.setAttribute(\'src\', \'https://www.draw.io/?chrome=0\' + file);\n"+
- " document.body.appendChild(iframe);\n"+
- " }\n"+
- " else\n"+
- " {\n"+
- " var x0 = prefs.getString(\'x0\');\n"+
- " var y0 = prefs.getString(\'y0\');\n"+
- " var b = prefs.getString(\'border\');\n"+
- " var zoom = (prefs.getBool(\'zoom\') == true) ? \'1\' : \'0\';\n"+
- " var pan = (prefs.getBool(\'pan\') == true) ? \'1\' : \'0\';\n"+
- " var fit = (prefs.getBool(\'fit\') == true) ? \'1\' : \'0\';\n"+
- " var resize = (prefs.getBool(\'resize\') == true) ? \'1\' : \'0\';\n"+
- " var math = (prefs.getBool(\'math\') == true) ? \'1\' : \'0\';\n"+
- " var edit = prefs.getString(\'edit\');\n"+
- " var s = prefs.getString(\'stencils\');\n"+
- "\n"+
- " var div = document.createElement(\'div\');\n"+
- " div.className = \'mxgraph\';\n"+
- " div.style.position = \'relative\';\n"+
- " div.style.overflow = \'hidden\';\n"+
- " div.style.width = \'100%\';\n"+
- " div.style.height = \'100%\';\n"+
- " \n"+
- " var inner = document.createElement(\'div\');\n"+
- " inner.style.width = \'1px\';\n"+
- " inner.style.height = \'1px\';\n"+
- " inner.style.overflow = \'hidden\';\n"+
- " \n"+
- " var model = \'<mxGraphModel style=\"default-style2\" x0=\"\' + x0 +\n"+
- " \'\" y0=\"\' + y0 + \'\" pan=\"\' + pan + \'\" zoom=\"\' + zoom +\n"+
- " ((edit.length > 0) ? \'\" edit=\"\' + edit : \'\') +\n"+
- " \'\" resize=\"\' + resize + \'\" fit=\"\' + fit + \'\" border=\"\' + b +\n"+
- " \'\" math=\"\' + math + \'\" links=\"1\" url=\"\' + diagram + \'\"/>\';\n"+
- " \n"+
- " inner.innerHTML = encodeURIComponent(model);\n"+
- " \n"+
- " var src = \'https://www.draw.io/embed.js\';\n"+
- " \n"+
- " if (s.length > 0)\n"+
- " {\n"+
- " src += \'?s=\' + s;\n"+
- " }\n"+
- " \n"+
- " div.appendChild(inner);\n"+
- " document.body.appendChild(div);\n"+
- " \n"+
- " document.write(\'<script src=\"\' + src + \'\"></scr\' + \'ipt>\');\n"+
- " }\n"+
- " }\n"+
- "\t</script>\n"+
- "]]>\n"+
- "</Content>\n"+
- "</Module>\n"+
- "").getBytes());
- out.flush();
- out.close();
- }
-
-}
diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js
index 8ca68b53..aec1cae9 100644
--- a/src/main/webapp/js/app.min.js
+++ b/src/main/webapp/js/app.min.js
@@ -235,7 +235,7 @@ a),DRAWIO_GITLAB_URL=a);a=urlParams["gitlab-id"];null!=a&&(DRAWIO_GITLAB_ID=a);w
if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==urlParams.local||"1"==urlParams.lockdown)urlParams.picker="0",urlParams.gapi="0",urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0";
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";
-window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"16.4.5",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"16.4.7",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2<navigator.maxTouchPoints,IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&
0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==
@@ -858,8 +858,8 @@ mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var a=this.vertexArra
g,d=d/f*g,e=e/f*g,this.dispX[b]+=d,this.dispY[b]+=e,this.dispX[c]-=d,this.dispY[c]-=e)}}};mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)};function mxCircleLayout(a,b){mxGraphLayout.call(this,a);this.radius=null!=b?b:100}mxCircleLayout.prototype=new mxGraphLayout;mxCircleLayout.prototype.constructor=mxCircleLayout;mxCircleLayout.prototype.radius=null;mxCircleLayout.prototype.moveCircle=!1;
mxCircleLayout.prototype.x0=0;mxCircleLayout.prototype.y0=0;mxCircleLayout.prototype.resetEdges=!0;mxCircleLayout.prototype.disableEdgeStyle=!0;
mxCircleLayout.prototype.execute=function(a){var b=this.graph.getModel();b.beginUpdate();try{for(var c=0,d=null,e=null,f=[],g=b.getChildCount(a),k=0;k<g;k++){var l=b.getChildAt(a,k);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{f.push(l);var m=this.getVertexBounds(l),d=null==d?m.y:Math.min(d,m.y),e=null==e?m.x:Math.min(e,m.x),c=Math.max(c,Math.max(m.width,m.height))}}var n=this.getRadius(f.length,
-c);this.moveCircle&&(e=this.x0,d=this.y0);this.circle(f,n,e,d)}finally{b.endUpdate()}};mxCircleLayout.prototype.getRadius=function(a,b){return Math.max(a*b/Math.PI,this.radius)};mxCircleLayout.prototype.circle=function(a,b,c,d){for(var e=a.length,f=2*Math.PI/e,g=0;g<e;g++)this.isVertexMovable(a[g])&&this.setVertexLocation(a[g],Math.round(c+b+b*Math.sin(g*f)),Math.round(d+b+b*Math.cos(g*f)))};function mxParallelEdgeLayout(a){mxGraphLayout.call(this,a)}mxParallelEdgeLayout.prototype=new mxGraphLayout;
-mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout;mxParallelEdgeLayout.prototype.spacing=20;mxParallelEdgeLayout.prototype.checkOverlap=!1;mxParallelEdgeLayout.prototype.execute=function(a,b){var c=this.findParallels(a,b);this.graph.model.beginUpdate();try{for(var d in c){var e=c[d];1<e.length&&this.layout(e)}}finally{this.graph.model.endUpdate()}};
+c);this.moveCircle&&(e=this.x0,d=this.y0);this.circle(f,n,e,d)}finally{b.endUpdate()}};mxCircleLayout.prototype.getRadius=function(a,b){return Math.max(a*b/Math.PI,this.radius)};mxCircleLayout.prototype.circle=function(a,b,c,d){for(var e=a.length,f=2*Math.PI/e,g=0;g<e;g++)this.isVertexMovable(a[g])&&this.setVertexLocation(a[g],Math.round(c+b+b*Math.cos(g*f-Math.PI/2)),Math.round(d+b+b*Math.sin(g*f-Math.PI/2)))};function mxParallelEdgeLayout(a){mxGraphLayout.call(this,a)}
+mxParallelEdgeLayout.prototype=new mxGraphLayout;mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout;mxParallelEdgeLayout.prototype.spacing=20;mxParallelEdgeLayout.prototype.checkOverlap=!1;mxParallelEdgeLayout.prototype.execute=function(a,b){var c=this.findParallels(a,b);this.graph.model.beginUpdate();try{for(var d in c){var e=c[d];1<e.length&&this.layout(e)}}finally{this.graph.model.endUpdate()}};
mxParallelEdgeLayout.prototype.findParallels=function(a,b){var c=[],d=mxUtils.bind(this,function(a){if(!this.isEdgeIgnored(a)){var b=this.getEdgeId(a);null!=b&&(null==c[b]&&(c[b]=[]),c[b].push(a))}});if(null!=b)for(var e=0;e<b.length;e++)d(b[e]);else for(var f=this.graph.getModel(),g=f.getChildCount(a),e=0;e<g;e++)d(f.getChildAt(a,e));return c};
mxParallelEdgeLayout.prototype.getEdgeId=function(a){var b=this.graph.getView(),c=b.getVisibleTerminal(a,!0),b=b.getVisibleTerminal(a,!1),d="";if(null!=c&&null!=b){c=mxObjectIdentity.get(c);b=mxObjectIdentity.get(b);if(this.checkOverlap&&(a=this.graph.view.getState(a),null!=a&&null!=a.absolutePoints)){for(var d=[],e=0;e<a.absolutePoints.length;e++){var f=a.absolutePoints[e];null!=f&&d.push(f.x,f.y)}d=d.join(",")}return(c>b?b+"-"+c:c+"-"+b)+d}return null};
mxParallelEdgeLayout.prototype.layout=function(a){var b=a[0],c=this.graph.getView(),d=this.graph.getModel(),e=d.getGeometry(c.getVisibleTerminal(b,!0)),d=d.getGeometry(c.getVisibleTerminal(b,!1));if(e==d)for(var b=e.x+e.width+this.spacing,c=e.y+e.height/2,f=0;f<a.length;f++)this.route(a[f],b,c),b+=this.spacing;else if(null!=e&&null!=d){var b=e.x+e.width/2,c=e.y+e.height/2,f=d.x+d.width/2-b,g=d.y+d.height/2-c,d=Math.sqrt(f*f+g*g);if(0<d)for(e=g*this.spacing/d,d=f*this.spacing/d,b=b+f/2+e*(a.length-
@@ -2222,10 +2222,10 @@ a.vertices.push(b);var f=c.getCellGeometry(b);if(null!=f&&(0<f.width?null==a.wid
!1);b=c.view.getState(b);null!=b&&(a.autoSize=a.autoSize||c.isAutoSizeState(b),a.glass=a.glass&&c.isGlassState(b),a.rounded=a.rounded&&c.isRoundedState(b),a.lineJumps=a.lineJumps&&c.isLineJumpState(b),a.image=a.image&&c.isImageState(b),a.shadow=a.shadow&&c.isShadowState(b),a.fill=a.fill&&c.isFillState(b),a.stroke=a.stroke&&c.isStrokeState(b),e=mxUtils.getValue(b.style,mxConstants.STYLE_SHAPE,null),a.containsImage=a.containsImage||"image"==e,c.mergeStyle(b.style,a.style,d))};
EditorUi.prototype.installShapePicker=function(){var a=this.editor.graph,b=this;a.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,d){"mouseDown"==d.getProperty("eventName")&&b.hideShapePicker()}));var c=mxUtils.bind(this,function(){b.hideShapePicker(!0)});a.addListener("wheel",c);a.addListener(mxEvent.ESCAPE,c);a.view.addListener(mxEvent.SCALE,c);a.view.addListener(mxEvent.SCALE_AND_TRANSLATE,c);a.getSelectionModel().addListener(mxEvent.CHANGE,c);a.getModel().addListener(mxEvent.CHANGE,
c);var d=a.popupMenuHandler.isMenuShowing;a.popupMenuHandler.isMenuShowing=function(){return d.apply(this,arguments)||null!=b.shapePicker};var f=a.dblClick;a.dblClick=function(d,e){if(this.isEnabled())if(null!=e||null==b.sidebar||mxEvent.isShiftDown(d)||a.isCellLocked(a.getDefaultParent()))f.apply(this,arguments);else{var c=mxUtils.convertPoint(this.container,mxEvent.getClientX(d),mxEvent.getClientY(d));mxEvent.consume(d);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(c.x,c.y)}),
-30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",c);var e=this.hoverIcons.drag;this.hoverIcons.drag=function(){b.hideShapePicker();e.apply(this,arguments)};var l=this.hoverIcons.execute;this.hoverIcons.execute=function(d,e,c){var f=c.getEvent();this.graph.isCloneEvent(f)||mxEvent.isShiftDown(f)?l.apply(this,arguments):this.graph.connectVertex(d.cell,e,this.graph.defaultEdgeLength,f,null,null,mxUtils.bind(this,function(f,l,h){var g=a.getCompositeParent(d.cell);f=a.getCellGeometry(g);
-for(c.consume();null!=g&&a.model.isVertex(g)&&null!=f&&f.relative;)cell=g,g=a.model.getParent(cell),f=a.getCellGeometry(g);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(c.getGraphX(),c.getGraphY(),g,mxUtils.bind(this,function(d){h(d);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(d))}),e)}),30)}),mxUtils.bind(this,function(a){this.graph.selectCellsForConnectVertex(a,f,this)}))};var k=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(d,e){null!=k&&window.clearTimeout(k);
-k=window.setTimeout(mxUtils.bind(this,function(){var d=e.getProperty("arrow"),c=e.getProperty("direction"),f=e.getProperty("event"),d=d.getBoundingClientRect(),l=mxUtils.getOffset(a.container),h=a.container.scrollLeft+d.x-l.x,l=a.container.scrollTop+d.y-l.y,g=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),k=b.showShapePicker(h,l,g,mxUtils.bind(this,function(d){null!=d&&a.connectVertex(g,c,a.defaultEdgeLength,f,!0,!0,function(e,c,f){f(d);null!=b.hoverIcons&&
-b.hoverIcons.update(a.view.getState(d))},function(b){a.selectCellsForConnectVertex(b)},f,this.hoverIcons)}),c,!0);this.centerShapePicker(k,d,h,l,c);mxUtils.setOpacity(k,30);mxEvent.addListener(k,"mouseenter",function(){mxUtils.setOpacity(k,100)});mxEvent.addListener(k,"mouseleave",function(){b.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(a,b){null!=k&&window.clearTimeout(k)}))}};
+30)}};if(null!=this.hoverIcons){this.hoverIcons.addListener("reset",c);var e=this.hoverIcons.drag;this.hoverIcons.drag=function(){b.hideShapePicker();e.apply(this,arguments)};var l=this.hoverIcons.execute;this.hoverIcons.execute=function(d,e,c){var f=c.getEvent();this.graph.isCloneEvent(f)||mxEvent.isShiftDown(f)?l.apply(this,arguments):this.graph.connectVertex(d.cell,e,this.graph.defaultEdgeLength,f,null,null,mxUtils.bind(this,function(f,l,h){var k=a.getCompositeParent(d.cell);f=a.getCellGeometry(k);
+for(c.consume();null!=k&&a.model.isVertex(k)&&null!=f&&f.relative;)cell=k,k=a.model.getParent(cell),f=a.getCellGeometry(k);window.setTimeout(mxUtils.bind(this,function(){b.showShapePicker(c.getGraphX(),c.getGraphY(),k,mxUtils.bind(this,function(d){h(d);null!=b.hoverIcons&&b.hoverIcons.update(a.view.getState(d))}),e)}),30)}),mxUtils.bind(this,function(a){this.graph.selectCellsForConnectVertex(a,f,this)}))};var k=null;this.hoverIcons.addListener("focus",mxUtils.bind(this,function(d,e){null!=k&&window.clearTimeout(k);
+k=window.setTimeout(mxUtils.bind(this,function(){var d=e.getProperty("arrow"),c=e.getProperty("direction"),f=e.getProperty("event"),d=d.getBoundingClientRect(),l=mxUtils.getOffset(a.container),h=a.container.scrollLeft+d.x-l.x,l=a.container.scrollTop+d.y-l.y,k=a.getCompositeParent(null!=this.hoverIcons.currentState?this.hoverIcons.currentState.cell:null),g=b.showShapePicker(h,l,k,mxUtils.bind(this,function(d){null!=d&&a.connectVertex(k,c,a.defaultEdgeLength,f,!0,!0,function(e,c,f){f(d);null!=b.hoverIcons&&
+b.hoverIcons.update(a.view.getState(d))},function(b){a.selectCellsForConnectVertex(b)},f,this.hoverIcons)}),c,!0);this.centerShapePicker(g,d,h,l,c);mxUtils.setOpacity(g,30);mxEvent.addListener(g,"mouseenter",function(){mxUtils.setOpacity(g,100)});mxEvent.addListener(g,"mouseleave",function(){b.hideShapePicker()})}),Editor.shapePickerHoverDelay)}));this.hoverIcons.addListener("blur",mxUtils.bind(this,function(a,b){null!=k&&window.clearTimeout(k)}))}};
EditorUi.prototype.centerShapePicker=function(a,b,c,d,f){if(f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST)a.style.width="40px";var e=a.getBoundingClientRect();f==mxConstants.DIRECTION_NORTH?(c-=e.width/2-10,d-=e.height+6):f==mxConstants.DIRECTION_SOUTH?(c-=e.width/2-10,d+=b.height+6):f==mxConstants.DIRECTION_WEST?(c-=e.width+6,d-=e.height/2-10):f==mxConstants.DIRECTION_EAST&&(c+=b.width+6,d-=e.height/2-10);a.style.left=c+"px";a.style.top=d+"px"};
EditorUi.prototype.showShapePicker=function(a,b,c,d,f,e){a=this.createShapePicker(a,b,c,d,f,mxUtils.bind(this,function(){this.hideShapePicker()}),this.getCellsForShapePicker(c,e),e);null!=a&&(null==this.hoverIcons||e||this.hoverIcons.reset(),e=this.editor.graph,e.popupMenuHandler.hideMenu(),e.tooltipHandler.hideTooltip(),this.hideCurrentMenu(),this.hideShapePicker(),this.shapePickerCallback=d,this.shapePicker=a);return a};
EditorUi.prototype.createShapePicker=function(a,b,c,d,f,e,l,k){var h=null;if(null!=l&&0<l.length){var g=this,m=this.editor.graph,h=document.createElement("div");f=m.view.getState(c);var n=null==c||null!=f&&m.isTransparentState(f)?null:m.copyStyle(c);c=6>l.length?35*l.length:140;h.className="geToolbarContainer geSidebarContainer";h.style.cssText="position:absolute;left:"+a+"px;top:"+b+"px;width:"+c+"px;border-radius:10px;padding:4px;text-align:center;box-shadow:0px 0px 3px 1px #d1d1d1;padding: 6px 0 8px 0;z-index: "+
@@ -2353,8 +2353,8 @@ EditorUi.prototype.showBackgroundImageDialog=function(a,b){a=null!=a?a:mxUtils.b
EditorUi.prototype.setBackgroundImage=function(a){this.editor.graph.setBackgroundImage(a);this.editor.graph.view.validateBackgroundImage();this.fireEvent(new mxEventObject("backgroundImageChanged"))};EditorUi.prototype.confirm=function(a,b,c){mxUtils.confirm(a)?null!=b&&b():null!=c&&c()};EditorUi.prototype.createOutline=function(a){var b=new mxOutline(this.editor.graph);mxEvent.addListener(window,"resize",function(){b.update(!1)});return b};
EditorUi.prototype.altShiftActions={67:"clearWaypoints",65:"connectionArrows",76:"editLink",80:"connectionPoints",84:"editTooltip",86:"pasteSize",88:"copySize",66:"copyData",69:"pasteData"};
EditorUi.prototype.createKeyHandler=function(a){function b(a,b,e){if(!d.isSelectionEmpty()&&d.isEnabled())if(b=null!=b?b:1,e){d.getModel().beginUpdate();try{var c=d.getSelectionCells();for(e=0;e<c.length;e++)if(d.getModel().isVertex(c[e])&&d.isCellResizable(c[e])){var f=d.getCellGeometry(c[e]);null!=f&&(f=f.clone(),37==a?f.width=Math.max(0,f.width-b):38==a?f.height=Math.max(0,f.height-b):39==a?f.width+=b:40==a&&(f.height+=b),d.getModel().setGeometry(c[e],f))}}finally{d.getModel().endUpdate()}}else{var c=
-d.getSelectionCell(),f=d.model.getParent(c),h=d.getView().scale;e=null;1==d.getSelectionCount()&&d.model.isVertex(c)&&null!=d.layoutManager&&!d.isCellLocked(c)&&(e=d.layoutManager.getLayout(f));if(null!=e&&e.constructor==mxStackLayout)b=f.getIndex(c),37==a||38==a?d.model.add(f,c,Math.max(0,b-1)):39!=a&&40!=a||d.model.add(f,c,Math.min(d.model.getChildCount(f),b+1));else{var g=d.graphHandler;null!=g&&(null==g.first&&g.start(d.getSelectionCell(),0,0,d.getSelectionCells()),null!=g.first&&(f=c=0,37==a?
-c=-b:38==a?f=-b:39==a?c=b:40==a&&(f=b),g.currentDx+=c*h,g.currentDy+=f*h,g.checkPreview(),g.updatePreview()),null!=l&&window.clearTimeout(l),l=window.setTimeout(function(){if(null!=g.first){var a=g.roundLength(g.currentDx/h),b=g.roundLength(g.currentDy/h);g.moveCells(g.cells,a,b);g.reset()}},400))}}}var c=this,d=this.editor.graph,f=new mxKeyHandler(d),e=f.isEventIgnored;f.isEventIgnored=function(a){return!(mxEvent.isShiftDown(a)&&9==a.keyCode)&&(!this.isControlDown(a)||mxEvent.isShiftDown(a)||90!=
+d.getSelectionCell(),f=d.model.getParent(c),h=d.getView().scale;e=null;1==d.getSelectionCount()&&d.model.isVertex(c)&&null!=d.layoutManager&&!d.isCellLocked(c)&&(e=d.layoutManager.getLayout(f));if(null!=e&&e.constructor==mxStackLayout)b=f.getIndex(c),37==a||38==a?d.model.add(f,c,Math.max(0,b-1)):39!=a&&40!=a||d.model.add(f,c,Math.min(d.model.getChildCount(f),b+1));else{var k=d.graphHandler;null!=k&&(null==k.first&&k.start(d.getSelectionCell(),0,0,d.getSelectionCells()),null!=k.first&&(f=c=0,37==a?
+c=-b:38==a?f=-b:39==a?c=b:40==a&&(f=b),k.currentDx+=c*h,k.currentDy+=f*h,k.checkPreview(),k.updatePreview()),null!=l&&window.clearTimeout(l),l=window.setTimeout(function(){if(null!=k.first){var a=k.roundLength(k.currentDx/h),b=k.roundLength(k.currentDy/h);k.moveCells(k.cells,a,b);k.reset()}},400))}}}var c=this,d=this.editor.graph,f=new mxKeyHandler(d),e=f.isEventIgnored;f.isEventIgnored=function(a){return!(mxEvent.isShiftDown(a)&&9==a.keyCode)&&(!this.isControlDown(a)||mxEvent.isShiftDown(a)||90!=
a.keyCode&&89!=a.keyCode&&188!=a.keyCode&&190!=a.keyCode&&85!=a.keyCode)&&(66!=a.keyCode&&73!=a.keyCode||!this.isControlDown(a)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&e.apply(this,arguments)};f.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==c.dialogs||0==c.dialogs.length)};f.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var l=null,k={37:mxConstants.DIRECTION_WEST,
38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},h=f.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(d.isEnabled()){if(mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){var e=c.actions.get(c.altShiftActions[a.keyCode]);if(null!=e)return e.funct}if(null!=k[a.keyCode]&&!d.isSelectionEmpty())if(!this.isControlDown(a)&&mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(d.model.isVertex(d.getSelectionCell()))return function(){var b=d.connectVertex(d.getSelectionCell(),
k[a.keyCode],d.defaultEdgeLength,a,!0);null!=b&&0<b.length&&(1==b.length&&d.model.isEdge(b[0])?d.setSelectionCell(d.model.getTerminal(b[0],!1)):d.setSelectionCell(b[b.length-1]),d.scrollCellToVisible(d.getSelectionCell()),null!=c.hoverIcons&&c.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 h.apply(this,arguments)};f.bindAction=
@@ -2549,18 +2549,18 @@ u.apply(this,arguments))};var t=null,w=null,x=null,y=!1,F=e(this.triangleUp,mxRe
a.view;if(null!=x&&K==z)this.previewElement.style.display=a.model.isEdge(x.cell)?"none":"",this.previewElement.style.left=x.x+"px",this.previewElement.style.top=x.y+"px",this.previewElement.style.width=x.width+"px",this.previewElement.style.height=x.height+"px";else if(null!=t&&null!=K){null!=r.currentHighlight&&null!=r.currentHighlight.state&&r.currentHighlight.hide();var e=a.model.isEdge(t.cell)||null==g?m:g,l=n.getDropAndConnectGeometry(t.cell,d[e],M,d),h=a.model.isEdge(t.cell)?null:a.getCellGeometry(t.cell),
k=a.getCellGeometry(d[e]),p=a.model.getParent(t.cell),q=c.translate.x*c.scale,u=c.translate.y*c.scale;null!=h&&!h.relative&&a.model.isVertex(p)&&p!=c.currentRoot&&(u=c.getState(p),q=u.x,u=u.y);h=k.x;k=k.y;a.model.isEdge(d[e])&&(k=h=0);this.previewElement.style.left=(l.x-h)*c.scale+q+"px";this.previewElement.style.top=(l.y-k)*c.scale+u+"px";1==d.length&&(this.previewElement.style.width=l.width*c.scale+"px",this.previewElement.style.height=l.height*c.scale+"px");this.previewElement.style.display=""}else null!=
r.currentHighlight.state&&a.model.isEdge(r.currentHighlight.state.cell)?(this.previewElement.style.left=Math.round(parseInt(this.previewElement.style.left)-f.width*c.scale/2)+"px",this.previewElement.style.top=Math.round(parseInt(this.previewElement.style.top)-f.height*c.scale/2)+"px"):(this.previewElement.style.width=this.previewElementWidth,this.previewElement.style.height=this.previewElementHeight,this.previewElement.style.display="")}};var N=(new Date).getTime(),R=0,V=null,Z=this.editorUi.editor.graph.getCellStyle(d[0]);
-r.getDropTarget=mxUtils.bind(this,function(a,b,c,e){var f=mxEvent.isAltDown(e)||null==d?null:a.getCellAt(b,c,null,null,null,function(b,d,c){return a.isContainer(b.cell)});if(null!=f&&!this.graph.isCellConnectable(f)&&!this.graph.model.isEdge(f)){var h=this.graph.getModel().getParent(f);this.graph.getModel().isVertex(h)&&this.graph.isCellConnectable(h)&&(f=h)}a.isCellLocked(f)&&(f=null);var g=a.view.getState(f),h=K=null;V!=g?(N=(new Date).getTime(),R=0,V=g,null!=this.updateThread&&window.clearTimeout(this.updateThread),
-null!=g&&(this.updateThread=window.setTimeout(function(){null==K&&(V=g,r.getDropTarget(a,b,c,e))},this.dropTargetDelay+10))):R=(new Date).getTime()-N;if(q&&2500>R&&null!=g&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(g.style,mxConstants.STYLE_SHAPE)!=mxUtils.getValue(Z,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(g.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(g.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(g.style,
-mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(Z,mxConstants.STYLE_SHAPE)||1500<R||a.model.isEdge(g.cell))&&R>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(g)&&(a.model.isVertex(g.cell)&&null!=m||a.model.isEdge(g.cell)&&a.model.isEdge(d[0]))){if(a.isCellEditable(g.cell)){x=g;var k=a.model.isEdge(g.cell)?a.view.getPoint(g):new mxPoint(g.getCenterX(),g.getCenterY()),k=new mxRectangle(k.x-this.refreshTarget.width/2,k.y-this.refreshTarget.height/
-2,this.refreshTarget.width,this.refreshTarget.height);z.style.left=Math.floor(k.x)+"px";z.style.top=Math.floor(k.y)+"px";null==G&&(a.container.appendChild(z),G=z.parentNode);l(b,c,k,z)}}else null==x||!mxUtils.contains(x,b,c)||1500<R&&!mxEvent.isShiftDown(e)?(x=null,null!=G&&(z.parentNode.removeChild(z),G=null)):null!=x&&null!=G&&(k=a.model.isEdge(x.cell)?a.view.getPoint(x):new mxPoint(x.getCenterX(),x.getCenterY()),k=new mxRectangle(k.x-this.refreshTarget.width/2,k.y-this.refreshTarget.height/2,this.refreshTarget.width,
-this.refreshTarget.height),l(b,c,k,z));if(y&&null!=t&&!mxEvent.isAltDown(e)&&null==K){h=mxRectangle.fromRectangle(t);if(a.model.isEdge(t.cell)){var n=t.absolutePoints;null!=J.parentNode&&(k=n[0],h.add(l(b,c,new mxRectangle(k.x-this.roundDrop.width/2,k.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),J)));null!=L.parentNode&&(n=n[n.length-1],h.add(l(b,c,new mxRectangle(n.x-this.roundDrop.width/2,n.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else k=
-mxRectangle.fromRectangle(t),null!=t.shape&&null!=t.shape.boundingBox&&(k=mxRectangle.fromRectangle(t.shape.boundingBox)),k.grow(this.graph.tolerance),k.grow(HoverIcons.prototype.arrowSpacing),n=this.graph.selectionCellsHandler.getHandler(t.cell),null!=n&&(k.x-=n.horizontalOffset/2,k.y-=n.verticalOffset/2,k.width+=n.horizontalOffset,k.height+=n.verticalOffset,null!=n.rotationShape&&null!=n.rotationShape.node&&"hidden"!=n.rotationShape.node.style.visibility&&"none"!=n.rotationShape.node.style.display&&
-null!=n.rotationShape.boundingBox&&k.add(n.rotationShape.boundingBox)),h.add(l(b,c,new mxRectangle(t.getCenterX()-this.triangleUp.width/2,k.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),F)),h.add(l(b,c,new mxRectangle(k.x+k.width,t.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),H)),h.add(l(b,c,new mxRectangle(t.getCenterX()-this.triangleDown.width/2,k.y+k.height,this.triangleDown.width,this.triangleDown.height),C)),h.add(l(b,c,
-new mxRectangle(k.x-this.triangleLeft.width,t.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),E));null!=h&&h.grow(10)}M=mxConstants.DIRECTION_NORTH;K==H?M=mxConstants.DIRECTION_EAST:K==C||K==L?M=mxConstants.DIRECTION_SOUTH:K==E&&(M=mxConstants.DIRECTION_WEST);null!=x&&K==z&&(g=x);k=(null==m||a.isCellConnectable(d[m]))&&(a.model.isEdge(f)&&null!=m||a.model.isVertex(f)&&a.isCellConnectable(f));if(null!=t&&5E3<=R||t!=g&&(null==h||!mxUtils.contains(h,b,c)||500<
-R&&null==K&&k))if(y=!1,t=5E3>R&&R>this.dropTargetDelay||a.model.isEdge(f)?g:null,null!=t&&k){h=[J,L,F,H,C,E];for(k=0;k<h.length;k++)null!=h[k].parentNode&&h[k].parentNode.removeChild(h[k]);a.model.isEdge(f)?(n=g.absolutePoints,null!=n&&(k=n[0],n=n[n.length-1],h=a.tolerance,new mxRectangle(b-h,c-h,2*h,2*h),J.style.left=Math.floor(k.x-this.roundDrop.width/2)+"px",J.style.top=Math.floor(k.y-this.roundDrop.height/2)+"px",L.style.left=Math.floor(n.x-this.roundDrop.width/2)+"px",L.style.top=Math.floor(n.y-
-this.roundDrop.height/2)+"px",null==a.model.getTerminal(f,!0)&&a.container.appendChild(J),null==a.model.getTerminal(f,!1)&&a.container.appendChild(L))):(k=mxRectangle.fromRectangle(g),null!=g.shape&&null!=g.shape.boundingBox&&(k=mxRectangle.fromRectangle(g.shape.boundingBox)),k.grow(this.graph.tolerance),k.grow(HoverIcons.prototype.arrowSpacing),n=this.graph.selectionCellsHandler.getHandler(g.cell),null!=n&&(k.x-=n.horizontalOffset/2,k.y-=n.verticalOffset/2,k.width+=n.horizontalOffset,k.height+=n.verticalOffset,
-null!=n.rotationShape&&null!=n.rotationShape.node&&"hidden"!=n.rotationShape.node.style.visibility&&"none"!=n.rotationShape.node.style.display&&null!=n.rotationShape.boundingBox&&k.add(n.rotationShape.boundingBox)),F.style.left=Math.floor(g.getCenterX()-this.triangleUp.width/2)+"px",F.style.top=Math.floor(k.y-this.triangleUp.height)+"px",H.style.left=Math.floor(k.x+k.width)+"px",H.style.top=Math.floor(g.getCenterY()-this.triangleRight.height/2)+"px",C.style.left=F.style.left,C.style.top=Math.floor(k.y+
-k.height)+"px",E.style.left=Math.floor(k.x-this.triangleLeft.width)+"px",E.style.top=H.style.top,"eastwest"!=g.style.portConstraint&&(a.container.appendChild(F),a.container.appendChild(C)),a.container.appendChild(H),a.container.appendChild(E));null!=g&&(w=a.selectionCellsHandler.getHandler(g.cell),null!=w&&null!=w.setHandlesVisible&&w.setHandlesVisible(!1));y=!0}else for(h=[J,L,F,H,C,E],k=0;k<h.length;k++)null!=h[k].parentNode&&h[k].parentNode.removeChild(h[k]);y||null==w||w.setHandlesVisible(!0);
+r.getDropTarget=mxUtils.bind(this,function(a,b,c,e){var f=mxEvent.isAltDown(e)||null==d?null:a.getCellAt(b,c,null,null,null,function(b,d,c){return a.isContainer(b.cell)});if(null!=f&&!this.graph.isCellConnectable(f)&&!this.graph.model.isEdge(f)){var h=this.graph.getModel().getParent(f);this.graph.getModel().isVertex(h)&&this.graph.isCellConnectable(h)&&(f=h)}a.isCellLocked(f)&&(f=null);var k=a.view.getState(f),h=K=null;V!=k?(N=(new Date).getTime(),R=0,V=k,null!=this.updateThread&&window.clearTimeout(this.updateThread),
+null!=k&&(this.updateThread=window.setTimeout(function(){null==K&&(V=k,r.getDropTarget(a,b,c,e))},this.dropTargetDelay+10))):R=(new Date).getTime()-N;if(q&&2500>R&&null!=k&&!mxEvent.isShiftDown(e)&&(mxUtils.getValue(k.style,mxConstants.STYLE_SHAPE)!=mxUtils.getValue(Z,mxConstants.STYLE_SHAPE)&&(mxUtils.getValue(k.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE)!=mxConstants.NONE||mxUtils.getValue(k.style,
+mxConstants.STYLE_GRADIENTCOLOR,mxConstants.NONE)!=mxConstants.NONE)||"image"==mxUtils.getValue(Z,mxConstants.STYLE_SHAPE)||1500<R||a.model.isEdge(k.cell))&&R>this.dropTargetDelay&&!this.isDropStyleTargetIgnored(k)&&(a.model.isVertex(k.cell)&&null!=m||a.model.isEdge(k.cell)&&a.model.isEdge(d[0]))){if(a.isCellEditable(k.cell)){x=k;var g=a.model.isEdge(k.cell)?a.view.getPoint(k):new mxPoint(k.getCenterX(),k.getCenterY()),g=new mxRectangle(g.x-this.refreshTarget.width/2,g.y-this.refreshTarget.height/
+2,this.refreshTarget.width,this.refreshTarget.height);z.style.left=Math.floor(g.x)+"px";z.style.top=Math.floor(g.y)+"px";null==G&&(a.container.appendChild(z),G=z.parentNode);l(b,c,g,z)}}else null==x||!mxUtils.contains(x,b,c)||1500<R&&!mxEvent.isShiftDown(e)?(x=null,null!=G&&(z.parentNode.removeChild(z),G=null)):null!=x&&null!=G&&(g=a.model.isEdge(x.cell)?a.view.getPoint(x):new mxPoint(x.getCenterX(),x.getCenterY()),g=new mxRectangle(g.x-this.refreshTarget.width/2,g.y-this.refreshTarget.height/2,this.refreshTarget.width,
+this.refreshTarget.height),l(b,c,g,z));if(y&&null!=t&&!mxEvent.isAltDown(e)&&null==K){h=mxRectangle.fromRectangle(t);if(a.model.isEdge(t.cell)){var n=t.absolutePoints;null!=J.parentNode&&(g=n[0],h.add(l(b,c,new mxRectangle(g.x-this.roundDrop.width/2,g.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),J)));null!=L.parentNode&&(n=n[n.length-1],h.add(l(b,c,new mxRectangle(n.x-this.roundDrop.width/2,n.y-this.roundDrop.height/2,this.roundDrop.width,this.roundDrop.height),L)))}else g=
+mxRectangle.fromRectangle(t),null!=t.shape&&null!=t.shape.boundingBox&&(g=mxRectangle.fromRectangle(t.shape.boundingBox)),g.grow(this.graph.tolerance),g.grow(HoverIcons.prototype.arrowSpacing),n=this.graph.selectionCellsHandler.getHandler(t.cell),null!=n&&(g.x-=n.horizontalOffset/2,g.y-=n.verticalOffset/2,g.width+=n.horizontalOffset,g.height+=n.verticalOffset,null!=n.rotationShape&&null!=n.rotationShape.node&&"hidden"!=n.rotationShape.node.style.visibility&&"none"!=n.rotationShape.node.style.display&&
+null!=n.rotationShape.boundingBox&&g.add(n.rotationShape.boundingBox)),h.add(l(b,c,new mxRectangle(t.getCenterX()-this.triangleUp.width/2,g.y-this.triangleUp.height,this.triangleUp.width,this.triangleUp.height),F)),h.add(l(b,c,new mxRectangle(g.x+g.width,t.getCenterY()-this.triangleRight.height/2,this.triangleRight.width,this.triangleRight.height),H)),h.add(l(b,c,new mxRectangle(t.getCenterX()-this.triangleDown.width/2,g.y+g.height,this.triangleDown.width,this.triangleDown.height),C)),h.add(l(b,c,
+new mxRectangle(g.x-this.triangleLeft.width,t.getCenterY()-this.triangleLeft.height/2,this.triangleLeft.width,this.triangleLeft.height),E));null!=h&&h.grow(10)}M=mxConstants.DIRECTION_NORTH;K==H?M=mxConstants.DIRECTION_EAST:K==C||K==L?M=mxConstants.DIRECTION_SOUTH:K==E&&(M=mxConstants.DIRECTION_WEST);null!=x&&K==z&&(k=x);g=(null==m||a.isCellConnectable(d[m]))&&(a.model.isEdge(f)&&null!=m||a.model.isVertex(f)&&a.isCellConnectable(f));if(null!=t&&5E3<=R||t!=k&&(null==h||!mxUtils.contains(h,b,c)||500<
+R&&null==K&&g))if(y=!1,t=5E3>R&&R>this.dropTargetDelay||a.model.isEdge(f)?k:null,null!=t&&g){h=[J,L,F,H,C,E];for(g=0;g<h.length;g++)null!=h[g].parentNode&&h[g].parentNode.removeChild(h[g]);a.model.isEdge(f)?(n=k.absolutePoints,null!=n&&(g=n[0],n=n[n.length-1],h=a.tolerance,new mxRectangle(b-h,c-h,2*h,2*h),J.style.left=Math.floor(g.x-this.roundDrop.width/2)+"px",J.style.top=Math.floor(g.y-this.roundDrop.height/2)+"px",L.style.left=Math.floor(n.x-this.roundDrop.width/2)+"px",L.style.top=Math.floor(n.y-
+this.roundDrop.height/2)+"px",null==a.model.getTerminal(f,!0)&&a.container.appendChild(J),null==a.model.getTerminal(f,!1)&&a.container.appendChild(L))):(g=mxRectangle.fromRectangle(k),null!=k.shape&&null!=k.shape.boundingBox&&(g=mxRectangle.fromRectangle(k.shape.boundingBox)),g.grow(this.graph.tolerance),g.grow(HoverIcons.prototype.arrowSpacing),n=this.graph.selectionCellsHandler.getHandler(k.cell),null!=n&&(g.x-=n.horizontalOffset/2,g.y-=n.verticalOffset/2,g.width+=n.horizontalOffset,g.height+=n.verticalOffset,
+null!=n.rotationShape&&null!=n.rotationShape.node&&"hidden"!=n.rotationShape.node.style.visibility&&"none"!=n.rotationShape.node.style.display&&null!=n.rotationShape.boundingBox&&g.add(n.rotationShape.boundingBox)),F.style.left=Math.floor(k.getCenterX()-this.triangleUp.width/2)+"px",F.style.top=Math.floor(g.y-this.triangleUp.height)+"px",H.style.left=Math.floor(g.x+g.width)+"px",H.style.top=Math.floor(k.getCenterY()-this.triangleRight.height/2)+"px",C.style.left=F.style.left,C.style.top=Math.floor(g.y+
+g.height)+"px",E.style.left=Math.floor(g.x-this.triangleLeft.width)+"px",E.style.top=H.style.top,"eastwest"!=k.style.portConstraint&&(a.container.appendChild(F),a.container.appendChild(C)),a.container.appendChild(H),a.container.appendChild(E));null!=k&&(w=a.selectionCellsHandler.getHandler(k.cell),null!=w&&null!=w.setHandlesVisible&&w.setHandlesVisible(!1));y=!0}else for(h=[J,L,F,H,C,E],g=0;g<h.length;g++)null!=h[g].parentNode&&h[g].parentNode.removeChild(h[g]);y||null==w||w.setHandlesVisible(!0);
f=mxEvent.isAltDown(e)&&!mxEvent.isShiftDown(e)||null!=x&&K==z?null:mxDragSource.prototype.getDropTarget.apply(this,arguments);h=a.getModel();if(null!=f&&(null!=K||!a.isSplitTarget(f,d,e))){for(;null!=f&&!a.isValidDropTarget(f,d,e)&&h.isVertex(h.getParent(f));)f=h.getParent(f);null!=f&&(a.view.currentRoot==f||!a.isValidRoot(f)&&0==a.getModel().getChildCount(f)||a.isCellLocked(f)||h.isEdge(f)||!a.isValidDropTarget(f,d,e))&&(f=null)}a.isCellLocked(f)&&(f=null);return f});r.stopDrag=function(){mxDragSource.prototype.stopDrag.apply(this,
arguments);for(var a=[J,L,z,F,H,C,E],b=0;b<a.length;b++)null!=a[b].parentNode&&a[b].parentNode.removeChild(a[b]);null!=t&&null!=w&&w.reset();K=G=x=t=w=null};return r};
Sidebar.prototype.itemClicked=function(a,b,c,d){d=this.editorUi.editor.graph;d.container.focus();if(mxEvent.isAltDown(c)&&1==d.getSelectionCount()&&d.model.isVertex(d.getSelectionCell())){b=null;for(var f=0;f<a.length&&null==b;f++)d.model.isVertex(a[f])&&(b=f);null!=b&&(d.setSelectionCells(this.dropAndConnect(d.getSelectionCell(),a,mxEvent.isMetaDown(c)||mxEvent.isControlDown(c)?mxEvent.isShiftDown(c)?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH:mxEvent.isShiftDown(c)?mxConstants.DIRECTION_EAST:
@@ -2579,7 +2579,7 @@ Sidebar.prototype.removePalette=function(a){var b=this.palettes[a];if(null!=b){t
Sidebar.prototype.addImagePalette=function(a,b,c,d,f,e,l){for(var k=[],h=0;h<f.length;h++)mxUtils.bind(this,function(a,b,e){if(null==e){e=a.lastIndexOf("/");var f=a.lastIndexOf(".");e=a.substring(0<=e?e+1:0,0<=f?f:a.length).replace(/[-_]/g," ")}k.push(this.createVertexTemplateEntry("image;html=1;image="+c+a+d,this.defaultImageWidth,this.defaultImageHeight,"",b,null!=b,null,this.filterTags(e)))})(f[h],null!=e?e[h]:null,null!=l?l[f[h]]:null);this.addPaletteFunctions(a,b,!1,k)};
Sidebar.prototype.getTagsForStencil=function(a,b,c){a=a.split(".");for(var d=1;d<a.length;d++)a[d]=a[d].replace(/_/g," ");a.push(b.replace(/_/g," "));null!=c&&a.push(c);return a.slice(1,a.length)};
Sidebar.prototype.addStencilPalette=function(a,b,c,d,f,e,l,k,h,g){l=null!=l?l:1;if(this.addStencilsToIndex){var m=[];if(null!=h)for(g=0;g<h.length;g++)m.push(h[g]);mxStencilRegistry.loadStencilSet(c,mxUtils.bind(this,function(a,b,c,e,h){if(null==f||0>mxUtils.indexOf(f,b)){c=this.getTagsForStencil(a,b);var g=null!=k?k[b]:null;null!=g&&c.push(g);m.push(this.createVertexTemplateEntry("shape="+a+b.toLowerCase()+d,Math.round(e*l),Math.round(h*l),"",b.replace(/_/g," "),null,null,this.filterTags(c.join(" "))))}}),
-!0,!0);this.addPaletteFunctions(a,b,!1,m)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(a){null==d&&(d="");null!=e&&e.call(this,a);if(null!=h)for(var b=0;b<h.length;b++)h[b](a);mxStencilRegistry.loadStencilSet(c,mxUtils.bind(this,function(b,c,e,h,k){(null==f||0>mxUtils.indexOf(f,c))&&a.appendChild(this.createVertexTemplate("shape="+b+c.toLowerCase()+d,Math.round(h*l),Math.round(k*l),"",c.replace(/_/g," "),!0))}),!0)}))};
+!0,!0);this.addPaletteFunctions(a,b,!1,m)}else this.addPalette(a,b,!1,mxUtils.bind(this,function(a){null==d&&(d="");null!=e&&e.call(this,a);if(null!=h)for(var b=0;b<h.length;b++)h[b](a);mxStencilRegistry.loadStencilSet(c,mxUtils.bind(this,function(b,c,e,h,g){(null==f||0>mxUtils.indexOf(f,c))&&a.appendChild(this.createVertexTemplate("shape="+b+c.toLowerCase()+d,Math.round(h*l),Math.round(g*l),"",c.replace(/_/g," "),!0))}),!0)}))};
Sidebar.prototype.destroy=function(){null!=this.graph&&(null!=this.graph.container&&null!=this.graph.container.parentNode&&this.graph.container.parentNode.removeChild(this.graph.container),this.graph.destroy(),this.graph=null);null!=this.pointerUpHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerUpHandler=null);null!=this.pointerDownHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),
this.pointerDownHandler=null);null!=this.pointerMoveHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerMoveHandler=null);null!=this.pointerOutHandler&&(mxEvent.removeListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),this.pointerOutHandler=null)};"undefined"!==typeof html4&&(html4.ATTRIBS["a::target"]=0,html4.ATTRIBS["source::src"]=0,html4.ATTRIBS["video::src"]=0);(function(){var a=[["nbsp","160"],["shy","173"]],b=mxUtils.parseXml;mxUtils.parseXml=function(c){for(var d=0;d<a.length;d++)c=c.replace(new RegExp("&"+a[d][0]+";","g"),"&#"+a[d][1]+";");return b(c)}})();
Date.prototype.toISOString||function(){function a(a){a=String(a);1===a.length&&(a="0"+a);return a}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}}();Date.now||(Date.now=function(){return(new Date).getTime()});
@@ -2604,8 +2604,8 @@ f="crosshair",c!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(d)&&(c=mxUtils.fi
d.y-2,d.width,4))&&this.model.getChildAt(n,0)!=e||mxUtils.intersects(c,new mxRectangle(d.x,d.y+d.height-2,d.width,4)))f="row-resize";else if(mxUtils.intersects(c,new mxRectangle(d.x-2,d.y,4,d.height))&&this.model.getChildAt(e,0)!=d.cell||mxUtils.intersects(c,new mxRectangle(d.x+d.width-2,d.y,4,d.height)))f="col-resize";for(e=d;null==f&&null!=e&&(this.isTableCell(e.cell)||this.isTableRow(e.cell)||this.isTable(e.cell));){if(this.isSwimlane(e.cell)){var n=this.getActualStartSize(e.cell),p=this.view.scale;
(0<n.x||0<n.width)&&mxUtils.intersects(c,new mxRectangle(e.x+(n.x-n.width-1)*p+(0==n.x?e.width*p:0),e.y,1,e.height))?f="col-resize":(0<n.y||0<n.height)&&mxUtils.intersects(c,new mxRectangle(e.x,e.y+(n.y-n.height-1)*p+(0==n.y?e.height:0),e.width,1))&&(f="row-resize")}e=this.view.getState(this.model.getParent(e.cell))}}null!=f&&d.setCursor(f)}}}),mouseUp:mxUtils.bind(this,function(a,b){g=l=k=h=null})})}this.cellRenderer.minSvgStrokeWidth=.1;this.cellRenderer.getLabelValue=function(a){var b=mxCellRenderer.prototype.getLabelValue.apply(this,
arguments);a.view.graph.isHtmlLabel(a.cell)&&(b=1!=a.style.html?mxUtils.htmlEntities(b,!1):a.view.graph.sanitizeHtml(b));return b};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0);this.setDropEnabled(!0);this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);
-this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,b){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var n=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var a=n.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],d=this.graph.pageFormat,c=this.graph.pageScale,e=d.width*c,d=d.height*c,c=this.graph.view.translate,f=this.graph.view.scale,h=this.graph.getPageLayout(),k=0;k<h.width;k++)b.push(new mxRectangle(((h.x+
-k)*e+c.x)*f,(h.y*d+c.y)*f,e*f,d*f));for(k=1;k<h.height;k++)b.push(new mxRectangle((h.x*e+c.x)*f,((h.y+k)*d+c.y)*f,e*f,d*f));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,
+this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,b){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var n=this.graphHandler.getGuideStates;this.graphHandler.getGuideStates=function(){var a=n.apply(this,arguments);if(this.graph.pageVisible){for(var b=[],d=this.graph.pageFormat,c=this.graph.pageScale,e=d.width*c,d=d.height*c,c=this.graph.view.translate,f=this.graph.view.scale,h=this.graph.getPageLayout(),g=0;g<h.width;g++)b.push(new mxRectangle(((h.x+
+g)*e+c.x)*f,(h.y*d+c.y)*f,e*f,d*f));for(g=1;g<h.height;g++)b.push(new mxRectangle((h.x*e+c.x)*f,((h.y+g)*d+c.y)*f,e*f,d*f));a=b.concat(a)}return a};mxDragSource.prototype.dragElementZIndex=mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(a,b){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,
arguments)};var p=this.graphHandler.getCells;this.graphHandler.getCells=function(a){for(var b=p.apply(this,arguments),d=new mxDictionary,c=[],e=0;e<b.length;e++){var f=this.graph.isTableCell(a)&&this.graph.isTableCell(b[e])&&this.graph.isCellSelected(b[e])?this.graph.model.getParent(b[e]):this.graph.isTableRow(a)&&this.graph.isTableRow(b[e])&&this.graph.isCellSelected(b[e])?b[e]:this.graph.getCompositeParent(b[e]);null==f||d.get(f)||(d.put(f,!0),c.push(f))}return c};var q=this.graphHandler.start;
this.graphHandler.start=function(a,b,d,c){var e=!1;this.graph.isTableCell(a)&&(this.graph.isCellSelected(a)?e=!0:a=this.graph.model.getParent(a));e||this.graph.isTableRow(a)&&this.graph.isCellSelected(a)||(a=this.graph.getCompositeParent(a));q.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,b){b=this.graph.getCompositeParent(b);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var r=new mxRubberband(this);this.getRubberband=function(){return r};
var u=(new Date).getTime(),t=0,w=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;w.apply(this,arguments);a!=this.currentState?(u=(new Date).getTime(),t=0):t=(new Date).getTime()-u};var x=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<t||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect",
@@ -2649,8 +2649,8 @@ Graph.prototype.isShadowState=function(a){return"image"!=mxUtils.getValue(a.styl
a){var c={},e;for(e in a){var f=a[e];null!=f&&(c[e]=!0,null==b[e]&&d?b[e]=f:b[e]!=f&&delete b[e])}for(e in b)c[e]||delete b[e]}};Graph.prototype.getStartEditingCell=function(a,b){var d=this.getCellStyle(a),d=parseInt(mxUtils.getValue(d,mxConstants.STYLE_STARTSIZE,0));this.isTable(a)&&(!this.isSwimlane(a)||0==d)&&""==this.getLabel(a)&&0<this.model.getChildCount(a)&&(a=this.model.getChildAt(a,0),d=this.getCellStyle(a),d=parseInt(mxUtils.getValue(d,mxConstants.STYLE_STARTSIZE,0)));if(this.isTableRow(a)&&
(!this.isSwimlane(a)||0==d)&&""==this.getLabel(a)&&0<this.model.getChildCount(a))for(d=0;d<this.model.getChildCount(a);d++){var c=this.model.getChildAt(a,d);if(this.isCellEditable(c)){a=c;break}}return a};Graph.prototype.copyStyle=function(a){return this.getCellStyle(a,!1)};Graph.prototype.pasteStyle=function(a,b,d){d=null!=d?d:Graph.pasteStyles;Graph.removeKeys(a,function(a){return 0>mxUtils.indexOf(d,a)});this.updateCellStyles(a,b)};Graph.prototype.updateCellStyles=function(a,b){this.model.beginUpdate();
try{for(var d=0;d<b.length;d++)if(this.model.isVertex(b[d])||this.model.isEdge(b[d])){var c=this.getCellStyle(b[d],!1),e;for(e in a){var f=a[e];c[e]!=f&&this.setCellStyles(e,f,[b[d]])}}}finally{this.model.endUpdate()}};Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&(this.isCssTransformsSupported()||mxClient.IS_IOS)};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&
-!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(a,b,d,c,e,f){this.useCssTransforms&&(a=a/this.currentScale-this.currentTranslate.x,b=b/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(a,b,d,c,e,f){c=null!=c?c:!0;e=null!=e?e:!0;null==d&&(d=this.getCurrentRoot(),null==d&&(d=this.getModel().getRoot()));if(null!=d)for(var h=this.model.getChildCount(d)-1;0<=h;h--){var k=this.model.getChildAt(d,
-h),g=this.getScaledCellAt(a,b,k,c,e,f);if(null!=g)return g;if(this.isCellVisible(k)&&(e&&this.model.isEdge(k)||c&&this.model.isVertex(k))&&(g=this.view.getState(k),null!=g&&(null==f||!f(g,a,b))&&this.intersects(g,a,b)))return k}return null};Graph.prototype.isRecursiveVertexResize=function(a){return!this.isSwimlane(a.cell)&&0<this.model.getChildCount(a.cell)&&!this.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
+!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(a,b,d,c,e,f){this.useCssTransforms&&(a=a/this.currentScale-this.currentTranslate.x,b=b/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(a,b,d,c,e,f){c=null!=c?c:!0;e=null!=e?e:!0;null==d&&(d=this.getCurrentRoot(),null==d&&(d=this.getModel().getRoot()));if(null!=d)for(var h=this.model.getChildCount(d)-1;0<=h;h--){var g=this.model.getChildAt(d,
+h),k=this.getScaledCellAt(a,b,g,c,e,f);if(null!=k)return k;if(this.isCellVisible(g)&&(e&&this.model.isEdge(g)||c&&this.model.isVertex(g))&&(k=this.view.getState(g),null!=k&&(null==f||!f(k,a,b))&&this.intersects(k,a,b)))return g}return null};Graph.prototype.isRecursiveVertexResize=function(a){return!this.isSwimlane(a.cell)&&0<this.model.getChildCount(a.cell)&&!this.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};Graph.prototype.getAbsoluteParent=
function(a){for(var b=this.getCellGeometry(a);null!=b&&b.relative;)a=this.getModel().getParent(a),b=this.getCellGeometry(a);return a};Graph.prototype.isPart=function(a){return"1"==mxUtils.getValue(this.getCurrentCellStyle(a),"part","0")||this.isTableCell(a)||this.isTableRow(a)};Graph.prototype.getCompositeParent=function(a){for(;this.isPart(a);){var b=this.model.getParent(a);if(!this.model.isVertex(b))break;a=b}return a};Graph.prototype.filterSelectionCells=function(a){var b=this.getSelectionCells();
if(null!=a){for(var d=[],c=0;c<b.length;c++)a(b[c])||d.push(b[c]);b=d}return b};var a=mxGraph.prototype.scrollRectToVisible;Graph.prototype.scrollRectToVisible=function(b){if(this.useCssTransforms){var d=this.currentScale,c=this.currentTranslate;b=new mxRectangle((b.x+2*c.x)*d-c.x,(b.y+2*c.y)*d-c.y,b.width*d,b.height*d)}a.apply(this,arguments)};mxCellHighlight.prototype.getStrokeWidth=function(a){a=this.strokeWidth;this.graph.useCssTransforms&&(a/=this.graph.currentScale);return a};mxGraphView.prototype.getGraphBounds=
function(){var a=this.graphBounds;if(this.graph.useCssTransforms)var b=this.graph.currentTranslate,d=this.graph.currentScale,a=new mxRectangle((a.x+b.x)*d,(a.y+b.y)*d,a.width*d,a.height*d);return a};mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var b=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(a){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=
@@ -2816,11 +2816,11 @@ function(){for(var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";",
(a+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?a+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&&(a+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};
Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())};Graph.prototype.createCellLookup=function(a,b){b=null!=b?b:{};for(var d=0;d<a.length;d++){var c=a[d];b[mxObjectIdentity.get(c)]=c.getId();for(var e=this.model.getChildCount(c),
f=0;f<e;f++)this.createCellLookup([this.model.getChildAt(c,f)],b)}return b};Graph.prototype.createCellMapping=function(a,b,d){d=null!=d?d:{};for(var c in a){var e=b[c];null==d[e]&&(d[e]=a[c].getId()||"")}return d};Graph.prototype.importGraphModel=function(a,b,d,c){b=null!=b?b:0;d=null!=d?d:0;var e=new mxCodec(a.ownerDocument),f=new mxGraphModel;e.decode(a,f);a=[];var e={},g={},h=f.getChildren(this.cloneCell(f.root,this.isCloneInvalidEdges(),e));if(null!=h){var k=this.createCellLookup([f.root]),h=
-h.slice();this.model.beginUpdate();try{if(1!=h.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<h.length;f++)l=this.model.getChildren(this.moveCells([h[f]],b,d,!1,this.model.getRoot())[0]),null!=l&&(a=a.concat(l));else{var l=f.getChildren(h[0]);null!=l&&(a=this.moveCells(l,b,d,!1,this.getDefaultParent()),g[f.getChildAt(f.root,0).getId()]=this.getDefaultParent().getId())}if(null!=a&&(this.createCellMapping(e,k,g),this.updateCustomLinks(g,a),c)){this.isGridEnabled()&&(b=this.snap(b),d=this.snap(d));
-var m=this.getBoundingBoxFromGeometry(a,!0);null!=m&&this.moveCells(a,b-m.x,d-m.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var b={},d=this.cloneCells(a,null,b),c=new mxDictionary,e=0;e<a.length;e++)c.put(a[e],!0);for(var f=new mxCodec,g=new mxGraphModel,h=g.getChildAt(g.getRoot(),0),e=0;e<d.length;e++){g.add(h,d[e]);var k=this.view.getState(a[e]);if(null!=k){var l=this.getCellGeometry(d[e]);null!=l&&l.relative&&!this.model.isEdge(a[e])&&null==c.get(this.model.getParent(a[e]))&&
-(l.offset=null,l.relative=!1,l.x=k.x/k.view.scale-k.view.translate.x,l.y=k.y/k.view.scale-k.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(b,this.createCellLookup(a)),d);return f.encode(g)};Graph.prototype.isSwimlane=function(a,b){var d=null;null==a||this.model.isEdge(a)||this.model.getParent(a)==this.model.getRoot()||(d=this.getCurrentCellStyle(a,b)[mxConstants.STYLE_SHAPE]);return d==mxConstants.SHAPE_SWIMLANE||"table"==d||"tableRow"==d};var k=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=
-function(a){var b=this.model.getParent(a);if(null!=b){var d=this.getCurrentCellStyle(b);if(null!=d.expand)return"0"!=d.expand}return k.apply(this,arguments)&&(null==b||!this.isTable(b))};var h=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(a,b,d,c,e,f,g,k){null==k&&(k=this.model.getParent(a),this.isTable(k)||this.isTableRow(k))&&(k=this.getCellAt(f,g,null,!0,!1));d=null;this.model.beginUpdate();try{d=h.apply(this,[a,b,d,c,e,f,g,k]);this.model.setValue(d,"");var l=this.getChildCells(d,
-!0);for(b=0;b<l.length;b++){var m=this.getCellGeometry(l[b]);null!=m&&m.relative&&0<m.x&&this.model.remove(l[b])}var Q=this.getChildCells(a,!0);for(b=0;b<Q.length;b++)m=this.getCellGeometry(Q[b]),null!=m&&m.relative&&0>=m.x&&this.model.remove(Q[b]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[d]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[d]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,null,[a]);this.setCellStyles(mxConstants.STYLE_STARTARROW,
+h.slice();this.model.beginUpdate();try{if(1!=h.length||this.isCellLocked(this.getDefaultParent()))for(f=0;f<h.length;f++)m=this.model.getChildren(this.moveCells([h[f]],b,d,!1,this.model.getRoot())[0]),null!=m&&(a=a.concat(m));else{var m=f.getChildren(h[0]);null!=m&&(a=this.moveCells(m,b,d,!1,this.getDefaultParent()),g[f.getChildAt(f.root,0).getId()]=this.getDefaultParent().getId())}if(null!=a&&(this.createCellMapping(e,k,g),this.updateCustomLinks(g,a),c)){this.isGridEnabled()&&(b=this.snap(b),d=this.snap(d));
+var l=this.getBoundingBoxFromGeometry(a,!0);null!=l&&this.moveCells(a,b-l.x,d-l.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var b={},d=this.cloneCells(a,null,b),c=new mxDictionary,e=0;e<a.length;e++)c.put(a[e],!0);for(var f=new mxCodec,g=new mxGraphModel,h=g.getChildAt(g.getRoot(),0),e=0;e<d.length;e++){g.add(h,d[e]);var k=this.view.getState(a[e]);if(null!=k){var m=this.getCellGeometry(d[e]);null!=m&&m.relative&&!this.model.isEdge(a[e])&&null==c.get(this.model.getParent(a[e]))&&
+(m.offset=null,m.relative=!1,m.x=k.x/k.view.scale-k.view.translate.x,m.y=k.y/k.view.scale-k.view.translate.y)}}this.updateCustomLinks(this.createCellMapping(b,this.createCellLookup(a)),d);return f.encode(g)};Graph.prototype.isSwimlane=function(a,b){var d=null;null==a||this.model.isEdge(a)||this.model.getParent(a)==this.model.getRoot()||(d=this.getCurrentCellStyle(a,b)[mxConstants.STYLE_SHAPE]);return d==mxConstants.SHAPE_SWIMLANE||"table"==d||"tableRow"==d};var k=Graph.prototype.isExtendParent;Graph.prototype.isExtendParent=
+function(a){var b=this.model.getParent(a);if(null!=b){var d=this.getCurrentCellStyle(b);if(null!=d.expand)return"0"!=d.expand}return k.apply(this,arguments)&&(null==b||!this.isTable(b))};var h=Graph.prototype.splitEdge;Graph.prototype.splitEdge=function(a,b,d,c,e,f,g,k){null==k&&(k=this.model.getParent(a),this.isTable(k)||this.isTableRow(k))&&(k=this.getCellAt(f,g,null,!0,!1));d=null;this.model.beginUpdate();try{d=h.apply(this,[a,b,d,c,e,f,g,k]);this.model.setValue(d,"");var m=this.getChildCells(d,
+!0);for(b=0;b<m.length;b++){var l=this.getCellGeometry(m[b]);null!=l&&l.relative&&0<l.x&&this.model.remove(m[b])}var Q=this.getChildCells(a,!0);for(b=0;b<Q.length;b++)l=this.getCellGeometry(Q[b]),null!=l&&l.relative&&0>=l.x&&this.model.remove(Q[b]);this.setCellStyles(mxConstants.STYLE_TARGET_PERIMETER_SPACING,null,[d]);this.setCellStyles(mxConstants.STYLE_ENDARROW,mxConstants.NONE,[d]);this.setCellStyles(mxConstants.STYLE_SOURCE_PERIMETER_SPACING,null,[a]);this.setCellStyles(mxConstants.STYLE_STARTARROW,
mxConstants.NONE,[a]);var n=this.model.getTerminal(d,!1);if(null!=n){var T=this.getCurrentCellStyle(n);null!=T&&"1"==T.snapToPoint&&(this.setCellStyles(mxConstants.STYLE_EXIT_X,null,[a]),this.setCellStyles(mxConstants.STYLE_EXIT_Y,null,[a]),this.setCellStyles(mxConstants.STYLE_ENTRY_X,null,[d]),this.setCellStyles(mxConstants.STYLE_ENTRY_Y,null,[d]))}}finally{this.model.endUpdate()}return d};var g=Graph.prototype.selectCell;Graph.prototype.selectCell=function(a,b,d){if(b||d)g.apply(this,arguments);
else{var c=this.getSelectionCell(),e=null,f=[],h=mxUtils.bind(this,function(b){if(null!=this.view.getState(b)&&(this.model.isVertex(b)||this.model.isEdge(b)))if(f.push(b),b==c)e=f.length-1;else if(a&&null==c&&0<f.length||null!=e&&a&&f.length>e||!a&&0<e)return;for(var d=0;d<this.model.getChildCount(b);d++)h(this.model.getChildAt(b,d))});h(this.model.root);0<f.length&&(e=null!=e?mxUtils.mod(e+(a?1:-1),f.length):0,this.setSelectionCell(f[e]))}};Graph.prototype.swapUmlLifelines=function(a,b){var d=!1;
if(null!=b&&1==a.length){var c=this.view.getState(b),e=this.view.getState(a[0]);if(null!=c&&null!=e&&"umlLifeline"==c.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(b),c=this.getCellGeometry(a[0]),null!=e&&null!=c)){d=e.clone();e=c.clone();e.x=d.x;e.y=d.y;d.x=c.x;d.y=c.y;this.model.beginUpdate();try{this.model.setGeometry(b,d),this.model.setGeometry(a[0],e)}finally{this.model.endUpdate()}d=!0}}return d};var m=Graph.prototype.moveCells;Graph.prototype.moveCells=function(a,b,d,c,
@@ -2840,7 +2840,7 @@ g,!0,q);this.setConnectionConstraint(f,h,!1,T);var r=mxUtils.getValue(n.style,mx
function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};var p=Graph.prototype.processChange;Graph.prototype.processChange=function(a){if(a instanceof mxGeometryChange&&(this.isTableCell(a.cell)||this.isTableRow(a.cell))&&(null==a.previous&&null!=a.geometry||null!=a.previous&&!a.previous.equals(a.geometry))){var b=a.cell;this.isTableCell(b)&&(b=this.model.getParent(b));this.isTableRow(b)&&
(b=this.model.getParent(b));var d=this.view.getState(b);null!=d&&null!=d.shape&&(this.view.invalidate(b),d.shape.bounds=null)}p.apply(this,arguments);a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value&&this.invalidateDescendantsWithPlaceholders(a.cell)};Graph.prototype.invalidateDescendantsWithPlaceholders=function(a){a=this.model.getDescendants(a);if(0<a.length)for(var b=0;b<a.length;b++){var d=this.view.getState(a[b]);null!=d&&null!=d.shape&&null!=d.shape.stencil&&
this.stencilHasPlaceholders(d.shape.stencil)?this.removeStateForCell(a[b]):this.isReplacePlaceholders(a[b])&&this.view.invalidate(a[b],!1,!1)}};Graph.prototype.replaceElement=function(a,b){for(var d=a.ownerDocument.createElement(null!=b?b:"span"),c=Array.prototype.slice.call(a.attributes);attr=c.pop();)d.setAttribute(attr.nodeName,attr.nodeValue);d.innerHTML=a.innerHTML;a.parentNode.replaceChild(d,a)};Graph.prototype.processElements=function(a,b){if(null!=a)for(var d=a.getElementsByTagName("*"),c=
-0;c<d.length;c++)b(d[c])};Graph.prototype.updateLabelElements=function(a,b,d){a=null!=a?a:this.getSelectionCells();for(var c=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var f=this.convertValueToString(a[e]);if(null!=f&&0<f.length){c.innerHTML=f;for(var g=c.getElementsByTagName(null!=d?d:"*"),k=0;k<g.length;k++)b(g[k]);c.innerHTML!=f&&this.cellLabelChanged(a[e],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,d){b=Graph.zapGremlins(b);this.model.beginUpdate();
+0;c<d.length;c++)b(d[c])};Graph.prototype.updateLabelElements=function(a,b,d){a=null!=a?a:this.getSelectionCells();for(var c=document.createElement("div"),e=0;e<a.length;e++)if(this.isHtmlLabel(a[e])){var f=this.convertValueToString(a[e]);if(null!=f&&0<f.length){c.innerHTML=f;for(var g=c.getElementsByTagName(null!=d?d:"*"),h=0;h<g.length;h++)b(g[h]);c.innerHTML!=f&&this.cellLabelChanged(a[e],c.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,b,d){b=Graph.zapGremlins(b);this.model.beginUpdate();
try{if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var c=a.getAttribute("placeholder"),e=a;null!=e;){if(e==this.model.getRoot()||null!=e.value&&"object"==typeof e.value&&e.hasAttribute(c)){this.setAttributeForCell(e,c,b);break}e=this.model.getParent(e)}var f=a.value.cloneNode(!0);Graph.translateDiagram&&null!=Graph.diagramLanguage&&f.hasAttribute("label_"+Graph.diagramLanguage)?f.setAttribute("label_"+Graph.diagramLanguage,b):
f.setAttribute("label",b);b=f}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var b=new mxDictionary,d=0;d<a.length;d++)b.put(a[d],!0);for(var c=[],d=0;d<a.length;d++){var e=this.model.getParent(a[d]);null==e||b.get(e)||(b.put(e,!0),c.push(e))}for(d=0;d<c.length;d++)if(e=this.view.getState(c[d]),null!=e&&(this.model.isEdge(e.cell)||this.model.isVertex(e.cell))&&this.isCellDeletable(e.cell)&&this.isTransparentState(e)){for(var f=
!0,g=0;g<this.model.getChildCount(e.cell)&&f;g++)b.get(this.model.getChildAt(e.cell,g))||(f=!1);f&&a.push(e.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var b=[],d=0;d<a.length;d++)this.isCellDeletable(a[d])&&this.isTransparentState(this.view.getState(a[d]))&&b.push(a[d]);a=b;mxGraph.prototype.removeCellsAfterUngroup.apply(this,arguments)};Graph.prototype.setLinkForCell=function(a,b){this.setAttributeForCell(a,"link",b)};Graph.prototype.setTooltipForCell=
@@ -2853,27 +2853,27 @@ a))};Graph.prototype.getFreeInsertPoint=function(){var a=this.view,b=this.getGra
this.container.clientWidth/2)/this.view.scale-this.view.translate.x-a.width/2)),this.snap(Math.round((this.container.scrollTop+this.container.clientHeight/2)/this.view.scale-this.view.translate.y-a.height/2))):new mxPoint(this.snap(Math.round(this.container.clientWidth/2/this.view.scale-this.view.translate.x-a.width/2)),this.snap(Math.round(this.container.clientHeight/2/this.view.scale-this.view.translate.y-a.height/2)))};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=
function(a,b,d){var c=new mxCell;c.value="Text";c.geometry=new mxGeometry(0,0,0,0);c.vertex=!0;if(null!=d&&this.model.isEdge(d.cell)){c.style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";c.geometry.relative=!0;c.connectable=!1;var e=this.view.getRelativePoint(d,a,b);c.geometry.x=Math.round(1E4*e.x)/1E4;c.geometry.y=Math.round(e.y);c.geometry.offset=new mxPoint(0,0);var e=this.view.getPoint(d,c.geometry),f=this.view.scale;c.geometry.offset=new mxPoint(Math.round((a-e.x)/
f),Math.round((b-e.y)/f))}else e=this.view.translate,c.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];",c.geometry.width=40,c.geometry.height=20,c.geometry.x=Math.round(a/this.view.scale)-e.x-(null!=d?d.origin.x:0),c.geometry.y=Math.round(b/this.view.scale)-e.y-(null!=d?d.origin.y:0),c.style+="autosize=1;";this.getModel().beginUpdate();try{this.addCells([c],null!=d?d.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[c])),this.autoSizeCell(c)}finally{this.getModel().endUpdate()}return c};
-Graph.prototype.addClickHandler=function(a,b,d){var c=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");if(null!=a)for(var d=0;d<a.length;d++){var c=this.getAbsoluteUrl(a[d].getAttribute("href"));null!=c&&(a[d].setAttribute("rel",this.linkRelation),a[d].setAttribute("href",c),null!=b&&mxEvent.addGestureListeners(a[d],null,null,b))}});this.model.addListener(mxEvent.CHANGE,c);c();var e=this.container.style.cursor,f=this.getTolerance(),g=this,k={currentState:null,currentLink:null,
+Graph.prototype.addClickHandler=function(a,b,d){var c=mxUtils.bind(this,function(){var a=this.container.getElementsByTagName("a");if(null!=a)for(var d=0;d<a.length;d++){var c=this.getAbsoluteUrl(a[d].getAttribute("href"));null!=c&&(a[d].setAttribute("rel",this.linkRelation),a[d].setAttribute("href",c),null!=b&&mxEvent.addGestureListeners(a[d],null,null,b))}});this.model.addListener(mxEvent.CHANGE,c);c();var e=this.container.style.cursor,f=this.getTolerance(),g=this,h={currentState:null,currentLink:null,
currentTarget:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(g,a,4):null,startX:0,startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var b=a.sourceState;if(null==b||null==g.getLinkForCell(b.cell))a=g.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,b,d){return null==g.getLinkForCell(a.cell)}),b=null==b||g.model.isAncestor(a,b.cell)?g.view.getState(a):null;b!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=b,null!=this.currentState&&
this.activate(this.currentState))},mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=g.container.scrollLeft;this.scrollTop=g.container.scrollTop;null==this.currentLink&&"auto"==g.container.style.overflow&&(g.container.style.cursor="move");this.updateCurrentState(b)},mouseMove:function(a,b){if(g.isMouseDown){if(null!=this.currentLink){var d=Math.abs(this.startX-b.getGraphX()),c=Math.abs(this.startY-b.getGraphY());(d>f||c>f)&&this.clear()}}else{for(d=b.getSource();null!=
-d&&"a"!=d.nodeName.toLowerCase();)d=d.parentNode;null!=d?this.clear():(null!=g.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&g.tooltipHandler.reset(b,!0,this.currentState),(null==this.currentState||b.getState()!=this.currentState&&null!=b.sourceState||!g.intersects(this.currentState,b.getGraphX(),b.getGraphY()))&&this.updateCurrentState(b))}},mouseUp:function(a,c){for(var e=c.getSource(),k=c.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(k)||mxEvent.isMiddleMouseButton(k))&&!mxEvent.isPopupTrigger(k)||mxEvent.isTouchEvent(k))&&(null!=this.currentLink?(e=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==b||b(k,this.currentLink),mxEvent.isConsumed(k)||(k=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(k)?"_blank":
-e?g.linkTarget:"_top",g.openLink(this.currentLink,k),c.consume())):null!=d&&!c.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&Math.abs(this.startX-c.getGraphX())<f&&Math.abs(this.startY-c.getGraphY())<f&&d(c.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(this.currentTarget=g.getLinkTargetForCell(a.cell),g.container.style.cursor="pointer",null!=
-this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&&(g.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(k);mxEvent.addListener(document,"mouseleave",function(a){k.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;for(var d=0;d<a.length;d++)this.isTableCell(a[d])&&
-(a[d]=this.model.getParent(a[d]));a=this.model.getTopmostCells(a);var c=this.getModel(),e=this.gridSize,f=[];c.beginUpdate();try{for(var g={},k=this.createCellLookup(a),h=this.cloneCells(a,!1,g,!0),d=0;d<a.length;d++){var l=c.getParent(a[d]);if(null!=l){var m=this.moveCells([h[d]],e,e,!1)[0];f.push(m);if(b)c.add(l,h[d]);else{var n=l.getIndex(a[d]);c.add(l,h[d],n+1)}if(this.isTable(l)){var Q=this.getCellGeometry(h[d]),p=this.getCellGeometry(l);null!=Q&&null!=p&&(p=p.clone(),p.height+=Q.height,c.setGeometry(l,
-p))}}else f.push(h[d])}this.updateCustomLinks(this.createCellMapping(g,k),h,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",h))}finally{c.endUpdate()}return f};Graph.prototype.insertImage=function(a,b,d){if(null!=a&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),e=[],f=0;f<c.length;f++)e.push(c[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(f=a.length-
+d&&"a"!=d.nodeName.toLowerCase();)d=d.parentNode;null!=d?this.clear():(null!=g.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&&g.tooltipHandler.reset(b,!0,this.currentState),(null==this.currentState||b.getState()!=this.currentState&&null!=b.sourceState||!g.intersects(this.currentState,b.getGraphX(),b.getGraphY()))&&this.updateCurrentState(b))}},mouseUp:function(a,c){for(var e=c.getSource(),h=c.getEvent();null!=e&&"a"!=e.nodeName.toLowerCase();)e=e.parentNode;null==e&&Math.abs(this.scrollLeft-
+g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&(null==c.sourceState||!c.isSource(c.sourceState.control))&&((mxEvent.isLeftMouseButton(h)||mxEvent.isMiddleMouseButton(h))&&!mxEvent.isPopupTrigger(h)||mxEvent.isTouchEvent(h))&&(null!=this.currentLink?(e=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&e||null==b||b(h,this.currentLink),mxEvent.isConsumed(h)||(h=null!=this.currentTarget?this.currentTarget:mxEvent.isMiddleMouseButton(h)?"_blank":
+e?g.linkTarget:"_top",g.openLink(this.currentLink,h),c.consume())):null!=d&&!c.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<f&&Math.abs(this.scrollTop-g.container.scrollTop)<f&&Math.abs(this.startX-c.getGraphX())<f&&Math.abs(this.startY-c.getGraphY())<f&&d(c.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(this.currentTarget=g.getLinkTargetForCell(a.cell),g.container.style.cursor="pointer",null!=
+this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&&(g.container.style.cursor=e);this.currentLink=this.currentState=this.currentTarget=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}};g.click=function(a){};g.addMouseListener(h);mxEvent.addListener(document,"mouseleave",function(a){h.clear()})};Graph.prototype.duplicateCells=function(a,b){a=null!=a?a:this.getSelectionCells();b=null!=b?b:!0;for(var d=0;d<a.length;d++)this.isTableCell(a[d])&&
+(a[d]=this.model.getParent(a[d]));a=this.model.getTopmostCells(a);var c=this.getModel(),e=this.gridSize,f=[];c.beginUpdate();try{for(var g={},h=this.createCellLookup(a),k=this.cloneCells(a,!1,g,!0),d=0;d<a.length;d++){var l=c.getParent(a[d]);if(null!=l){var m=this.moveCells([k[d]],e,e,!1)[0];f.push(m);if(b)c.add(l,k[d]);else{var n=l.getIndex(a[d]);c.add(l,k[d],n+1)}if(this.isTable(l)){var Q=this.getCellGeometry(k[d]),p=this.getCellGeometry(l);null!=Q&&null!=p&&(p=p.clone(),p.height+=Q.height,c.setGeometry(l,
+p))}}else f.push(k[d])}this.updateCustomLinks(this.createCellMapping(g,h),k,this);this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",k))}finally{c.endUpdate()}return f};Graph.prototype.insertImage=function(a,b,d){if(null!=a&&null!=this.cellEditor.textarea){for(var c=this.cellEditor.textarea.getElementsByTagName("img"),e=[],f=0;f<c.length;f++)e.push(c[f]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==e.length+1)for(f=a.length-
1;0<=f;f--)if(0==f||a[f]!=e[f-1]){a[f].setAttribute("width",b);a[f].setAttribute("height",d);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0==a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var b=this.cellEditor.textarea.getElementsByTagName("a"),d=[],c=0;c<b.length;c++)d.push(b[c]);document.execCommand("createlink",!1,mxUtils.trim(a));b=this.cellEditor.textarea.getElementsByTagName("a");if(b.length==d.length+1)for(c=b.length-1;0<=c;c--)if(b[c]!=
d[c-1]){for(b=b[c].getElementsByTagName("a");0<b.length;){for(d=b[0].parentNode;null!=b[0].firstChild;)d.insertBefore(b[0].firstChild,b[0]);d.removeChild(b[0])}break}}else document.execCommand("createlink",!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var b=mxGraph.prototype.isCellResizable.apply(this,arguments),d=this.getCurrentCellStyle(a);return!this.isTableCell(a)&&!this.isTableRow(a)&&(b||"0"!=mxUtils.getValue(d,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==d[mxConstants.STYLE_WHITE_SPACE])};
-Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var d=[],c=null,e=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var k=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,k):k,e=null!=e?Math.min(e,k):k;d.push(g)}}if(2<d.length){d.sort(function(b,d){return a?b.x-d.x:b.y-d.y});g=this.view.translate;k=this.view.scale;e=e/k-(a?g.x:g.y);c=c/k-(a?g.x:g.y);this.getModel().beginUpdate();
-try{for(var h=(c-e)/(d.length-1),c=e,f=1;f<d.length-1;f++){var l=this.view.getState(this.model.getParent(d[f].cell)),m=this.getCellGeometry(d[f].cell),c=c+h;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(c-m.width/2)-l.origin.x:m.y=Math.round(c-m.height/2)-l.origin.y,this.getModel().setGeometry(d[f].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.createSvgImageExport=
-function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.parseBackgroundImage=function(a){var b=null;null!=a&&0<a.length&&(a=JSON.parse(a),b=new mxImage(a.src,a.width,a.height));return b};Graph.prototype.getBackgroundImageObject=function(a){return a};Graph.prototype.getSvg=function(a,b,d,c,e,f,g,k,h,l,m,n,p,q){var Q=null;if(null!=q)for(Q=new mxDictionary,m=0;m<q.length;m++)Q.put(q[m],!0);if(q=this.useCssTransforms)this.useCssTransforms=
+Graph.prototype.distributeCells=function(a,b){null==b&&(b=this.getSelectionCells());if(null!=b&&1<b.length){for(var d=[],c=null,e=null,f=0;f<b.length;f++)if(this.getModel().isVertex(b[f])){var g=this.view.getState(b[f]);if(null!=g){var h=a?g.getCenterX():g.getCenterY(),c=null!=c?Math.max(c,h):h,e=null!=e?Math.min(e,h):h;d.push(g)}}if(2<d.length){d.sort(function(b,d){return a?b.x-d.x:b.y-d.y});g=this.view.translate;h=this.view.scale;e=e/h-(a?g.x:g.y);c=c/h-(a?g.x:g.y);this.getModel().beginUpdate();
+try{for(var k=(c-e)/(d.length-1),c=e,f=1;f<d.length-1;f++){var l=this.view.getState(this.model.getParent(d[f].cell)),m=this.getCellGeometry(d[f].cell),c=c+k;null!=m&&null!=l&&(m=m.clone(),a?m.x=Math.round(c-m.width/2)-l.origin.x:m.y=Math.round(c-m.height/2)-l.origin.y,this.getModel().setGeometry(d[f].cell,m))}}finally{this.getModel().endUpdate()}}}return b};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.createSvgImageExport=
+function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,b){return this.getLinkForCell(a.cell)});return a};Graph.prototype.parseBackgroundImage=function(a){var b=null;null!=a&&0<a.length&&(a=JSON.parse(a),b=new mxImage(a.src,a.width,a.height));return b};Graph.prototype.getBackgroundImageObject=function(a){return a};Graph.prototype.getSvg=function(a,b,d,c,e,f,g,h,k,l,m,n,p,q){var Q=null;if(null!=q)for(Q=new mxDictionary,m=0;m<q.length;m++)Q.put(q[m],!0);if(q=this.useCssTransforms)this.useCssTransforms=
!1,this.view.revalidate(),this.sizeDidChange();try{b=null!=b?b:1;d=null!=d?d:0;e=null!=e?e:!0;f=null!=f?f:!0;g=null!=g?g:!0;l=null!=l?l:!1;var T="page"==p?this.view.getBackgroundPageBounds():f&&null==Q||c||"diagram"==p?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),ca=this.view.scale;"diagram"==p&&null!=this.backgroundImage&&(T=mxRectangle.fromRectangle(T),T.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*ca,(this.view.translate.y+this.backgroundImage.y)*ca,
this.backgroundImage.width*ca,this.backgroundImage.height*ca)));if(null==T)throw Error(mxResources.get("drawingEmpty"));var r=mxUtils.createXmlDocument(),t=null!=r.createElementNS?r.createElementNS(mxConstants.NS_SVG,"svg"):r.createElement("svg");null!=a&&(null!=t.style?t.style.backgroundColor=a:t.setAttribute("style","background-color:"+a));null==r.createElementNS?(t.setAttribute("xmlns",mxConstants.NS_SVG),t.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):t.setAttributeNS("http://www.w3.org/2000/xmlns/",
"xmlns:xlink",mxConstants.NS_XLINK);a=b/ca;var X=Math.max(1,Math.ceil(T.width*a)+2*d)+(l&&0==d?5:0),u=Math.max(1,Math.ceil(T.height*a)+2*d)+(l&&0==d?5:0);t.setAttribute("version","1.1");t.setAttribute("width",X+"px");t.setAttribute("height",u+"px");t.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+X+" "+u);r.appendChild(t);var ga=null!=r.createElementNS?r.createElementNS(mxConstants.NS_SVG,"g"):r.createElement("g");t.appendChild(ga);var w=this.createSvgCanvas(ga);w.foOffset=e?-.5:0;w.textOffset=
-e?-.5:0;w.imageOffset=e?-.5:0;w.translate(Math.floor(d/b-T.x/ca),Math.floor(d/b-T.y/ca));var Z=document.createElement("div"),y=w.getAlternateText;w.getAlternateText=function(a,b,d,c,e,f,g,k,h,l,m,n,p){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(Z.innerHTML=f,f=mxUtils.extractTextWithWhitespace(Z.childNodes));for(var Q=Math.ceil(2*c/this.state.fontSize),q=[],v=0,B=0;(0==Q||v<Q)&&B<f.length;){var A=f.charCodeAt(B);if(10==A||13==A){if(0<v)break}else q.push(f.charAt(B)),255>
-A&&v++;B++}q.length<f.length&&1<f.length-q.length&&(f=mxUtils.trim(q.join(""))+"...");return f}catch(D){return y.apply(this,arguments)}else return y.apply(this,arguments)};var E=this.backgroundImage;if(null!=E){b=ca/b;var C=this.view.translate,z=new mxRectangle((E.x+C.x)*b,(E.y+C.y)*b,E.width*b,E.height*b);mxUtils.intersects(T,z)&&w.image(E.x+C.x,E.y+C.y,E.width,E.height,E.src,!0)}w.scale(a);w.textEnabled=g;k=null!=k?k:this.createSvgImageExport();var x=k.drawCellState,J=k.getLinkForCellState;k.getLinkForCellState=
-function(a,b){var d=J.apply(this,arguments);return null==d||a.view.graph.isCustomLink(d)?null:d};k.getLinkTargetForCellState=function(a,b){return a.view.graph.getLinkTargetForCell(a.cell)};k.drawCellState=function(a,b){for(var d=a.view.graph,c=null!=Q?Q.get(a.cell):d.isCellSelected(a.cell),e=d.model.getParent(a.cell);!(f&&null==Q||c)&&null!=e;)c=null!=Q?Q.get(e):d.isCellSelected(e),e=d.model.getParent(e);(f&&null==Q||c)&&x.apply(this,arguments)};k.drawState(this.getView().getState(this.model.root),
-w);this.updateSvgLinks(t,h,!0);this.addForeignObjectWarning(w,t);return t}finally{q&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if("0"!=urlParams["svg-warning"]&&0<b.getElementsByTagName("foreignObject").length){var d=a.createElement("switch"),c=a.createElement("g");c.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=a.createElement("a");e.setAttribute("transform","translate(0,-5)");
+e?-.5:0;w.imageOffset=e?-.5:0;w.translate(Math.floor(d/b-T.x/ca),Math.floor(d/b-T.y/ca));var Z=document.createElement("div"),y=w.getAlternateText;w.getAlternateText=function(a,b,d,c,e,f,g,h,k,l,m,n,p){if(null!=f&&0<this.state.fontSize)try{mxUtils.isNode(f)?f=f.innerText:(Z.innerHTML=f,f=mxUtils.extractTextWithWhitespace(Z.childNodes));for(var Q=Math.ceil(2*c/this.state.fontSize),q=[],v=0,B=0;(0==Q||v<Q)&&B<f.length;){var A=f.charCodeAt(B);if(10==A||13==A){if(0<v)break}else q.push(f.charAt(B)),255>
+A&&v++;B++}q.length<f.length&&1<f.length-q.length&&(f=mxUtils.trim(q.join(""))+"...");return f}catch(D){return y.apply(this,arguments)}else return y.apply(this,arguments)};var E=this.backgroundImage;if(null!=E){b=ca/b;var C=this.view.translate,z=new mxRectangle((E.x+C.x)*b,(E.y+C.y)*b,E.width*b,E.height*b);mxUtils.intersects(T,z)&&w.image(E.x+C.x,E.y+C.y,E.width,E.height,E.src,!0)}w.scale(a);w.textEnabled=g;h=null!=h?h:this.createSvgImageExport();var x=h.drawCellState,J=h.getLinkForCellState;h.getLinkForCellState=
+function(a,b){var d=J.apply(this,arguments);return null==d||a.view.graph.isCustomLink(d)?null:d};h.getLinkTargetForCellState=function(a,b){return a.view.graph.getLinkTargetForCell(a.cell)};h.drawCellState=function(a,b){for(var d=a.view.graph,c=null!=Q?Q.get(a.cell):d.isCellSelected(a.cell),e=d.model.getParent(a.cell);!(f&&null==Q||c)&&null!=e;)c=null!=Q?Q.get(e):d.isCellSelected(e),e=d.model.getParent(e);(f&&null==Q||c)&&x.apply(this,arguments)};h.drawState(this.getView().getState(this.model.root),
+w);this.updateSvgLinks(t,k,!0);this.addForeignObjectWarning(w,t);return t}finally{q&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,b){if("0"!=urlParams["svg-warning"]&&0<b.getElementsByTagName("foreignObject").length){var d=a.createElement("switch"),c=a.createElement("g");c.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=a.createElement("a");e.setAttribute("transform","translate(0,-5)");
null==e.setAttributeNS||b.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var f=a.createElement("text");f.setAttribute("text-anchor","middle");f.setAttribute("font-size","10px");f.setAttribute("x","50%");f.setAttribute("y","100%");mxUtils.write(f,Graph.foreignObjectWarningText);
d.appendChild(c);e.appendChild(f);d.appendChild(e);b.appendChild(d)}};Graph.prototype.updateSvgLinks=function(a,b,d){a=a.getElementsByTagName("a");for(var c=0;c<a.length;c++)if(null==a[c].getAttribute("target")){var e=a[c].getAttribute("href");null==e&&(e=a[c].getAttribute("xlink:href"));null!=e&&(null!=b&&/^https?:\/\//.test(e)?a[c].setAttribute("target",b):d&&this.isCustomLink(e)&&a[c].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){a=new mxSvgCanvas2D(a);
a.pointerEvents=!0;return a};Graph.prototype.getSelectedElement=function(){var a=null;if(window.getSelection){var b=window.getSelection();b.getRangeAt&&b.rangeCount&&(a=b.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getSelectedEditingElement=function(){for(var a=this.getSelectedElement();null!=a&&a.nodeType!=mxConstants.NODETYPE_ELEMENT;)a=a.parentNode;null!=a&&a==this.cellEditor.textarea&&1==this.cellEditor.textarea.children.length&&
@@ -2881,14 +2881,14 @@ this.cellEditor.textarea.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT&&(a=t
b.rangeCount){var d=document.createRange();d.selectNode(a);b.removeAllRanges();b.addRange(d)}}else(b=document.selection)&&"Control"!=b.type&&(a=b.createRange(),a.collapse(!0),d=b.createRange(),d.setEndPoint("StartToStart",a),d.select())};Graph.prototype.flipEdgePoints=function(a,b,d){var c=this.getCellGeometry(a);if(null!=c){c=c.clone();if(null!=c.points)for(var e=0;e<c.points.length;e++)b?c.points[e].x=d+(d-c.points[e].x):c.points[e].y=d+(d-c.points[e].y);e=function(a){null!=a&&(b?a.x=d+(d-a.x):
a.y=d+(d-a.y))};e(c.getTerminalPoint(!0));e(c.getTerminalPoint(!1));this.model.setGeometry(a,c)}};Graph.prototype.flipChildren=function(a,b,d){this.model.beginUpdate();try{for(var c=this.model.getChildCount(a),e=0;e<c;e++){var f=this.model.getChildAt(a,e);if(this.model.isEdge(f))this.flipEdgePoints(f,b,d);else{var g=this.getCellGeometry(f);null!=g&&(g=g.clone(),b?g.x=d+(d-g.x-g.width):g.y=d+(d-g.y-g.height),this.model.setGeometry(f,g))}}}finally{this.model.endUpdate()}};Graph.prototype.flipCells=
function(a,b){this.model.beginUpdate();try{a=this.model.getTopmostCells(a);for(var d=[],c=0;c<a.length;c++)if(this.model.isEdge(a[c])){var e=this.view.getState(a[c]);null!=e&&this.flipEdgePoints(a[c],b,(b?e.getCenterX():e.getCenterY())/this.view.scale-(b?e.origin.x:e.origin.y)-(b?this.view.translate.x:this.view.translate.y))}else{var f=this.getCellGeometry(a[c]);null!=f&&this.flipChildren(a[c],b,b?f.getCenterX()-f.x:f.getCenterY()-f.y);d.push(a[c])}this.toggleCellStyles(b?mxConstants.STYLE_FLIPH:
-mxConstants.STYLE_FLIPV,!1,d)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(a,b){var d=null;if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++){var e=this.model.getParent(a[c]);if(this.isTable(e)){var f=this.getCellGeometry(a[c]),g=this.getCellGeometry(e);null!=f&&null!=g&&(g=g.clone(),g.height-=f.height,this.model.setGeometry(e,g))}}var k=this.selectParentAfterDelete?this.model.getParents(a):null;this.removeCells(a,b)}finally{this.model.endUpdate()}if(null!=
-k)for(d=[],c=0;c<k.length;c++)this.model.contains(k[c])&&(this.model.isVertex(k[c])||this.model.isEdge(k[c]))&&d.push(k[c])}return d};Graph.prototype.insertTableColumn=function(a,b){var d=this.getModel();d.beginUpdate();try{var c=a,e=0;if(this.isTableCell(a))var f=d.getParent(a),c=d.getParent(f),e=mxUtils.indexOf(d.getChildCells(f,!0),a);else this.isTableRow(a)?c=d.getParent(a):a=d.getChildCells(c,!0)[0],b||(e=d.getChildCells(a,!0).length-1);for(var g=d.getChildCells(c,!0),k=Graph.minTableColumnWidth,
-f=0;f<g.length;f++){var h=d.getChildCells(g[f],!0)[e],l=d.cloneCell(h,!1),m=this.getCellGeometry(l);l.value=null;l.style=mxUtils.setStyle(mxUtils.setStyle(l.style,"rowspan",null),"colspan",null);if(null!=m){null!=m.alternateBounds&&(m.width=m.alternateBounds.width,m.height=m.alternateBounds.height,m.alternateBounds=null);var k=m.width,n=this.getCellGeometry(g[f]);null!=n&&(m.height=n.height)}d.add(g[f],l,e+(b?0:1))}var p=this.getCellGeometry(c);null!=p&&(p=p.clone(),p.width+=k,d.setGeometry(c,p))}finally{d.endUpdate()}};
+mxConstants.STYLE_FLIPV,!1,d)}finally{this.model.endUpdate()}};Graph.prototype.deleteCells=function(a,b){var d=null;if(null!=a&&0<a.length){this.model.beginUpdate();try{for(var c=0;c<a.length;c++){var e=this.model.getParent(a[c]);if(this.isTable(e)){var f=this.getCellGeometry(a[c]),g=this.getCellGeometry(e);null!=f&&null!=g&&(g=g.clone(),g.height-=f.height,this.model.setGeometry(e,g))}}var h=this.selectParentAfterDelete?this.model.getParents(a):null;this.removeCells(a,b)}finally{this.model.endUpdate()}if(null!=
+h)for(d=[],c=0;c<h.length;c++)this.model.contains(h[c])&&(this.model.isVertex(h[c])||this.model.isEdge(h[c]))&&d.push(h[c])}return d};Graph.prototype.insertTableColumn=function(a,b){var d=this.getModel();d.beginUpdate();try{var c=a,e=0;if(this.isTableCell(a))var f=d.getParent(a),c=d.getParent(f),e=mxUtils.indexOf(d.getChildCells(f,!0),a);else this.isTableRow(a)?c=d.getParent(a):a=d.getChildCells(c,!0)[0],b||(e=d.getChildCells(a,!0).length-1);for(var g=d.getChildCells(c,!0),h=Graph.minTableColumnWidth,
+f=0;f<g.length;f++){var k=d.getChildCells(g[f],!0)[e],l=d.cloneCell(k,!1),m=this.getCellGeometry(l);l.value=null;l.style=mxUtils.setStyle(mxUtils.setStyle(l.style,"rowspan",null),"colspan",null);if(null!=m){null!=m.alternateBounds&&(m.width=m.alternateBounds.width,m.height=m.alternateBounds.height,m.alternateBounds=null);var h=m.width,n=this.getCellGeometry(g[f]);null!=n&&(m.height=n.height)}d.add(g[f],l,e+(b?0:1))}var p=this.getCellGeometry(c);null!=p&&(p=p.clone(),p.width+=h,d.setGeometry(c,p))}finally{d.endUpdate()}};
Graph.prototype.deleteLane=function(a){var b=this.getModel();b.beginUpdate();try{var d=null,d="stackLayout"==this.getCurrentCellStyle(a).childLayout?a:b.getParent(a),c=b.getChildCells(d,!0);0==c.length?b.remove(d):(d==a&&(a=c[c.length-1]),b.remove(a))}finally{b.endUpdate()}};Graph.prototype.insertLane=function(a,b){var d=this.getModel();d.beginUpdate();try{var c=null,e=a;if("stackLayout"==this.getCurrentCellStyle(e).childLayout)var c=e,f=d.getChildCells(c,!0),e=f[b?0:f.length-1];else c=d.getParent(e);
-var g=c.getIndex(e),e=d.cloneCell(e,!1);e.value=null;d.add(c,e,g+(b?0:1))}finally{d.endUpdate()}};Graph.prototype.insertTableRow=function(a,b){var d=this.getModel();d.beginUpdate();try{var c=a,e=a;if(this.isTableCell(a))e=d.getParent(a),c=d.getParent(e);else if(this.isTableRow(a))c=d.getParent(a);else var f=d.getChildCells(c,!0),e=f[b?0:f.length-1];var g=d.getChildCells(e,!0),k=c.getIndex(e),e=d.cloneCell(e,!1);e.value=null;var h=this.getCellGeometry(e);if(null!=h){for(f=0;f<g.length;f++){a=d.cloneCell(g[f],
-!1);a.value=null;a.style=mxUtils.setStyle(mxUtils.setStyle(a.style,"rowspan",null),"colspan",null);var l=this.getCellGeometry(a);null!=l&&(null!=l.alternateBounds&&(l.width=l.alternateBounds.width,l.height=l.alternateBounds.height,l.alternateBounds=null),l.height=h.height);e.insert(a)}d.add(c,e,k+(b?0:1));var m=this.getCellGeometry(c);null!=m&&(m=m.clone(),m.height+=h.height,d.setGeometry(c,m))}}finally{d.endUpdate()}};Graph.prototype.deleteTableColumn=function(a){var b=this.getModel();b.beginUpdate();
-try{var d=a,c=a;this.isTableCell(a)&&(c=b.getParent(a));this.isTableRow(c)&&(d=b.getParent(c));var e=b.getChildCells(d,!0);if(0==e.length)b.remove(d);else{this.isTableRow(c)||(c=e[0]);var f=b.getChildCells(c,!0);if(1>=f.length)b.remove(d);else{var g=f.length-1;this.isTableCell(a)&&(g=mxUtils.indexOf(f,a));for(c=a=0;c<e.length;c++){var k=b.getChildCells(e[c],!0)[g];b.remove(k);var h=this.getCellGeometry(k);null!=h&&(a=Math.max(a,h.width))}var l=this.getCellGeometry(d);null!=l&&(l=l.clone(),l.width-=
-a,b.setGeometry(d,l))}}}finally{b.endUpdate()}};Graph.prototype.deleteTableRow=function(a){var b=this.getModel();b.beginUpdate();try{var d=a,c=a;this.isTableCell(a)&&(a=c=b.getParent(a));this.isTableRow(a)&&(d=b.getParent(c));var e=b.getChildCells(d,!0);if(1>=e.length)b.remove(d);else{this.isTableRow(c)||(c=e[e.length-1]);b.remove(c);a=0;var f=this.getCellGeometry(c);null!=f&&(a=f.height);var g=this.getCellGeometry(d);null!=g&&(g=g.clone(),g.height-=a,b.setGeometry(d,g))}}finally{b.endUpdate()}};
+var g=c.getIndex(e),e=d.cloneCell(e,!1);e.value=null;d.add(c,e,g+(b?0:1))}finally{d.endUpdate()}};Graph.prototype.insertTableRow=function(a,b){var d=this.getModel();d.beginUpdate();try{var c=a,e=a;if(this.isTableCell(a))e=d.getParent(a),c=d.getParent(e);else if(this.isTableRow(a))c=d.getParent(a);else var f=d.getChildCells(c,!0),e=f[b?0:f.length-1];var g=d.getChildCells(e,!0),h=c.getIndex(e),e=d.cloneCell(e,!1);e.value=null;var k=this.getCellGeometry(e);if(null!=k){for(f=0;f<g.length;f++){a=d.cloneCell(g[f],
+!1);a.value=null;a.style=mxUtils.setStyle(mxUtils.setStyle(a.style,"rowspan",null),"colspan",null);var m=this.getCellGeometry(a);null!=m&&(null!=m.alternateBounds&&(m.width=m.alternateBounds.width,m.height=m.alternateBounds.height,m.alternateBounds=null),m.height=k.height);e.insert(a)}d.add(c,e,h+(b?0:1));var l=this.getCellGeometry(c);null!=l&&(l=l.clone(),l.height+=k.height,d.setGeometry(c,l))}}finally{d.endUpdate()}};Graph.prototype.deleteTableColumn=function(a){var b=this.getModel();b.beginUpdate();
+try{var d=a,c=a;this.isTableCell(a)&&(c=b.getParent(a));this.isTableRow(c)&&(d=b.getParent(c));var e=b.getChildCells(d,!0);if(0==e.length)b.remove(d);else{this.isTableRow(c)||(c=e[0]);var f=b.getChildCells(c,!0);if(1>=f.length)b.remove(d);else{var g=f.length-1;this.isTableCell(a)&&(g=mxUtils.indexOf(f,a));for(c=a=0;c<e.length;c++){var h=b.getChildCells(e[c],!0)[g];b.remove(h);var k=this.getCellGeometry(h);null!=k&&(a=Math.max(a,k.width))}var m=this.getCellGeometry(d);null!=m&&(m=m.clone(),m.width-=
+a,b.setGeometry(d,m))}}}finally{b.endUpdate()}};Graph.prototype.deleteTableRow=function(a){var b=this.getModel();b.beginUpdate();try{var d=a,c=a;this.isTableCell(a)&&(a=c=b.getParent(a));this.isTableRow(a)&&(d=b.getParent(c));var e=b.getChildCells(d,!0);if(1>=e.length)b.remove(d);else{this.isTableRow(c)||(c=e[e.length-1]);b.remove(c);a=0;var f=this.getCellGeometry(c);null!=f&&(a=f.height);var g=this.getCellGeometry(d);null!=g&&(g=g.clone(),g.height-=a,b.setGeometry(d,g))}}finally{b.endUpdate()}};
Graph.prototype.insertRow=function(a,b){for(var d=a.tBodies[0],c=d.rows[0].cells,e=0,f=0;f<c.length;f++)var g=c[f].getAttribute("colspan"),e=e+(null!=g?parseInt(g):1);d=d.insertRow(b);for(f=0;f<e;f++)mxUtils.br(d.insertCell(-1));return d.cells[0]};Graph.prototype.deleteRow=function(a,b){a.tBodies[0].deleteRow(b)};Graph.prototype.insertColumn=function(a,b){var d=a.tHead;if(null!=d)for(var c=0;c<d.rows.length;c++){var e=document.createElement("th");d.rows[c].appendChild(e);mxUtils.br(e)}d=a.tBodies[0];
for(c=0;c<d.rows.length;c++)e=d.rows[c].insertCell(b),mxUtils.br(e);return d.rows[0].cells[0<=b?b:d.rows[0].cells.length-1]};Graph.prototype.deleteColumn=function(a,b){if(0<=b)for(var d=a.tBodies[0].rows,c=0;c<d.length;c++)d[c].cells.length>b&&d[c].deleteCell(b)};Graph.prototype.pasteHtmlAtCaret=function(a){var b;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){b=b.getRangeAt(0);b.deleteContents();var d=document.createElement("div");d.innerHTML=a;a=document.createDocumentFragment();
for(var c;c=d.firstChild;)lastNode=a.appendChild(c);b.insertNode(a)}}else(b=document.selection)&&"Control"!=b.type&&b.createRange().pasteHTML(a)};Graph.prototype.createLinkForHint=function(a,b){function d(a,b){a.length>b&&(a=a.substring(0,Math.round(b/2))+"..."+a.substring(a.length-Math.round(b/4)));return a}a=null!=a?a:"javascript:void(0);";if(null==b||0==b.length)b=this.isCustomLink(a)?this.getLinkTitle(a):a;var c=document.createElement("a");c.setAttribute("rel",this.linkRelation);c.setAttribute("href",
@@ -2904,12 +2904,12 @@ function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.remov
"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var d=this.graph.getModel().getParent(a),c=this.graph.getCellGeometry(a);if(this.graph.getModel().isEdge(d)&&null!=c&&c.relative||this.graph.getModel().isEdge(a))this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px":""};var w=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function b(a,
d){d.originalNode=a;a=a.firstChild;for(var c=d.firstChild;null!=a&&null!=c;)b(a,c),a=a.nextSibling,c=c.nextSibling;return d}function d(a,b){if(null!=a)if(b.originalNode!=a)c(a);else for(a=a.firstChild,b=b.firstChild;null!=a;){var e=a.nextSibling;null==b?c(a):(d(a,b),b=b.nextSibling);a=e}}function c(a){for(var b=a.firstChild;null!=b;){var d=b.nextSibling;c(b);b=d}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)}w.apply(this,arguments);7!==document.documentMode&&8!==document.documentMode&&mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var c=b(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,
-function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?d(this.textarea,c):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),d=this.saveSelection();if(this.codeViewMode){h=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);
-0<h.length&&"\n"==h.charAt(h.length-1)&&(h=h.substring(0,h.length-1));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"<br/>"):h,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==
-mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,k=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&k.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&k.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+
-"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration=k.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));
-this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var h=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(h=mxUtils.replaceTrailingNewlines(h,"<div><br></div>"));h=this.graph.sanitizeHtml(b?h.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):h,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var c=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?
-Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.width="";this.textarea.style.padding="2px";this.textarea.innerHTML!=h&&(this.textarea.innerHTML=h);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&
+function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>")?d(this.textarea,c):Graph.removePasteFormatting(this.textarea))}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell);if(null!=a){var b=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),d=this.saveSelection();if(this.codeViewMode){k=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);
+0<k.length&&"\n"==k.charAt(k.length-1)&&(k=k.substring(0,k.length-1));k=this.graph.sanitizeHtml(b?k.replace(/\n/g,"<br/>"):k,!0);this.textarea.className="mxCellEditor geContentEditable";var c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),b=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY),e=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),f=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==
+mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,h=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&h.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&h.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(c*mxConstants.LINE_HEIGHT)+
+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration=h.join(" ");this.textarea.style.fontWeight=f?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=b;this.textarea.style.textAlign=e;this.textarea.style.padding="0px";this.textarea.innerHTML!=k&&(this.textarea.innerHTML=k,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));
+this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var k=mxUtils.htmlEntities(this.textarea.innerHTML);8!=document.documentMode&&(k=mxUtils.replaceTrailingNewlines(k,"<div><br></div>"));k=this.graph.sanitizeHtml(b?k.replace(/\n/g,"").replace(/&lt;br\s*.?&gt;/g,"<br>"):k,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var c=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?
+Math.round(c*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(c)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily=mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.width="";this.textarea.style.padding="2px";this.textarea.innerHTML!=k&&(this.textarea.innerHTML=k);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&
this.restoreSelection(this.switchSelectionState);this.switchSelectionState=d;this.resize()}};var x=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 d=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*d;this.bounds.height=60*d;var c=null!=a.text?a.text.margin:null;null==c&&(c=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+=c.x*this.bounds.width;this.bounds.y+=c.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/d)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/d)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/d)+(this.textarea.offsetHeight-
this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*d);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/d)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*d);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+d+","+
@@ -2927,13 +2927,13 @@ this.bounds.width-this.rotationHandleVSpacing+a.x/2,this.bounds.y+this.rotationH
"childLayout",null))&&mxEvent.isControlDown(b.getEvent())||mxEvent.isMetaDown(b.getEvent())};var G=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return G.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):
this.bounds};var J=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return J.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var L=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(a){return a.tableHandle||L.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
function(){var a=0;this.graph.isTableRow(this.state.cell)?a=1:this.graph.isTableCell(this.state.cell)&&(a=2);return a};var M=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return M.apply(this,arguments).grow(-this.getSelectionBorderInset())};var K=null,P=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==K&&(K=mxCellRenderer.defaultShapes.tableLine);var a=P.apply(this,arguments);
-if(this.graph.isTable(this.state.cell)){var b=function(a,b,d){for(var c=[],e=0;e<a.length;e++){var g=a[e];c.push(null==g?null:new mxPoint((h+g.x+b)*f,(l+g.y+d)*f))}return c},d=this,c=this.graph,e=c.model,f=c.view.scale,g=this.state,k=this.selectionBorder,h=this.state.origin.x+c.view.translate.x,l=this.state.origin.y+c.view.translate.y;null==a&&(a=[]);var m=c.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<m.length){for(var n=e.getChildCells(m[0].cell,!0),p=c.getTableLines(this.state.cell,
-!1,!0),q=c.getTableLines(this.state.cell,!0,!1),e=0;e<m.length;e++)mxUtils.bind(this,function(e){var h=m[e],l=e<m.length-1?m[e+1]:null,l=null!=l?c.getCellGeometry(l.cell):null,n=null!=l&&null!=l.alternateBounds?l.alternateBounds:l,l=null!=q[e]?new K(q[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);l.isDashed=k.isDashed;l.svgStrokeTolerance++;h=new mxHandle(h,"row-resize",null,l);h.tableHandle=!0;var p=0;h.shape.node.parentNode.insertBefore(h.shape.node,h.shape.node.parentNode.firstChild);
-h.redraw=function(){if(null!=this.shape){this.shape.stroke=0==p?mxConstants.NONE:k.stroke;if(this.shape.constructor==K)this.shape.line=b(q[e],0,p),this.shape.updateBoundsFromLine();else{var a=c.getActualStartSize(g.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+p*f;this.shape.bounds.x=g.x+(e==m.length-1?0:a.x*f);this.shape.bounds.width=g.width-(e==m.length-1?0:a.width+a.x+f)}this.shape.redraw()}};var r=!1;h.setPosition=function(a,b,d){p=Math.max(Graph.minTableRowHeight-
-a.height,b.y-a.y-a.height);r=mxEvent.isShiftDown(d.getEvent());null!=n&&r&&(p=Math.min(p,n.height-Graph.minTableRowHeight))};h.execute=function(a){if(0!=p)c.setTableRowHeight(this.state.cell,p,!r);else if(!d.blockDelayedSelection){var b=c.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;c.graphHandler.selectCellForEvent(b,a)}p=0};h.reset=function(){p=0};a.push(h)})(e);for(e=0;e<n.length;e++)mxUtils.bind(this,function(e){var h=c.view.getState(n[e]),l=c.getCellGeometry(n[e]),m=null!=l.alternateBounds?
-l.alternateBounds:l;null==h&&(h=new mxCellState(c.view,n[e],c.getCellStyle(n[e])),h.x=g.x+l.x*f,h.y=g.y+l.y*f,h.width=m.width*f,h.height=m.height*f,h.updateCachedBounds());var l=e<n.length-1?n[e+1]:null,l=null!=l?c.getCellGeometry(l):null,q=null!=l&&null!=l.alternateBounds?l.alternateBounds:l,l=null!=p[e]?new K(p[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);l.isDashed=k.isDashed;l.svgStrokeTolerance++;h=new mxHandle(h,"col-resize",null,l);h.tableHandle=!0;var r=0;h.shape.node.parentNode.insertBefore(h.shape.node,
-h.shape.node.parentNode.firstChild);h.redraw=function(){if(null!=this.shape){this.shape.stroke=0==r?mxConstants.NONE:k.stroke;if(this.shape.constructor==K)this.shape.line=b(p[e],r,0),this.shape.updateBoundsFromLine();else{var a=c.getActualStartSize(g.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(m.width+r)*f;this.shape.bounds.y=g.y+(e==n.length-1?0:a.y*f);this.shape.bounds.height=g.height-(e==n.length-1?0:(a.height+a.y)*f)}this.shape.redraw()}};var t=!1;h.setPosition=function(a,
-b,d){r=Math.max(Graph.minTableColumnWidth-m.width,b.x-a.x-m.width);t=mxEvent.isShiftDown(d.getEvent());null==q||t||(r=Math.min(r,q.width-Graph.minTableColumnWidth))};h.execute=function(a){if(0!=r)c.setTableColumnWidth(this.state.cell,r,t);else if(!d.blockDelayedSelection){var b=c.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;c.graphHandler.selectCellForEvent(b,a)}r=0};h.positionChanged=function(){};h.reset=function(){r=0};a.push(h)})(e)}}return null!=a?a.reverse():null};var ba=mxVertexHandler.prototype.setHandlesVisible;
+if(this.graph.isTable(this.state.cell)){var b=function(a,b,d){for(var c=[],e=0;e<a.length;e++){var g=a[e];c.push(null==g?null:new mxPoint((k+g.x+b)*f,(m+g.y+d)*f))}return c},d=this,c=this.graph,e=c.model,f=c.view.scale,g=this.state,h=this.selectionBorder,k=this.state.origin.x+c.view.translate.x,m=this.state.origin.y+c.view.translate.y;null==a&&(a=[]);var l=c.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<l.length){for(var n=e.getChildCells(l[0].cell,!0),p=c.getTableLines(this.state.cell,
+!1,!0),q=c.getTableLines(this.state.cell,!0,!1),e=0;e<l.length;e++)mxUtils.bind(this,function(e){var k=l[e],m=e<l.length-1?l[e+1]:null,m=null!=m?c.getCellGeometry(m.cell):null,n=null!=m&&null!=m.alternateBounds?m.alternateBounds:m,m=null!=q[e]?new K(q[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);m.isDashed=h.isDashed;m.svgStrokeTolerance++;k=new mxHandle(k,"row-resize",null,m);k.tableHandle=!0;var p=0;k.shape.node.parentNode.insertBefore(k.shape.node,k.shape.node.parentNode.firstChild);
+k.redraw=function(){if(null!=this.shape){this.shape.stroke=0==p?mxConstants.NONE:h.stroke;if(this.shape.constructor==K)this.shape.line=b(q[e],0,p),this.shape.updateBoundsFromLine();else{var a=c.getActualStartSize(g.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+p*f;this.shape.bounds.x=g.x+(e==l.length-1?0:a.x*f);this.shape.bounds.width=g.width-(e==l.length-1?0:a.width+a.x+f)}this.shape.redraw()}};var r=!1;k.setPosition=function(a,b,d){p=Math.max(Graph.minTableRowHeight-
+a.height,b.y-a.y-a.height);r=mxEvent.isShiftDown(d.getEvent());null!=n&&r&&(p=Math.min(p,n.height-Graph.minTableRowHeight))};k.execute=function(a){if(0!=p)c.setTableRowHeight(this.state.cell,p,!r);else if(!d.blockDelayedSelection){var b=c.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;c.graphHandler.selectCellForEvent(b,a)}p=0};k.reset=function(){p=0};a.push(k)})(e);for(e=0;e<n.length;e++)mxUtils.bind(this,function(e){var k=c.view.getState(n[e]),m=c.getCellGeometry(n[e]),l=null!=m.alternateBounds?
+m.alternateBounds:m;null==k&&(k=new mxCellState(c.view,n[e],c.getCellStyle(n[e])),k.x=g.x+m.x*f,k.y=g.y+m.y*f,k.width=l.width*f,k.height=l.height*f,k.updateCachedBounds());var m=e<n.length-1?n[e+1]:null,m=null!=m?c.getCellGeometry(m):null,q=null!=m&&null!=m.alternateBounds?m.alternateBounds:m,m=null!=p[e]?new K(p[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);m.isDashed=h.isDashed;m.svgStrokeTolerance++;k=new mxHandle(k,"col-resize",null,m);k.tableHandle=!0;var r=0;k.shape.node.parentNode.insertBefore(k.shape.node,
+k.shape.node.parentNode.firstChild);k.redraw=function(){if(null!=this.shape){this.shape.stroke=0==r?mxConstants.NONE:h.stroke;if(this.shape.constructor==K)this.shape.line=b(p[e],r,0),this.shape.updateBoundsFromLine();else{var a=c.getActualStartSize(g.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(l.width+r)*f;this.shape.bounds.y=g.y+(e==n.length-1?0:a.y*f);this.shape.bounds.height=g.height-(e==n.length-1?0:(a.height+a.y)*f)}this.shape.redraw()}};var t=!1;k.setPosition=function(a,
+b,d){r=Math.max(Graph.minTableColumnWidth-l.width,b.x-a.x-l.width);t=mxEvent.isShiftDown(d.getEvent());null==q||t||(r=Math.min(r,q.width-Graph.minTableColumnWidth))};k.execute=function(a){if(0!=r)c.setTableColumnWidth(this.state.cell,r,t);else if(!d.blockDelayedSelection){var b=c.getCellAt(a.getGraphX(),a.getGraphY())||g.cell;c.graphHandler.selectCellForEvent(b,a)}r=0};k.positionChanged=function(){};k.reset=function(){r=0};a.push(k)})(e)}}return null!=a?a.reverse():null};var ba=mxVertexHandler.prototype.setHandlesVisible;
mxVertexHandler.prototype.setHandlesVisible=function(a){ba.apply(this,arguments);if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.visibility=a?"":"hidden";if(null!=this.cornerHandles)for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.visibility=a?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var a=this.graph.model;if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);
this.moveHandles=null}this.moveHandles=[];for(b=0;b<a.getChildCount(this.state.cell);b++)mxUtils.bind(this,function(b){if(null!=b&&a.isVertex(b.cell)){var d=mxUtils.createImage(Editor.rowMoveImage);d.style.position="absolute";d.style.cursor="pointer";d.style.width="7px";d.style.height="4px";d.style.padding="4px 2px 4px 2px";d.rowState=b;mxEvent.addGestureListeners(d,mxUtils.bind(this,function(a){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(a)&&this.graph.isCellSelected(b.cell)||
this.graph.selectCellForEvent(b.cell,a);mxEvent.isPopupTrigger(a)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(a),this.graph.isMouseDown=!0);mxEvent.consume(a)}),null,mxUtils.bind(this,function(a){mxEvent.isPopupTrigger(a)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(a),mxEvent.getClientY(a),b.cell,a),mxEvent.consume(a))}));
@@ -2957,8 +2957,8 @@ HoverIcons.prototype.mainHandle;null!=window.Sidebar&&(Sidebar.prototype.triangl
12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(a){return mxEvent.isMouseEvent(a.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(a){var b=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(b)||mxEvent.isPopupTrigger(b)&&(null==a.getState()||mxEvent.isControlDown(b)||mxEvent.isShiftDown(b))};var V=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=
function(a,b){V.apply(this,arguments);mxEvent.isTouchEvent(b.getEvent())&&this.graph.isCellSelected(b.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var b=a.getEvent();return mxEvent.isLeftMouseButton(b)&&(this.useLeftButtonForPanning&&null==a.getState()||mxEvent.isControlDown(b)&&!mxEvent.isShiftDown(b))||this.usePopupTrigger&&mxEvent.isPopupTrigger(b)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&
!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())&&mxEvent.isAltDown(a.getEvent())};mxRubberband.prototype.cancelled=!1;mxRubberband.prototype.cancel=function(){this.isActive()&&(this.cancelled=!0,this.reset())};mxRubberband.prototype.mouseUp=function(a,b){if(this.cancelled)this.cancelled=!1,b.consume();else{var d=null!=this.div&&"none"!=this.div.style.display,c=null,e=null,f=null,g=null;null!=this.first&&null!=this.currentX&&
-null!=this.currentY&&(c=this.first.x,e=this.first.y,f=(this.currentX-c)/this.graph.view.scale,g=(this.currentY-e)/this.graph.view.scale,mxEvent.isAltDown(b.getEvent())||(f=this.graph.snap(f),g=this.graph.snap(g),this.graph.isGridEnabled()||(Math.abs(f)<this.graph.tolerance&&(f=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(d){if(this.isSpaceEvent(b)){this.graph.model.beginUpdate();try{for(var h=this.graph.getCellsBeyond(c,e,this.graph.getDefaultParent(),!0,!0),d=0;d<h.length;d++)if(this.graph.isCellMovable(h[d])){var k=
-this.graph.view.getState(h[d]),l=this.graph.getCellGeometry(h[d]);null!=k&&null!=l&&(l=l.clone(),l.translate(f,g),this.graph.model.setGeometry(h[d],l))}}finally{this.graph.model.endUpdate()}}else f=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f,b.getEvent());b.consume()}}};mxRubberband.prototype.mouseMove=function(a,b){if(!b.isConsumed()&&null!=this.first){var d=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);d.x-=c.x;d.y-=c.y;
+null!=this.currentY&&(c=this.first.x,e=this.first.y,f=(this.currentX-c)/this.graph.view.scale,g=(this.currentY-e)/this.graph.view.scale,mxEvent.isAltDown(b.getEvent())||(f=this.graph.snap(f),g=this.graph.snap(g),this.graph.isGridEnabled()||(Math.abs(f)<this.graph.tolerance&&(f=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(d){if(this.isSpaceEvent(b)){this.graph.model.beginUpdate();try{for(var k=this.graph.getCellsBeyond(c,e,this.graph.getDefaultParent(),!0,!0),d=0;d<k.length;d++)if(this.graph.isCellMovable(k[d])){var h=
+this.graph.view.getState(k[d]),m=this.graph.getCellGeometry(k[d]);null!=h&&null!=m&&(m=m.clone(),m.translate(f,g),this.graph.model.setGeometry(k[d],m))}}finally{this.graph.model.endUpdate()}}else f=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(f,b.getEvent());b.consume()}}};mxRubberband.prototype.mouseMove=function(a,b){if(!b.isConsumed()&&null!=this.first){var d=mxUtils.getScrollOrigin(this.graph.container),c=mxUtils.getOffset(this.graph.container);d.x-=c.x;d.y-=c.y;
var c=b.getX()+d.x,d=b.getY()+d.y,e=this.first.x-c,f=this.first.y-d,g=this.graph.tolerance;if(null!=this.div||Math.abs(e)>g||Math.abs(f)>g)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(c,d),this.isSpaceEvent(b)?(c=this.x+this.width,d=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(b.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=
0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=c-this.width),this.y<this.first.y&&(this.y=d-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),
@@ -3081,9 +3081,9 @@ this.addUnitInput(w,this.getUnit(),87,52,function(){m.apply(this,arguments)},thi
e.height)l.style.display="none";else{l.style.display="";if(f||document.activeElement!=p)p.value=this.inUnit(e.width)+(""==e.width?"":" "+this.getUnit());if(f||document.activeElement!=q)q.value=this.inUnit(e.height)+(""==e.height?"":" "+this.getUnit())}if(e.vertices.length==d.getSelectionCount()&&null!=e.x&&null!=e.y){w.style.display="";if(f||document.activeElement!=x)x.value=this.inUnit(e.x)+(""==e.x?"":" "+this.getUnit());if(f||document.activeElement!=y)y.value=this.inUnit(e.y)+(""==e.y?"":" "+this.getUnit())}else w.style.display=
"none"});this.addKeyHandler(x,F);this.addKeyHandler(y,F);f.addListener(mxEvent.CHANGE,F);this.listeners.push({destroy:function(){f.removeListener(F)}});F();m=this.addGeometryHandler(x,function(a,d){d=b.fromUnit(d);a.relative?a.offset.x=d:a.x=d});n=this.addGeometryHandler(y,function(a,d){d=b.fromUnit(d);a.relative?a.offset.y=d:a.y=d});if(e.movable){if(0==e.edges.length&&1==e.vertices.length&&f.isEdge(f.getParent(e.vertices[0]))){var H=d.getCellGeometry(e.vertices[0]);null!=H&&H.relative&&(k=mxUtils.button(mxResources.get("center"),
mxUtils.bind(this,function(a){f.beginUpdate();try{H=H.clone(),H.x=0,H.y=0,H.offset=new mxPoint,f.setGeometry(e.vertices[0],H)}finally{f.endUpdate()}})),k.setAttribute("title",mxResources.get("center")),k.style.width="210px",k.style.position="absolute",mxUtils.br(w),mxUtils.br(w),w.appendChild(k))}a.appendChild(w)}};
-ArrangePanel.prototype.addGeometryHandler=function(a,b){function c(c){if(""!=a.value){var h=parseFloat(a.value);if(isNaN(h))a.value=e+" "+l.getUnit();else if(h!=e){f.getModel().beginUpdate();try{for(var g=d.getSelectionState().cells,k=0;k<g.length;k++)if(f.getModel().isVertex(g[k])){var n=f.getCellGeometry(g[k]);if(null!=n&&(n=n.clone(),!b(n,h,g[k]))){var p=f.view.getState(g[k]);null!=p&&f.isRecursiveVertexResize(p)&&f.resizeChildCells(g[k],n);f.getModel().setGeometry(g[k],n);f.constrainChildCells(g[k])}}}finally{f.getModel().endUpdate()}e=
-h;a.value=h+" "+l.getUnit()}}mxEvent.consume(c)}var d=this.editorUi,f=d.editor.graph,e=null,l=this;mxEvent.addListener(a,"blur",c);mxEvent.addListener(a,"change",c);mxEvent.addListener(a,"focus",function(){e=a.value});return c};
-ArrangePanel.prototype.addEdgeGeometryHandler=function(a,b){function c(c){if(""!=a.value){var k=parseFloat(a.value);if(isNaN(k))a.value=e+" pt";else if(k!=e){f.getModel().beginUpdate();try{for(var h=d.getSelectionState().cells,g=0;g<h.length;g++)if(f.getModel().isEdge(h[g])){var l=f.getCellGeometry(h[g]);null!=l&&(l=l.clone(),b(l,k),f.getModel().setGeometry(h[g],l))}}finally{f.getModel().endUpdate()}e=k;a.value=k+" pt"}}mxEvent.consume(c)}var d=this.editorUi,f=d.editor.graph,e=null;mxEvent.addListener(a,
+ArrangePanel.prototype.addGeometryHandler=function(a,b){function c(c){if(""!=a.value){var k=parseFloat(a.value);if(isNaN(k))a.value=e+" "+l.getUnit();else if(k!=e){f.getModel().beginUpdate();try{for(var g=d.getSelectionState().cells,m=0;m<g.length;m++)if(f.getModel().isVertex(g[m])){var n=f.getCellGeometry(g[m]);if(null!=n&&(n=n.clone(),!b(n,k,g[m]))){var p=f.view.getState(g[m]);null!=p&&f.isRecursiveVertexResize(p)&&f.resizeChildCells(g[m],n);f.getModel().setGeometry(g[m],n);f.constrainChildCells(g[m])}}}finally{f.getModel().endUpdate()}e=
+k;a.value=k+" "+l.getUnit()}}mxEvent.consume(c)}var d=this.editorUi,f=d.editor.graph,e=null,l=this;mxEvent.addListener(a,"blur",c);mxEvent.addListener(a,"change",c);mxEvent.addListener(a,"focus",function(){e=a.value});return c};
+ArrangePanel.prototype.addEdgeGeometryHandler=function(a,b){function c(c){if(""!=a.value){var k=parseFloat(a.value);if(isNaN(k))a.value=e+" pt";else if(k!=e){f.getModel().beginUpdate();try{for(var h=d.getSelectionState().cells,g=0;g<h.length;g++)if(f.getModel().isEdge(h[g])){var m=f.getCellGeometry(h[g]);null!=m&&(m=m.clone(),b(m,k),f.getModel().setGeometry(h[g],m))}}finally{f.getModel().endUpdate()}e=k;a.value=k+" pt"}}mxEvent.consume(c)}var d=this.editorUi,f=d.editor.graph,e=null;mxEvent.addListener(a,
"blur",c);mxEvent.addListener(a,"change",c);mxEvent.addListener(a,"focus",function(){e=a.value});return c};
ArrangePanel.prototype.addEdgeGeometry=function(a){var b=this.editorUi,c=b.editor.graph,d=b.getSelectionState(),f=this.createPanel(),e=document.createElement("div");e.style.position="absolute";e.style.width="70px";e.style.marginTop="0px";e.style.fontWeight="bold";mxUtils.write(e,mxResources.get("width"));f.appendChild(e);var l,k,h,g,m,n=this.addUnitInput(f,"pt",12,44,function(){l.apply(this,arguments)});mxUtils.br(f);this.addKeyHandler(n,x);l=mxUtils.bind(this,function(a){var e=parseInt(n.value),
e=Math.min(999,Math.max(1,isNaN(e)?1:e));if(e!=mxUtils.getValue(d.style,"width",mxCellRenderer.defaultShapes.flexArrow.prototype.defaultWidth)){var f=b.getSelectionState().cells;c.setCellStyles("width",e,f);b.fireEvent(new mxEventObject("styleChanged","keys",["width"],"values",[e],"cells",f))}n.value=e+" pt";mxEvent.consume(a)});mxEvent.addListener(n,"blur",l);mxEvent.addListener(n,"change",l);a.appendChild(f);var p=this.createPanel();p.style.paddingBottom="30px";e=document.createElement("div");e.style.position=
@@ -3141,19 +3141,19 @@ mxConstants.ALIGN_BOTTOM?"bottomLeft":a==mxConstants.ALIGN_CENTER&&d==mxConstant
"automatic");if(e||document.activeElement!=ra)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING,2)),ra.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=na)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_TOP,0)),na.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=ia)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_RIGHT,0)),ia.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=ha)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_BOTTOM,
0)),ha.value=isNaN(a)?"":a+" pt";if(e||document.activeElement!=la)a=parseFloat(mxUtils.getValue(f.style,mxConstants.STYLE_SPACING_LEFT,0)),la.value=isNaN(a)?"":a+" pt"});qa=this.installInputHandler(ra,mxConstants.STYLE_SPACING,2,-999,999," pt");ta=this.installInputHandler(na,mxConstants.STYLE_SPACING_TOP,0,-999,999," pt");va=this.installInputHandler(ia,mxConstants.STYLE_SPACING_RIGHT,0,-999,999," pt");pa=this.installInputHandler(ha,mxConstants.STYLE_SPACING_BOTTOM,0,-999,999," pt");fa=this.installInputHandler(la,
mxConstants.STYLE_SPACING_LEFT,0,-999,999," pt");this.addKeyHandler(N,ea);this.addKeyHandler(ra,ea);this.addKeyHandler(na,ea);this.addKeyHandler(ia,ea);this.addKeyHandler(ha,ea);this.addKeyHandler(la,ea);d.getModel().addListener(mxEvent.CHANGE,ea);this.listeners.push({destroy:function(){d.getModel().removeListener(ea)}});ea();if(d.cellEditor.isContentEditing()){var ka=!1,e=function(){ka||(ka=!0,window.setTimeout(function(){var a=d.getSelectedEditingElement();if(null!=a){var c=function(a,b){if(null!=
-a&&null!=b){if(a==b)return!0;if(a.length>b.length+1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},e=function(b){if(null!=d.getParentByName(a,b,d.cellEditor.textarea))return!0;for(var c=a;null!=c&&1==c.childNodes.length;)if(c=c.childNodes[0],c.nodeName==b)return!0;return!1},k=function(a){a=null!=a?a.fontSize:null;return null!=a&&"px"==a.substring(a.length-2)?parseFloat(a):mxConstants.DEFAULT_FONTSIZE},l=function(a,b,d){return null!=d.style&&null!=b?(b=b.lineHeight,null!=d.style.lineHeight&&
-"%"==d.style.lineHeight.substring(d.style.lineHeight.length-1)?parseInt(d.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""},m=mxUtils.getCurrentStyle(a),n=k(m),p=l(n,m,a),t=a.getElementsByTagName("*");if(0<t.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var w=window.getSelection(),y=0;y<t.length;y++)if(w.containsNode(t[y],!0)){temp=mxUtils.getCurrentStyle(t[y]);var n=Math.max(k(temp),n),x=l(n,temp,t[y]);if(x!=p||isNaN(x))p=""}null!=m&&(b(g[0],
-"bold"==m.fontWeight||400<m.fontWeight||e("B")||e("STRONG")),b(g[1],"italic"==m.fontStyle||e("I")||e("EM")),b(g[2],e("U")),b(H,e("SUP")),b(F,e("SUB")),d.cellEditor.isTableSelected()?(b(C,c(m.textAlign,"justify")),b(q,c(m.textAlign,"left")),b(r,c(m.textAlign,"center")),b(u,c(m.textAlign,"right"))):(e=d.cellEditor.align||mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),c(m.textAlign,"justify")?(b(C,c(m.textAlign,"justify")),b(q,!1),b(r,!1),b(u,!1)):(b(C,!1),b(q,e==mxConstants.ALIGN_LEFT),
+a&&null!=b){if(a==b)return!0;if(a.length>b.length+1)return a.substring(a.length-b.length-1,a.length)=="-"+b}return!1},e=function(b){if(null!=d.getParentByName(a,b,d.cellEditor.textarea))return!0;for(var c=a;null!=c&&1==c.childNodes.length;)if(c=c.childNodes[0],c.nodeName==b)return!0;return!1},k=function(a){a=null!=a?a.fontSize:null;return null!=a&&"px"==a.substring(a.length-2)?parseFloat(a):mxConstants.DEFAULT_FONTSIZE},m=function(a,b,d){return null!=d.style&&null!=b?(b=b.lineHeight,null!=d.style.lineHeight&&
+"%"==d.style.lineHeight.substring(d.style.lineHeight.length-1)?parseInt(d.style.lineHeight)/100:"px"==b.substring(b.length-2)?parseFloat(b)/a:parseInt(b)):""},l=mxUtils.getCurrentStyle(a),n=k(l),p=m(n,l,a),t=a.getElementsByTagName("*");if(0<t.length&&window.getSelection&&!mxClient.IS_IE&&!mxClient.IS_IE11)for(var w=window.getSelection(),y=0;y<t.length;y++)if(w.containsNode(t[y],!0)){temp=mxUtils.getCurrentStyle(t[y]);var n=Math.max(k(temp),n),x=m(n,temp,t[y]);if(x!=p||isNaN(x))p=""}null!=l&&(b(g[0],
+"bold"==l.fontWeight||400<l.fontWeight||e("B")||e("STRONG")),b(g[1],"italic"==l.fontStyle||e("I")||e("EM")),b(g[2],e("U")),b(H,e("SUP")),b(F,e("SUB")),d.cellEditor.isTableSelected()?(b(C,c(l.textAlign,"justify")),b(q,c(l.textAlign,"left")),b(r,c(l.textAlign,"center")),b(u,c(l.textAlign,"right"))):(e=d.cellEditor.align||mxUtils.getValue(f.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),c(l.textAlign,"justify")?(b(C,c(l.textAlign,"justify")),b(q,!1),b(r,!1),b(u,!1)):(b(C,!1),b(q,e==mxConstants.ALIGN_LEFT),
b(r,e==mxConstants.ALIGN_CENTER),b(u,e==mxConstants.ALIGN_RIGHT))),z=d.getParentByName(a,"TABLE",d.cellEditor.textarea),J=null==z?null:d.getParentByName(a,"TR",z),G=null==z?null:d.getParentByNames(a,["TD","TH"],z),E.style.display=null!=z?"":"none",document.activeElement!=N&&("FONT"==a.nodeName&&"4"==a.getAttribute("size")&&null!=R?(a.removeAttribute("size"),a.style.fontSize=R+" pt",R=null):N.value=isNaN(n)?"":n+" pt",x=parseFloat(p),isNaN(x)?ja.value="100 %":ja.value=Math.round(100*x)+" %"),null!=
-aa&&(W="rgba(0, 0, 0, 0)"==m.color||"transparent"==m.color?mxConstants.NONE:mxUtils.rgba2hex(m.color),aa(W,!0)),null!=V&&(Z="rgba(0, 0, 0, 0)"==m.backgroundColor||"transparent"==m.backgroundColor?mxConstants.NONE:mxUtils.rgba2hex(m.backgroundColor),V(Z,!0)),null!=h.firstChild&&(h.firstChild.nodeValue=Graph.stripQuotes(m.fontFamily)))}ka=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(d.cellEditor.textarea,"DOMSubtreeModified",e);mxEvent.addListener(d.cellEditor.textarea,
+aa&&(W="rgba(0, 0, 0, 0)"==l.color||"transparent"==l.color?mxConstants.NONE:mxUtils.rgba2hex(l.color),aa(W,!0)),null!=V&&(Z="rgba(0, 0, 0, 0)"==l.backgroundColor||"transparent"==l.backgroundColor?mxConstants.NONE:mxUtils.rgba2hex(l.backgroundColor),V(Z,!0)),null!=h.firstChild&&(h.firstChild.nodeValue=Graph.stripQuotes(l.fontFamily)))}ka=!1},0))};(mxClient.IS_FF||mxClient.IS_EDGE||mxClient.IS_IE||mxClient.IS_IE11)&&mxEvent.addListener(d.cellEditor.textarea,"DOMSubtreeModified",e);mxEvent.addListener(d.cellEditor.textarea,
"input",e);mxEvent.addListener(d.cellEditor.textarea,"touchend",e);mxEvent.addListener(d.cellEditor.textarea,"mouseup",e);mxEvent.addListener(d.cellEditor.textarea,"keyup",e);this.listeners.push({destroy:function(){}});e()}return a};StyleFormatPanel=function(a,b,c){BaseFormatPanel.call(this,a,b,c);this.init()};mxUtils.extend(StyleFormatPanel,BaseFormatPanel);StyleFormatPanel.prototype.defaultStrokeColor="black";
StyleFormatPanel.prototype.init=function(){var a=this.editorUi.getSelectionState();!a.containsLabel&&0<a.cells.length&&(a.containsImage&&1==a.vertices.length&&"image"==a.style.shape&&null!=a.style.image&&"data:image/svg+xml;"==a.style.image.substring(0,19)&&this.container.appendChild(this.addSvgStyles(this.createPanel())),a.fill&&this.container.appendChild(this.addFill(this.createPanel())),this.container.appendChild(this.addStroke(this.createPanel())),this.container.appendChild(this.addLineJumps(this.createPanel())),
a=this.createRelativeOption(mxResources.get("opacity"),mxConstants.STYLE_OPACITY),a.style.paddingTop="8px",a.style.paddingBottom="8px",this.container.appendChild(a),this.container.appendChild(this.addEffects(this.createPanel())));a=this.addEditOps(this.createPanel());null!=a.firstChild&&mxUtils.br(a);this.container.appendChild(this.addStyleOps(a))};
StyleFormatPanel.prototype.getCssRules=function(a){var b=document.implementation.createHTMLDocument(""),c=document.createElement("style");mxUtils.setTextContent(c,a);b.body.appendChild(c);return c.sheet.cssRules};
StyleFormatPanel.prototype.addSvgStyles=function(a){var b=this.editorUi.getSelectionState();a.style.paddingTop="6px";a.style.paddingBottom="6px";a.style.fontWeight="bold";a.style.display="none";try{var c=b.style.editableCssRules;if(null!=c){var d=new RegExp(c),f=b.style.image.substring(b.style.image.indexOf(",")+1),e=window.atob?atob(f):Base64.decode(f,!0),l=mxUtils.parseXml(e);if(null!=l)for(var k=l.getElementsByTagName("style"),b=0;b<k.length;b++)for(var h=this.getCssRules(mxUtils.getTextContent(k[b])),
c=0;c<h.length;c++)this.addSvgRule(a,h[c],l,k[b],h,c,d)}}catch(g){}return a};
-StyleFormatPanel.prototype.addSvgRule=function(a,b,c,d,f,e,l){var k=this.editorUi,h=k.editor.graph;l.test(b.selectorText)&&(l=mxUtils.bind(this,function(b,l,n){var g=mxUtils.trim(b.style[l]);""!=g&&"url("!=g.substring(0,4)&&(b=this.createColorOption(n+" "+b.selectorText,function(){var a=g;return(a=a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===a.length?"#"+("0"+parseInt(a[1],10).toString(16)).slice(-2)+("0"+parseInt(a[2],10).toString(16)).slice(-2)+("0"+parseInt(a[3],
-10).toString(16)).slice(-2):""},mxUtils.bind(this,function(a){f[e].style[l]=a;a="";for(var b=0;b<f.length;b++)a+=f[b].cssText+" ";d.textContent=a;a=mxUtils.getXml(c.documentElement);h.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(a):Base64.encode(a,!0)),k.getSelectionState().cells)}),"#ffffff",{install:function(a){},destroy:function(){}}),a.appendChild(b),a.style.display="")}),l(b,"fill",mxResources.get("fill")),l(b,"stroke",mxResources.get("line")),l(b,"stop-color",
+StyleFormatPanel.prototype.addSvgRule=function(a,b,c,d,f,e,l){var k=this.editorUi,h=k.editor.graph;l.test(b.selectorText)&&(l=mxUtils.bind(this,function(b,m,l){var g=mxUtils.trim(b.style[m]);""!=g&&"url("!=g.substring(0,4)&&(b=this.createColorOption(l+" "+b.selectorText,function(){var a=g;return(a=a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===a.length?"#"+("0"+parseInt(a[1],10).toString(16)).slice(-2)+("0"+parseInt(a[2],10).toString(16)).slice(-2)+("0"+parseInt(a[3],
+10).toString(16)).slice(-2):""},mxUtils.bind(this,function(a){f[e].style[m]=a;a="";for(var b=0;b<f.length;b++)a+=f[b].cssText+" ";d.textContent=a;a=mxUtils.getXml(c.documentElement);h.setCellStyles(mxConstants.STYLE_IMAGE,"data:image/svg+xml,"+(window.btoa?btoa(a):Base64.encode(a,!0)),k.getSelectionState().cells)}),"#ffffff",{install:function(a){},destroy:function(){}}),a.appendChild(b),a.style.display="")}),l(b,"fill",mxResources.get("fill")),l(b,"stroke",mxResources.get("line")),l(b,"stop-color",
mxResources.get("gradient")))};
StyleFormatPanel.prototype.addEditOps=function(a){var b=this.editorUi.getSelectionState(),c=null;1==b.cells.length&&(c=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),c.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),c.style.width="210px",c.style.marginBottom="2px",a.appendChild(c));b.image&&0<b.cells.length&&(b=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,
function(a){this.editorUi.actions.get("image").funct()})),b.setAttribute("title",mxResources.get("editImage")),b.style.marginBottom="2px",null==c?b.style.width="210px":(c.style.width="104px",b.style.width="104px",b.style.marginLeft="2px"),a.appendChild(b));return a};
@@ -3236,11 +3236,11 @@ DiagramStylePanel.prototype.addView=function(a){var b=this.editorUi,c=b.editor.g
n.style.padding="0px";var p=document.createElement("td");p.style.padding="0px";p.style.width="50%";p.setAttribute("valign","middle");var q=p.cloneNode(!0);q.style.paddingLeft="8px";"1"!=urlParams.sketch&&(h.style.paddingBottom="12px",n.appendChild(p),p.appendChild(this.createOption(mxResources.get("sketch"),function(){return e},function(a){(e=a)?(c.currentEdgeStyle.sketch="1",c.currentVertexStyle.sketch="1"):(delete c.currentEdgeStyle.sketch,delete c.currentVertexStyle.sketch);c.updateCellStyles({sketch:a?
"1":null},c.getVerticesAndEdges())},null,function(a){a.style.width="auto"})));n.appendChild(q);m.appendChild(n);g.appendChild(m);q.appendChild(this.createOption(mxResources.get("rounded"),function(){return l},function(a){(l=a)?(c.currentEdgeStyle.rounded="1",c.currentVertexStyle.rounded="1"):(delete c.currentEdgeStyle.rounded,delete c.currentVertexStyle.rounded);c.updateCellStyles({rounded:a?"1":"0"},c.getVerticesAndEdges())},null,function(a){a.style.width="auto"}));"1"!=urlParams.sketch&&(p=p.cloneNode(!1),
q=q.cloneNode(!1),n=n.cloneNode(!1),n.appendChild(p),n.appendChild(q),m.appendChild(n),p.appendChild(this.createOption(mxResources.get("curved"),function(){return k},function(a){(k=a)?c.currentEdgeStyle.curved="1":delete c.currentEdgeStyle.curved;c.updateCellStyles({curved:a?"1":null},c.getVerticesAndEdges(!1,!0))},null,function(a){a.style.width="auto"})));h.appendChild(g);a.appendChild(h);var r=["fillColor","strokeColor","fontColor","gradientColor"],u=mxUtils.bind(this,function(a,b){var e=c.getVerticesAndEdges();
-d.beginUpdate();try{for(var f=0;f<e.length;f++){var g=c.getCellStyle(e[f]);null!=g.labelBackgroundColor&&c.updateCellStyles({labelBackgroundColor:null!=b?b.background:null},[e[f]]);for(var k=d.isEdge(e[f]),h=d.getStyle(e[f]),l=k?c.currentEdgeStyle:c.currentVertexStyle,m=0;m<a.length;m++)if(null!=g[a[m]]&&g[a[m]]!=mxConstants.NONE||a[m]!=mxConstants.STYLE_FILLCOLOR&&a[m]!=mxConstants.STYLE_STROKECOLOR)h=mxUtils.setStyle(h,a[m],l[a[m]]);d.setStyle(e[f],h)}}finally{d.endUpdate()}}),t=mxUtils.bind(this,
+d.beginUpdate();try{for(var f=0;f<e.length;f++){var g=c.getCellStyle(e[f]);null!=g.labelBackgroundColor&&c.updateCellStyles({labelBackgroundColor:null!=b?b.background:null},[e[f]]);for(var k=d.isEdge(e[f]),h=d.getStyle(e[f]),m=k?c.currentEdgeStyle:c.currentVertexStyle,l=0;l<a.length;l++)if(null!=g[a[l]]&&g[a[l]]!=mxConstants.NONE||a[l]!=mxConstants.STYLE_FILLCOLOR&&a[l]!=mxConstants.STYLE_STROKECOLOR)h=mxUtils.setStyle(h,a[l],m[a[l]]);d.setStyle(e[f],h)}}finally{d.endUpdate()}}),t=mxUtils.bind(this,
function(a,b,d){if(null!=a)for(var c=0;c<b.length;c++)if(null!=a[b[c]]&&a[b[c]]!=mxConstants.NONE||b[c]!=mxConstants.STYLE_FILLCOLOR&&b[c]!=mxConstants.STYLE_STROKECOLOR)a[b[c]]=d[b[c]]}),w=mxUtils.bind(this,function(a,b,d,e,f){if(null!=a){null!=d&&null!=b.labelBackgroundColor&&(e=null!=e?e.background:null,f=null!=f?f:c,null==e&&(e=f.background),null==e&&(e=f.defaultPageBackgroundColor),b.labelBackgroundColor=e);for(var g in a)if(null==d||null!=b[g]&&b[g]!=mxConstants.NONE||g!=mxConstants.STYLE_FILLCOLOR&&
g!=mxConstants.STYLE_STROKECOLOR)b[g]=a[g]}});"1"!=urlParams.sketch&&(p=mxUtils.button(mxResources.get("reset"),mxUtils.bind(this,function(a){a=c.getVerticesAndEdges(!0,!0);if(0<a.length){d.beginUpdate();try{c.updateCellStyles({sketch:null,rounded:null},a),c.updateCellStyles({curved:null},c.getVerticesAndEdges(!1,!0))}finally{d.endUpdate()}}b.clearDefaultStyle()})),p.setAttribute("title",mxResources.get("reset")),p.style.textOverflow="ellipsis",p.style.maxWidth="90px",q.appendChild(p));var x=mxUtils.bind(this,
-function(a,b,e,f,g){var k=document.createElement("div");k.style.position="absolute";k.style.display="inline-block";k.style.overflow="hidden";k.style.pointerEvents="none";k.style.width="100%";k.style.height="100%";g.appendChild(k);var h=new Graph(k,null,null,c.getStylesheet());h.resetViewOnRootChange=!1;h.foldingEnabled=!1;h.gridEnabled=!1;h.autoScroll=!1;h.setTooltips(!1);h.setConnectable(!1);h.setPanning(!1);h.setEnabled(!1);h.getCellStyle=function(g,k){k=null!=k?k:!0;var l=mxUtils.clone(c.getCellStyle.apply(this,
-arguments)),m=c.stylesheet.getDefaultVertexStyle(),n=b;d.isEdge(g)&&(m=c.stylesheet.getDefaultEdgeStyle(),n=e);t(l,r,m);w(a,l,g,f,h);w(n,l,g,f,h);k&&(l=c.postProcessCellStyle(g,l));return l};h.model.beginUpdate();try{var l=h.insertVertex(h.getDefaultParent(),null,"Shape",14,8,70,40,"strokeWidth=2;"),m=h.insertEdge(h.getDefaultParent(),null,"Connector",l,l,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");m.geometry.points=[new mxPoint(32,70)];m.geometry.offset=
+function(a,b,e,f,g){var k=document.createElement("div");k.style.position="absolute";k.style.display="inline-block";k.style.overflow="hidden";k.style.pointerEvents="none";k.style.width="100%";k.style.height="100%";g.appendChild(k);var h=new Graph(k,null,null,c.getStylesheet());h.resetViewOnRootChange=!1;h.foldingEnabled=!1;h.gridEnabled=!1;h.autoScroll=!1;h.setTooltips(!1);h.setConnectable(!1);h.setPanning(!1);h.setEnabled(!1);h.getCellStyle=function(g,k){k=null!=k?k:!0;var m=mxUtils.clone(c.getCellStyle.apply(this,
+arguments)),l=c.stylesheet.getDefaultVertexStyle(),n=b;d.isEdge(g)&&(l=c.stylesheet.getDefaultEdgeStyle(),n=e);t(m,r,l);w(a,m,g,f,h);w(n,m,g,f,h);k&&(m=c.postProcessCellStyle(g,m));return m};h.model.beginUpdate();try{var m=h.insertVertex(h.getDefaultParent(),null,"Shape",14,8,70,40,"strokeWidth=2;"),l=h.insertEdge(h.getDefaultParent(),null,"Connector",m,m,"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;endSize=5;strokeWidth=2;");l.geometry.points=[new mxPoint(32,70)];l.geometry.offset=
new mxPoint(0,8)}finally{h.model.endUpdate()}}),y=document.createElement("div");y.style.position="relative";a.appendChild(y);null==this.format.cachedStyleEntries&&(this.format.cachedStyleEntries=[]);var F=mxUtils.bind(this,function(a,g,h,m,n){var p=this.format.cachedStyleEntries[n];null==p&&(p=document.createElement("div"),p.style.display="inline-block",p.style.position="relative",p.style.width="96px",p.style.height="90px",p.style.cursor="pointer",p.style.border="1px solid gray",p.style.borderRadius=
"8px",p.style.margin="2px",p.style.overflow="hidden",null!=m&&null!=m.background&&(p.style.backgroundColor=m.background),x(a,g,h,m,p),mxEvent.addGestureListeners(p,mxUtils.bind(this,function(a){p.style.opacity=.5}),null,mxUtils.bind(this,function(n){p.style.opacity=1;c.currentVertexStyle=mxUtils.clone(c.defaultVertexStyle);c.currentEdgeStyle=mxUtils.clone(c.defaultEdgeStyle);w(a,c.currentVertexStyle);w(a,c.currentEdgeStyle);w(g,c.currentVertexStyle);w(h,c.currentEdgeStyle);"1"==urlParams.sketch&&
(e=Editor.sketchMode);e?(c.currentEdgeStyle.sketch="1",c.currentVertexStyle.sketch="1"):(c.currentEdgeStyle.sketch="0",c.currentVertexStyle.sketch="0");c.currentVertexStyle.rounded=l?"1":"0";c.currentEdgeStyle.rounded="1";c.currentEdgeStyle.curved=k?"1":"0";d.beginUpdate();try{var q=r.slice(),t;for(t in a)q.push(t);u(q,m);var y=new ChangePageSetup(b,null!=m?m.background:null);y.ignoreImage=!0;d.execute(y);d.execute(new ChangeGridColor(b,null!=m&&null!=m.gridColor?m.gridColor:f))}finally{d.endUpdate()}})),
@@ -3272,7 +3272,7 @@ this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,E.proto
function Z(){mxShape.call(this)}function aa(){mxRectangleShape.call(this)}function W(){mxShape.call(this)}function ma(){mxShape.call(this)}function oa(){mxShape.call(this)}function ta(){mxShape.call(this)}function qa(){mxShape.call(this)}function fa(){mxCylinder.call(this)}function pa(){mxCylinder.call(this)}function va(){mxRectangleShape.call(this)}function na(){mxDoubleEllipse.call(this)}function ra(){mxDoubleEllipse.call(this)}function la(){mxArrowConnector.call(this);this.spacing=0}function ha(){mxArrowConnector.call(this);
this.spacing=0}function ia(){mxActor.call(this)}function da(){mxRectangleShape.call(this)}function ja(){mxActor.call(this)}function ea(){mxActor.call(this)}function ka(){mxActor.call(this)}function U(){mxActor.call(this)}function Q(){mxActor.call(this)}function T(){mxActor.call(this)}function ca(){mxActor.call(this)}function X(){mxActor.call(this)}function ga(){mxActor.call(this)}function sa(){mxActor.call(this)}function Ba(){mxEllipse.call(this)}function Ea(){mxEllipse.call(this)}function Fa(){mxEllipse.call(this)}
function Ma(){mxRhombus.call(this)}function Na(){mxEllipse.call(this)}function Oa(){mxEllipse.call(this)}function ya(){mxEllipse.call(this)}function Ga(){mxEllipse.call(this)}function Ha(){mxActor.call(this)}function za(){mxActor.call(this)}function Aa(){mxActor.call(this)}function O(a,b,d,c){mxShape.call(this);this.bounds=a;this.fill=b;this.stroke=d;this.strokewidth=null!=c?c:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function wa(){mxConnector.call(this)}
-function Ra(a,b,d,c,e,f,g,k,h,l){g+=h;var v=c.clone();c.x-=e*(2*g+h);c.y-=f*(2*g+h);e*=g+h;f*=g+h;return function(){a.ellipse(v.x-e-g,v.y-f-g,2*g,2*g);l?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var a=null;if(null!=this.line)for(var b=0;b<this.line.length;b++){var d=this.line[b];null!=d&&(d=new mxRectangle(d.x,d.y,this.strokewidth,this.strokewidth),null==a?a=d:a.add(d))}this.bounds=null!=a?a:new mxRectangle};a.prototype.paintVertexShape=function(a,
+function Ra(a,b,d,c,e,f,g,k,h,m){g+=h;var v=c.clone();c.x-=e*(2*g+h);c.y-=f*(2*g+h);e*=g+h;f*=g+h;return function(){a.ellipse(v.x-e-g,v.y-f-g,2*g,2*g);m?a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxShape);a.prototype.updateBoundsFromLine=function(){var a=null;if(null!=this.line)for(var b=0;b<this.line.length;b++){var d=this.line[b];null!=d&&(d=new mxRectangle(d.x,d.y,this.strokewidth,this.strokewidth),null==a?a=d:a.add(d))}this.bounds=null!=a?a:new mxRectangle};a.prototype.paintVertexShape=function(a,
b,d,c,e){this.paintTableLine(a,this.line,0,0)};a.prototype.paintTableLine=function(a,b,d,c){if(null!=b){var e=null;a.begin();for(var v=0;v<b.length;v++){var f=b[v];null!=f&&(null==e?a.moveTo(f.x+d,f.y+c):null!=e&&a.lineTo(f.x+d,f.y+c));e=f}a.end();a.stroke()}};a.prototype.intersectsRectangle=function(a){var b=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var d=null,c=0;c<this.line.length&&!b;c++){var e=this.line[c];null!=e&&null!=d&&(b=mxUtils.rectangleIntersectsSegment(a,
d,e));d=e}return b};mxCellRenderer.registerShape("tableLine",a);mxUtils.extend(b,mxSwimlane);b.prototype.getLabelBounds=function(a){return 0==this.getTitleSize()?mxShape.prototype.getLabelBounds.apply(this,arguments):mxSwimlane.prototype.getLabelBounds.apply(this,arguments)};b.prototype.paintVertexShape=function(a,b,d,c,e){var v=null!=this.state?this.state.view.graph.isCellCollapsed(this.state.cell):!1,f=this.isHorizontal(),g=this.getTitleSize();0==g||this.outline?ya.prototype.paintVertexShape.apply(this,
arguments):(mxSwimlane.prototype.paintVertexShape.apply(this,arguments),a.translate(-b,-d));v||this.outline||!(f&&g<e||!f&&g<c)||this.paintForeground(a,b,d,c,e)};b.prototype.paintForeground=function(a,b,d,c,e){if(null!=this.state){var v=this.flipH,f=this.flipV;if(this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH)var g=v,v=f,f=g;a.rotate(-this.getShapeRotation(),v,f,b+c/2,d+e/2);s=this.scale;b=this.bounds.x/s;d=this.bounds.y/s;c=this.bounds.width/s;e=this.bounds.height/
@@ -3326,8 +3326,8 @@ mxUtils.extend(M,mxHexagon);M.prototype.size=.25;M.prototype.fixedSize=20;M.prot
0),new mxPoint(c-b,0),new mxPoint(c,.5*e),new mxPoint(c-b,e),new mxPoint(b,e),new mxPoint(0,.5*e)],this.isRounded,d,!0)};mxCellRenderer.registerShape("hexagon",M);mxUtils.extend(K,mxRectangleShape);K.prototype.isHtmlAllowed=function(){return!1};K.prototype.paintForeground=function(a,b,d,c,e){var f=Math.min(c/5,e/5)+1;a.begin();a.moveTo(b+c/2,d+f);a.lineTo(b+c/2,d+e-f);a.moveTo(b+f,d+e/2);a.lineTo(b+c-f,d+e/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
K);var Xa=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};mxRhombus.prototype.paintVertexShape=function(a,b,d,c,e){Xa.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var f=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||
0);b+=f;d+=f;c-=2*f;e-=2*f;0<c&&0<e&&(a.setShadow(!1),Xa.apply(this,[a,b,d,c,e]))}};mxUtils.extend(P,mxRectangleShape);P.prototype.isHtmlAllowed=function(){return!1};P.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var b=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+b,a.y+b,a.width-2*b,a.height-2*b)}return a};P.prototype.paintForeground=function(a,b,d,c,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var f=
-Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;d+=f;c-=2*f;e-=2*f;0<c&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,v;do{v=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=v){var g=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],h=this.style["symbol"+f+"Width"],l=this.style["symbol"+f+"Height"],m=this.style["symbol"+f+"Spacing"]||0,B=this.style["symbol"+f+"VSpacing"]||m,D=
-this.style["symbol"+f+"ArcSpacing"];null!=D&&(D*=this.getArcSize(c+this.strokewidth,e+this.strokewidth),m+=D,B+=D);var D=b,A=d,D=g==mxConstants.ALIGN_CENTER?D+(c-h)/2:g==mxConstants.ALIGN_RIGHT?D+(c-h-m):D+m,A=k==mxConstants.ALIGN_MIDDLE?A+(e-l)/2:k==mxConstants.ALIGN_BOTTOM?A+(e-l-B):A+B;a.save();g=new v;g.style=this.style;v.prototype.paintVertexShape.call(g,a,D,A,h,l);a.restore()}f++}while(null!=v)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
+Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);b+=f;d+=f;c-=2*f;e-=2*f;0<c&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var f=0,v;do{v=mxCellRenderer.defaultShapes[this.style["symbol"+f]];if(null!=v){var g=this.style["symbol"+f+"Align"],k=this.style["symbol"+f+"VerticalAlign"],h=this.style["symbol"+f+"Width"],m=this.style["symbol"+f+"Height"],l=this.style["symbol"+f+"Spacing"]||0,B=this.style["symbol"+f+"VSpacing"]||l,D=
+this.style["symbol"+f+"ArcSpacing"];null!=D&&(D*=this.getArcSize(c+this.strokewidth,e+this.strokewidth),l+=D,B+=D);var D=b,A=d,D=g==mxConstants.ALIGN_CENTER?D+(c-h)/2:g==mxConstants.ALIGN_RIGHT?D+(c-h-l):D+l,A=k==mxConstants.ALIGN_MIDDLE?A+(e-m)/2:k==mxConstants.ALIGN_BOTTOM?A+(e-m-B):A+B;a.save();g=new v;g.style=this.style;v.prototype.paintVertexShape.call(g,a,D,A,h,m);a.restore()}f++}while(null!=v)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
P);mxUtils.extend(ba,mxCylinder);ba.prototype.redrawPath=function(a,b,d,c,e,f){f?(a.moveTo(0,0),a.lineTo(c/2,e/2),a.lineTo(c,0),a.end()):(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,e),a.lineTo(0,e),a.close())};mxCellRenderer.registerShape("message",ba);mxUtils.extend(Y,mxShape);Y.prototype.paintBackground=function(a,b,d,c,e){a.translate(b,d);a.ellipse(c/4,0,c/2,e/4);a.fillAndStroke();a.begin();a.moveTo(c/2,e/4);a.lineTo(c/2,2*e/3);a.moveTo(c/2,e/3);a.lineTo(0,e/3);a.moveTo(c/2,e/3);a.lineTo(c,e/3);a.moveTo(c/
2,2*e/3);a.lineTo(0,e);a.moveTo(c/2,2*e/3);a.lineTo(c,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",Y);mxUtils.extend(N,mxShape);N.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};N.prototype.paintBackground=function(a,b,d,c,e){a.translate(b,d);a.begin();a.moveTo(0,e/4);a.lineTo(0,3*e/4);a.end();a.stroke();a.begin();a.moveTo(0,e/2);a.lineTo(c/6,e/2);a.end();a.stroke();a.ellipse(c/6,0,5*c/6,e);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
N);mxUtils.extend(R,mxEllipse);R.prototype.paintVertexShape=function(a,b,d,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(b+c/8,d+e);a.lineTo(b+7*c/8,d+e);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",R);mxUtils.extend(V,mxShape);V.prototype.paintVertexShape=function(a,b,d,c,e){a.translate(b,d);a.begin();a.moveTo(c,0);a.lineTo(0,e);a.moveTo(0,0);a.lineTo(c,e);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",V);mxUtils.extend(Z,mxShape);
@@ -3344,12 +3344,12 @@ b,d,c){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?y.prototype.fixe
k,g+h),new mxPoint(v,g+h-e),new mxPoint(v,g)]):(e=e?Math.max(0,Math.min(.5*k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v+e,g),new mxPoint(v+k,g),new mxPoint(v+k-e,g+h),new mxPoint(v,g+h),new mxPoint(v+e,g)]);h=a.getCenterX();a=a.getCenterY();a=new mxPoint(h,a);c&&(d.x<v||d.x>v+k?a.y=d.y:a.x=d.x);return mxUtils.getPerimeterPoint(g,a,d)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,b,d,c){var e="0"!=mxUtils.getValue(b.style,
"fixedSize","0"),f=e?F.prototype.fixedSize:F.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(.5*k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v+e,g),new mxPoint(v+k-e,g),new mxPoint(v+k,g+h),new mxPoint(v,g+h),new mxPoint(v+e,g)]):b==mxConstants.DIRECTION_WEST?
(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(v+k,g),new mxPoint(v+k-e,g+h),new mxPoint(v+e,g+h),new mxPoint(v,g)]):b==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g+e),new mxPoint(v+k,g),new mxPoint(v+k,g+h),new mxPoint(v,g+h-e),new mxPoint(v,g+e)]):(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(v+k,g+e),new mxPoint(v+k,g+h-e),new mxPoint(v,g+h),new mxPoint(v,
-g)]);h=a.getCenterX();a=a.getCenterY();a=new mxPoint(h,a);c&&(d.x<v||d.x>v+k?a.y=d.y:a.x=d.x);return mxUtils.getPerimeterPoint(g,a,d)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,d,c){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?L.prototype.fixedSize:L.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=
+g)]);h=a.getCenterX();a=a.getCenterY();a=new mxPoint(h,a);c&&(d.x<v||d.x>v+k?a.y=d.y:a.x=d.x);return mxUtils.getPerimeterPoint(g,a,d)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,b,d,c){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?L.prototype.fixedSize:L.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height,m=a.getCenterX();a=a.getCenterY();b=null!=
b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(v+k-e,g),new mxPoint(v+k,a),new mxPoint(v+k-e,g+h),new mxPoint(v,g+h),new mxPoint(v+e,a),new mxPoint(v,g)]):b==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v+e,g),new mxPoint(v+k,g),new mxPoint(v+k-e,a),new mxPoint(v+
-k,g+h),new mxPoint(v+e,g+h),new mxPoint(v,a),new mxPoint(v+e,g)]):b==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g+e),new mxPoint(l,g),new mxPoint(v+k,g+e),new mxPoint(v+k,g+h),new mxPoint(l,g+h-e),new mxPoint(v,g+h),new mxPoint(v,g+e)]):(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(l,g+e),new mxPoint(v+k,g),new mxPoint(v+k,g+h-e),new mxPoint(l,g+h),new mxPoint(v,g+h-e),new mxPoint(v,g)]);l=new mxPoint(l,
-a);c&&(d.x<v||d.x>v+k?l.y=d.y:l.x=d.x);return mxUtils.getPerimeterPoint(g,l,d)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,d,c){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?M.prototype.fixedSize:M.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height,l=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
-mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(l,g),new mxPoint(v+k,g+e),new mxPoint(v+k,g+h-e),new mxPoint(l,g+h),new mxPoint(v,g+h-e),new mxPoint(v,g+e),new mxPoint(l,g)]):(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v+e,g),new mxPoint(v+k-e,g),new mxPoint(v+k,a),new mxPoint(v+k-e,g+h),new mxPoint(v+e,g+h),new mxPoint(v,a),new mxPoint(v+e,g)]);l=new mxPoint(l,
-a);c&&(d.x<v||d.x>v+k?l.y=d.y:l.x=d.x);return mxUtils.getPerimeterPoint(g,l,d)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(ma,mxShape);ma.prototype.size=10;ma.prototype.paintBackground=function(a,b,d,c,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,d);a.ellipse((c-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(c/2,f);a.lineTo(c/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",ma);mxUtils.extend(oa,
+k,g+h),new mxPoint(v+e,g+h),new mxPoint(v,a),new mxPoint(v+e,g)]):b==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g+e),new mxPoint(m,g),new mxPoint(v+k,g+e),new mxPoint(v+k,g+h),new mxPoint(m,g+h-e),new mxPoint(v,g+h),new mxPoint(v,g+e)]):(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(v,g),new mxPoint(m,g+e),new mxPoint(v+k,g),new mxPoint(v+k,g+h-e),new mxPoint(m,g+h),new mxPoint(v,g+h-e),new mxPoint(v,g)]);m=new mxPoint(m,
+a);c&&(d.x<v||d.x>v+k?m.y=d.y:m.x=d.x);return mxUtils.getPerimeterPoint(g,m,d)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,b,d,c){var e="0"!=mxUtils.getValue(b.style,"fixedSize","0"),f=e?M.prototype.fixedSize:M.prototype.size;null!=b&&(f=mxUtils.getValue(b.style,"size",f));e&&(f*=b.view.scale);var v=a.x,g=a.y,k=a.width,h=a.height,m=a.getCenterX();a=a.getCenterY();b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
+mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(h,f)):h*Math.max(0,Math.min(1,f)),g=[new mxPoint(m,g),new mxPoint(v+k,g+e),new mxPoint(v+k,g+h-e),new mxPoint(m,g+h),new mxPoint(v,g+h-e),new mxPoint(v,g+e),new mxPoint(m,g)]):(e=e?Math.max(0,Math.min(k,f)):k*Math.max(0,Math.min(1,f)),g=[new mxPoint(v+e,g),new mxPoint(v+k-e,g),new mxPoint(v+k,a),new mxPoint(v+k-e,g+h),new mxPoint(v+e,g+h),new mxPoint(v,a),new mxPoint(v+e,g)]);m=new mxPoint(m,
+a);c&&(d.x<v||d.x>v+k?m.y=d.y:m.x=d.x);return mxUtils.getPerimeterPoint(g,m,d)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(ma,mxShape);ma.prototype.size=10;ma.prototype.paintBackground=function(a,b,d,c,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(b,d);a.ellipse((c-f)/2,0,f,f);a.fillAndStroke();a.begin();a.moveTo(c/2,f);a.lineTo(c/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",ma);mxUtils.extend(oa,
mxShape);oa.prototype.size=10;oa.prototype.inset=2;oa.prototype.paintBackground=function(a,b,d,c,e){var f=parseFloat(mxUtils.getValue(this.style,"size",this.size)),v=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,d);a.begin();a.moveTo(c/2,f+v);a.lineTo(c/2,e);a.end();a.stroke();a.begin();a.moveTo((c-f)/2-v,f/2);a.quadTo((c-f)/2-v,f+v,c/2,f+v);a.quadTo((c+f)/2+v,f+v,(c+f)/2+v,f/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",oa);mxUtils.extend(ta,
mxShape);ta.prototype.paintBackground=function(a,b,d,c,e){a.translate(b,d);a.begin();a.moveTo(0,0);a.quadTo(c,0,c,e/2);a.quadTo(c,e,0,e);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",ta);mxUtils.extend(qa,mxShape);qa.prototype.inset=2;qa.prototype.paintBackground=function(a,b,d,c,e){var f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(b,d);a.ellipse(0,f,c-2*f,e-2*f);a.fillAndStroke();a.begin();a.moveTo(c/2,0);a.quadTo(c,0,c,e/2);a.quadTo(c,
e,c/2,e);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",qa);mxUtils.extend(fa,mxCylinder);fa.prototype.jettyWidth=20;fa.prototype.jettyHeight=10;fa.prototype.redrawPath=function(a,b,d,c,e,f){var v=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));b=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));d=v/2;var v=d+v/2,g=Math.min(b,e-b),k=Math.min(g+2*b,e-b);f?(a.moveTo(d,g),a.lineTo(v,g),a.lineTo(v,g+b),a.lineTo(d,g+b),a.moveTo(d,
@@ -3364,9 +3364,9 @@ Math.max(f,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));f=
"dx",this.dx))));d=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,d),new mxPoint(b,d),new mxPoint(b,e),new mxPoint(0,e)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("corner",ja);mxUtils.extend(ea,mxActor);ea.prototype.redrawPath=function(a,b,d,
c,e){a.moveTo(0,0);a.lineTo(0,e);a.end();a.moveTo(c,0);a.lineTo(c,e);a.end();a.moveTo(0,e/2);a.lineTo(c,e/2);a.end()};mxCellRenderer.registerShape("crossbar",ea);mxUtils.extend(ka,mxActor);ka.prototype.dx=20;ka.prototype.dy=20;ka.prototype.redrawPath=function(a,b,d,c,e){b=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));d=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var f=mxUtils.getValue(this.style,
mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,d),new mxPoint((c+b)/2,d),new mxPoint((c+b)/2,e),new mxPoint((c-b)/2,e),new mxPoint((c-b)/2,d),new mxPoint(0,d)],this.isRounded,f,!0);a.end()};mxCellRenderer.registerShape("tee",ka);mxUtils.extend(U,mxActor);U.prototype.arrowWidth=.3;U.prototype.arrowSize=.2;U.prototype.redrawPath=function(a,b,d,c,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
-this.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));d=(e-f)/2;var f=d+f,v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(c-b,d),new mxPoint(c-b,0),new mxPoint(c,e/2),new mxPoint(c-b,e),new mxPoint(c-b,f),new mxPoint(0,f)],this.isRounded,v,!0);a.end()};mxCellRenderer.registerShape("singleArrow",U);mxUtils.extend(Q,mxActor);Q.prototype.redrawPath=function(a,
-b,d,c,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",U.prototype.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",U.prototype.arrowSize))));d=(e-f)/2;var f=d+f,v=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,d),new mxPoint(c-b,d),new mxPoint(c-b,0),new mxPoint(c,e/2),new mxPoint(c-b,e),new mxPoint(c-b,f),new mxPoint(b,
-f),new mxPoint(b,e)],this.isRounded,v,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",Q);mxUtils.extend(T,mxActor);T.prototype.size=.1;T.prototype.fixedSize=20;T.prototype.redrawPath=function(a,b,d,c,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(c,0);a.quadTo(c-2*b,e/2,c,e);a.lineTo(b,e);a.quadTo(b-
+this.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));d=(e-f)/2;var f=d+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(c-b,d),new mxPoint(c-b,0),new mxPoint(c,e/2),new mxPoint(c-b,e),new mxPoint(c-b,f),new mxPoint(0,f)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",U);mxUtils.extend(Q,mxActor);Q.prototype.redrawPath=function(a,
+b,d,c,e){var f=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",U.prototype.arrowWidth))));b=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",U.prototype.arrowSize))));d=(e-f)/2;var f=d+f,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,e/2),new mxPoint(b,0),new mxPoint(b,d),new mxPoint(c-b,d),new mxPoint(c-b,0),new mxPoint(c,e/2),new mxPoint(c-b,e),new mxPoint(c-b,f),new mxPoint(b,
+f),new mxPoint(b,e)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",Q);mxUtils.extend(T,mxActor);T.prototype.size=.1;T.prototype.fixedSize=20;T.prototype.redrawPath=function(a,b,d,c,e){b="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(b,0);a.lineTo(c,0);a.quadTo(c-2*b,e/2,c,e);a.lineTo(b,e);a.quadTo(b-
2*b,e/2,b,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",T);mxUtils.extend(ca,mxActor);ca.prototype.redrawPath=function(a,b,d,c,e){a.moveTo(0,0);a.quadTo(c,0,c,e/2);a.quadTo(c,e,0,e);a.close();a.end()};mxCellRenderer.registerShape("or",ca);mxUtils.extend(X,mxActor);X.prototype.redrawPath=function(a,b,d,c,e){a.moveTo(0,0);a.quadTo(c,0,c,e/2);a.quadTo(c,e,0,e);a.quadTo(c/2,e/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",X);mxUtils.extend(ga,mxActor);ga.prototype.size=
20;ga.prototype.isRoundable=function(){return!0};ga.prototype.redrawPath=function(a,b,d,c,e){b=Math.min(c/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(b,0),new mxPoint(c-b,0),new mxPoint(c,.8*b),new mxPoint(c,e),new mxPoint(0,e),new mxPoint(0,.8*b)],this.isRounded,d,!0);a.end()};mxCellRenderer.registerShape("loopLimit",ga);mxUtils.extend(sa,mxActor);sa.prototype.size=
.375;sa.prototype.isRoundable=function(){return!0};sa.prototype.redrawPath=function(a,b,d,c,e){b=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(c,0),new mxPoint(c,e-b),new mxPoint(c/2,e),new mxPoint(0,e-b)],this.isRounded,d,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",sa);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=
@@ -3374,8 +3374,8 @@ function(a,b,d,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a
Ea);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(a,b,d,c,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(b+.145*c,d+.145*e);a.lineTo(b+.855*c,d+.855*e);a.end();a.stroke();a.begin();a.moveTo(b+.855*c,d+.145*e);a.lineTo(b+.145*c,d+.855*e);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",Fa);mxUtils.extend(Ma,mxRhombus);Ma.prototype.paintVertexShape=function(a,b,d,c,e){mxRhombus.prototype.paintVertexShape.apply(this,
arguments);a.setShadow(!1);a.begin();a.moveTo(b,d+e/2);a.lineTo(b+c,d+e/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",Ma);mxUtils.extend(Na,mxEllipse);Na.prototype.paintVertexShape=function(a,b,d,c,e){a.begin();a.moveTo(b,d);a.lineTo(b+c,d);a.lineTo(b+c/2,d+e/2);a.close();a.fillAndStroke();a.begin();a.moveTo(b,d+e);a.lineTo(b+c,d+e);a.lineTo(b+c/2,d+e/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",Na);mxUtils.extend(Oa,mxEllipse);Oa.prototype.paintVertexShape=
function(a,b,d,c,e){var f=a.state.strokeWidth/2,g=10+2*f,v=d+e-g/2;a.begin();a.moveTo(b,d);a.lineTo(b,d+e);a.moveTo(b+f,v);a.lineTo(b+f+g,v-g/2);a.moveTo(b+f,v);a.lineTo(b+f+g,v+g/2);a.moveTo(b+f,v);a.lineTo(b+c-f,v);a.moveTo(b+c,d);a.lineTo(b+c,d+e);a.moveTo(b+c-f,v);a.lineTo(b+c-g-f,v-g/2);a.moveTo(b+c-f,v);a.lineTo(b+c-g-f,v+g/2);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",Oa);mxUtils.extend(ya,mxEllipse);ya.prototype.drawHidden=!0;ya.prototype.paintVertexShape=function(a,b,d,
-c,e){this.outline||a.setStrokeColor(null);if(null!=this.style){var f=a.pointerEvents,g=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||g||(a.pointerEvents=!1);var v="1"==mxUtils.getValue(this.style,"top","1"),k="1"==mxUtils.getValue(this.style,"left","1"),h="1"==mxUtils.getValue(this.style,"right","1"),l="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||g||this.outline||v||h||l||k?(a.rect(b,d,c,e),a.fill(),a.pointerEvents=
-f,a.setStrokeColor(this.stroke),a.setLineCap("square"),a.begin(),a.moveTo(b,d),this.outline||v?a.lineTo(b+c,d):a.moveTo(b+c,d),this.outline||h?a.lineTo(b+c,d+e):a.moveTo(b+c,d+e),this.outline||l?a.lineTo(b,d+e):a.moveTo(b,d+e),(this.outline||k)&&a.lineTo(b,d),a.end(),a.stroke(),a.setLineCap("flat")):a.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",ya);mxUtils.extend(Ga,mxEllipse);Ga.prototype.paintVertexShape=function(a,b,d,c,e){mxEllipse.prototype.paintVertexShape.apply(this,
+c,e){this.outline||a.setStrokeColor(null);if(null!=this.style){var f=a.pointerEvents,g=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||g||(a.pointerEvents=!1);var v="1"==mxUtils.getValue(this.style,"top","1"),k="1"==mxUtils.getValue(this.style,"left","1"),h="1"==mxUtils.getValue(this.style,"right","1"),m="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||g||this.outline||v||h||m||k?(a.rect(b,d,c,e),a.fill(),a.pointerEvents=
+f,a.setStrokeColor(this.stroke),a.setLineCap("square"),a.begin(),a.moveTo(b,d),this.outline||v?a.lineTo(b+c,d):a.moveTo(b+c,d),this.outline||h?a.lineTo(b+c,d+e):a.moveTo(b+c,d+e),this.outline||m?a.lineTo(b,d+e):a.moveTo(b,d+e),(this.outline||k)&&a.lineTo(b,d),a.end(),a.stroke(),a.setLineCap("flat")):a.setStrokeColor(this.stroke)}};mxCellRenderer.registerShape("partialRectangle",ya);mxUtils.extend(Ga,mxEllipse);Ga.prototype.paintVertexShape=function(a,b,d,c,e){mxEllipse.prototype.paintVertexShape.apply(this,
arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(b+c/2,d),a.lineTo(b+c/2,d+e)):(a.moveTo(b,d+e/2),a.lineTo(b+c,d+e/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",Ga);mxUtils.extend(Ha,mxActor);Ha.prototype.redrawPath=function(a,b,d,c,e){b=Math.min(c,e/2);a.moveTo(0,0);a.lineTo(c-b,0);a.quadTo(c,0,c,e/2);a.quadTo(c,e,c-b,e);a.lineTo(0,e);a.close();a.end()};mxCellRenderer.registerShape("delay",Ha);mxUtils.extend(za,mxActor);za.prototype.size=
.2;za.prototype.redrawPath=function(a,b,d,c,e){b=Math.min(e,c);var f=Math.max(0,Math.min(b,b*parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=(e-f)/2;d=b+f;var g=(c-f)/2,f=g+f;a.moveTo(0,b);a.lineTo(g,b);a.lineTo(g,0);a.lineTo(f,0);a.lineTo(f,b);a.lineTo(c,b);a.lineTo(c,d);a.lineTo(f,d);a.lineTo(f,e);a.lineTo(g,e);a.lineTo(g,d);a.lineTo(0,d);a.close();a.end()};mxCellRenderer.registerShape("cross",za);mxUtils.extend(Aa,mxActor);Aa.prototype.size=.25;Aa.prototype.redrawPath=function(a,
b,d,c,e){b=Math.min(c,e/2);d=Math.min(c-b,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.moveTo(0,e/2);a.lineTo(d,0);a.lineTo(c-b,0);a.quadTo(c,0,c,e/2);a.quadTo(c,e,c-b,e);a.lineTo(d,e);a.close();a.end()};mxCellRenderer.registerShape("display",Aa);mxUtils.extend(O,mxActor);O.prototype.cst={RECT2:"mxgraph.basic.rect"};O.prototype.customProperties=[{name:"rectStyle",dispName:"Style",type:"enum",defVal:"square",enumList:[{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},
@@ -3384,57 +3384,57 @@ type:"color",defVal:"none"},{name:"gradientColor2",dispName:"Inside Gradient Col
{name:"left",dispName:"Left ",type:"bool",defVal:!0},{name:"topLeftStyle",dispName:"Top Left Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"topRightStyle",dispName:"Top Right Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",
dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomRightStyle",dispName:"Bottom Right Style",type:"enum",defVal:"default",enumList:[{val:"default",dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]},{name:"bottomLeftStyle",dispName:"Bottom Left Style",type:"enum",defVal:"default",enumList:[{val:"default",
dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];O.prototype.paintVertexShape=function(a,b,d,c,e){a.translate(b,d);this.strictDrawShape(a,0,0,c,e)};O.prototype.strictDrawShape=function(a,b,d,c,e,f){var g=f&&f.rectStyle?f.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),k=f&&f.absoluteCornerSize?f.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",
-this.absoluteCornerSize),h=f&&f.size?f.size:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),l=f&&f.rectOutline?f.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),m=f&&f.indent?f.indent:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),v=f&&f.dashed?f.dashed:mxUtils.getValue(this.style,"dashed",!1),n=f&&f.dashPattern?f.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),p=f&&f.relIndent?f.relIndent:
-Math.max(0,Math.min(50,m)),q=f&&f.top?f.top:mxUtils.getValue(this.style,"top",!0),D=f&&f.right?f.right:mxUtils.getValue(this.style,"right",!0),B=f&&f.bottom?f.bottom:mxUtils.getValue(this.style,"bottom",!0),A=f&&f.left?f.left:mxUtils.getValue(this.style,"left",!0),r=f&&f.topLeftStyle?f.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),t=f&&f.topRightStyle?f.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),I=f&&f.bottomRightStyle?f.bottomRightStyle:mxUtils.getValue(this.style,
+this.absoluteCornerSize),h=f&&f.size?f.size:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),m=f&&f.rectOutline?f.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),l=f&&f.indent?f.indent:Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),v=f&&f.dashed?f.dashed:mxUtils.getValue(this.style,"dashed",!1),n=f&&f.dashPattern?f.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),p=f&&f.relIndent?f.relIndent:
+Math.max(0,Math.min(50,l)),q=f&&f.top?f.top:mxUtils.getValue(this.style,"top",!0),D=f&&f.right?f.right:mxUtils.getValue(this.style,"right",!0),B=f&&f.bottom?f.bottom:mxUtils.getValue(this.style,"bottom",!0),A=f&&f.left?f.left:mxUtils.getValue(this.style,"left",!0),r=f&&f.topLeftStyle?f.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),t=f&&f.topRightStyle?f.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),I=f&&f.bottomRightStyle?f.bottomRightStyle:mxUtils.getValue(this.style,
"bottomRightStyle","default"),u=f&&f.bottomLeftStyle?f.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),fb=f&&f.fillColor?f.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");f&&f.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var w=f&&f.strokeWidth?f.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),y=f&&f.fillColor2?f.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),x=f&&f.gradientColor2?f.gradientColor2:mxUtils.getValue(this.style,
-"gradientColor2","none"),E=f&&f.gradientDirection2?f.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),z=f&&f.opacity?f.opacity:mxUtils.getValue(this.style,"opacity","100"),C=Math.max(0,Math.min(50,h));f=O.prototype;a.setDashed(v);n&&""!=n&&a.setDashPattern(n);a.setStrokeWidth(w);h=Math.min(.5*e,.5*c,h);k||(h=C*Math.min(c,e)/100);h=Math.min(h,.5*Math.min(c,e));k||(m=Math.min(p*Math.min(c,e)/100));m=Math.min(m,.5*Math.min(c,e)-h);(q||D||B||A)&&"frame"!=l&&(a.begin(),q?f.moveNW(a,
-b,d,c,e,g,r,h,A):a.moveTo(0,0),q&&f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),D&&f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),B&&f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),A&&f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),a.close(),a.fill(),a.setShadow(!1),a.setFillColor(y),v=k=z,"none"==y&&(k=0),"none"==x&&(v=0),a.setGradient(y,x,0,0,c,e,E,k,v),a.begin(),q?f.moveNWInner(a,b,d,c,e,g,r,h,m,q,A):a.moveTo(m,0),f.paintLeftInner(a,b,d,c,e,
-g,u,h,m,B,A),A&&B&&f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),B&&D&&f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),D&&q&&f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),q&&A&&f.paintNWInner(a,b,d,c,e,g,r,h,m),a.fill(),"none"==fb&&(a.begin(),f.paintFolds(a,b,d,c,e,g,r,t,I,u,h,q,D,B,A),a.stroke()));q||D||B||!A?q||D||!B||A?!q&&!D&&B&&A?"frame"!=l?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,
-h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==l&&(f.moveNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.lineNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,
-b,d,c,e,g,I,h,m,D,B),a.close(),a.fillAndStroke()):q||!D||B||A?!q&&D&&!B&&A?"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==l&&(f.moveNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke(),a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),
-f.lineNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke(),a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),a.close(),a.fillAndStroke()):!q&&D&&B&&!A?"frame"!=l?(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,
-b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),a.close(),a.fillAndStroke()):!q&&D&&B&&A?"frame"!=l?(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,
-d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==l&&(f.moveNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,
-b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.lineNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),a.close(),a.fillAndStroke()):!q||D||B||A?q&&!D&&!B&&A?"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),
-"double"==l&&(f.moveNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke()):q&&!D&&B&&!A?"frame"!=
-l?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),"double"==l&&(f.moveNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q)),a.stroke(),a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),a.close(),a.fillAndStroke(),
-a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),a.close(),a.fillAndStroke()):q&&!D&&B&&A?"frame"!=l?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),"double"==l&&(f.moveNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,
-e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),f.paintSWInner(a,b,d,
-c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),a.close(),a.fillAndStroke()):q&&D&&!B&&!A?"frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,
-c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),a.close(),a.fillAndStroke()):q&&D&&!B&&A?"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,
-b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,
-d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke()):q&&D&&B&&!A?"frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),
-f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),
-a.close(),a.fillAndStroke()):q&&D&&B&&A&&("frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),a.close(),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,
-m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close()),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),a.close(),
-f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintSWInner(a,b,d,c,e,g,u,h,m,B),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,m),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,m),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,m),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke())):"frame"!=l?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),"double"==l&&(f.moveNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,
-b,d,c,e,g,r,h,m,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,m,D),f.paintTopInner(a,b,d,c,e,g,r,h,m,A,q),a.close(),a.fillAndStroke()):"frame"!=l?(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==l&&(f.moveSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,b,d,c,e,g,t,h,m,q,D)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,m,B),f.paintRightInner(a,
-b,d,c,e,g,t,h,m,q,D),a.close(),a.fillAndStroke()):"frame"!=l?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==l&&(f.moveSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,m,A),f.paintBottomInner(a,b,d,c,e,g,I,h,m,D,B),a.close(),a.fillAndStroke()):"frame"!=l?(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==
-l&&(f.moveNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.lineNWInner(a,b,d,c,e,g,r,h,m,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,m,B,A),a.close(),a.fillAndStroke());a.begin();f.paintFolds(a,b,d,c,e,g,r,t,I,u,h,q,D,B,A);a.stroke()};O.prototype.moveNW=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(0,0):a.moveTo(0,h)};O.prototype.moveNE=function(a,b,d,c,e,f,g,h,k){"square"==
+"gradientColor2","none"),E=f&&f.gradientDirection2?f.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),z=f&&f.opacity?f.opacity:mxUtils.getValue(this.style,"opacity","100"),C=Math.max(0,Math.min(50,h));f=O.prototype;a.setDashed(v);n&&""!=n&&a.setDashPattern(n);a.setStrokeWidth(w);h=Math.min(.5*e,.5*c,h);k||(h=C*Math.min(c,e)/100);h=Math.min(h,.5*Math.min(c,e));k||(l=Math.min(p*Math.min(c,e)/100));l=Math.min(l,.5*Math.min(c,e)-h);(q||D||B||A)&&"frame"!=m&&(a.begin(),q?f.moveNW(a,
+b,d,c,e,g,r,h,A):a.moveTo(0,0),q&&f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),D&&f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),B&&f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),A&&f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),a.close(),a.fill(),a.setShadow(!1),a.setFillColor(y),v=k=z,"none"==y&&(k=0),"none"==x&&(v=0),a.setGradient(y,x,0,0,c,e,E,k,v),a.begin(),q?f.moveNWInner(a,b,d,c,e,g,r,h,l,q,A):a.moveTo(l,0),f.paintLeftInner(a,b,d,c,e,
+g,u,h,l,B,A),A&&B&&f.paintSWInner(a,b,d,c,e,g,u,h,l,B),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),B&&D&&f.paintSEInner(a,b,d,c,e,g,I,h,l),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),D&&q&&f.paintNEInner(a,b,d,c,e,g,t,h,l),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),q&&A&&f.paintNWInner(a,b,d,c,e,g,r,h,l),a.fill(),"none"==fb&&(a.begin(),f.paintFolds(a,b,d,c,e,g,r,t,I,u,h,q,D,B,A),a.stroke()));q||D||B||!A?q||D||!B||A?!q&&!D&&B&&A?"frame"!=m?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,
+h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==m&&(f.moveNWInner(a,b,d,c,e,g,r,h,l,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,l,B),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.lineNWInner(a,b,d,c,e,g,r,h,l,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,l,B),f.paintBottomInner(a,
+b,d,c,e,g,I,h,l,D,B),a.close(),a.fillAndStroke()):q||!D||B||A?!q&&D&&!B&&A?"frame"!=m?(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==m&&(f.moveNWInner(a,b,d,c,e,g,r,h,l,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A)),a.stroke(),a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==m&&(f.moveSEInner(a,b,d,c,e,g,I,h,l,B),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),
+f.lineNWInner(a,b,d,c,e,g,r,h,l,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),a.close(),a.fillAndStroke(),a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,l,B),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),a.close(),a.fillAndStroke()):!q&&D&&B&&!A?"frame"!=m?(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==m&&(f.moveSWInner(a,b,d,c,e,g,u,h,l,A),f.paintBottomInner(a,
+b,d,c,e,g,I,h,l,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,l),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,l,A),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,l),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),a.close(),a.fillAndStroke()):!q&&D&&B&&A?"frame"!=m?(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,
+d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==m&&(f.moveNWInner(a,b,d,c,e,g,r,h,l,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,l,B),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,l),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,
+b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.lineNWInner(a,b,d,c,e,g,r,h,l,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,l,B),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,l),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),a.close(),a.fillAndStroke()):!q||D||B||A?q&&!D&&!B&&A?"frame"!=m?(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),
+"double"==m&&(f.moveNEInner(a,b,d,c,e,g,t,h,l,D),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,l),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,l,D),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,l),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),a.close(),a.fillAndStroke()):q&&!D&&B&&!A?"frame"!=
+m?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),"double"==m&&(f.moveNEInner(a,b,d,c,e,g,t,h,l,D),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q)),a.stroke(),a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==m&&(f.moveSWInner(a,b,d,c,e,g,u,h,l,A),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,l,D),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),a.close(),a.fillAndStroke(),
+a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,l,A),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),a.close(),a.fillAndStroke()):q&&!D&&B&&A?"frame"!=m?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),"double"==m&&(f.moveNEInner(a,b,d,c,e,g,t,h,l,D),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),f.paintNWInner(a,b,d,c,
+e,g,r,h,l),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),f.paintSWInner(a,b,d,c,e,g,u,h,l,B),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,l,D),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,l),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),f.paintSWInner(a,b,d,
+c,e,g,u,h,l,B),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),a.close(),a.fillAndStroke()):q&&D&&!B&&!A?"frame"!=m?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==m&&(f.moveSEInner(a,b,d,c,e,g,I,h,l,B),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,l),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,
+c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,l,B),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,l),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),a.close(),a.fillAndStroke()):q&&D&&!B&&A?"frame"!=m?(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==m&&(f.moveSEInner(a,b,d,c,e,g,I,h,l,B),f.paintRightInner(a,
+b,d,c,e,g,t,h,l,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,l),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,l),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,l,B),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,l),f.paintTopInner(a,b,
+d,c,e,g,r,h,l,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,l),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),a.close(),a.fillAndStroke()):q&&D&&B&&!A?"frame"!=m?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==m&&(f.moveSWInner(a,b,d,c,e,g,u,h,l,A),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,l),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),
+f.paintNEInner(a,b,d,c,e,g,t,h,l),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,l,A),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,l),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,l),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),
+a.close(),a.fillAndStroke()):q&&D&&B&&A&&("frame"!=m?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),a.close(),"double"==m&&(f.moveSWInner(a,b,d,c,e,g,u,h,l,A),f.paintSWInner(a,b,d,c,e,g,u,h,l,B),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,
+l),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,l),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,l),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),a.close()),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.paintNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.paintSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.paintSW(a,b,d,c,e,g,u,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),a.close(),
+f.moveSWInner(a,b,d,c,e,g,u,h,l,A),f.paintSWInner(a,b,d,c,e,g,u,h,l,B),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),f.paintSEInner(a,b,d,c,e,g,I,h,l),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D),f.paintNEInner(a,b,d,c,e,g,t,h,l),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),f.paintNWInner(a,b,d,c,e,g,r,h,l),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),a.close(),a.fillAndStroke())):"frame"!=m?(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),"double"==m&&(f.moveNEInner(a,b,d,c,e,g,t,h,l,D),f.paintTopInner(a,
+b,d,c,e,g,r,h,l,A,q)),a.stroke()):(a.begin(),f.moveNW(a,b,d,c,e,g,r,h,A),f.paintTop(a,b,d,c,e,g,t,h,D),f.lineNEInner(a,b,d,c,e,g,t,h,l,D),f.paintTopInner(a,b,d,c,e,g,r,h,l,A,q),a.close(),a.fillAndStroke()):"frame"!=m?(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),"double"==m&&(f.moveSEInner(a,b,d,c,e,g,I,h,l,B),f.paintRightInner(a,b,d,c,e,g,t,h,l,q,D)),a.stroke()):(a.begin(),f.moveNE(a,b,d,c,e,g,t,h,q),f.paintRight(a,b,d,c,e,g,I,h,B),f.lineSEInner(a,b,d,c,e,g,I,h,l,B),f.paintRightInner(a,
+b,d,c,e,g,t,h,l,q,D),a.close(),a.fillAndStroke()):"frame"!=m?(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),"double"==m&&(f.moveSWInner(a,b,d,c,e,g,u,h,l,A),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B)),a.stroke()):(a.begin(),f.moveSE(a,b,d,c,e,g,I,h,D),f.paintBottom(a,b,d,c,e,g,u,h,A),f.lineSWInner(a,b,d,c,e,g,u,h,l,A),f.paintBottomInner(a,b,d,c,e,g,I,h,l,D,B),a.close(),a.fillAndStroke()):"frame"!=m?(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),"double"==
+m&&(f.moveNWInner(a,b,d,c,e,g,r,h,l,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A)),a.stroke()):(a.begin(),f.moveSW(a,b,d,c,e,g,r,h,B),f.paintLeft(a,b,d,c,e,g,r,h,q),f.lineNWInner(a,b,d,c,e,g,r,h,l,q,A),f.paintLeftInner(a,b,d,c,e,g,u,h,l,B,A),a.close(),a.fillAndStroke());a.begin();f.paintFolds(a,b,d,c,e,g,r,t,I,u,h,q,D,B,A);a.stroke()};O.prototype.moveNW=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(0,0):a.moveTo(0,h)};O.prototype.moveNE=function(a,b,d,c,e,f,g,h,k){"square"==
g||"default"==g&&"square"==f||!k?a.moveTo(c,0):a.moveTo(c-h,0)};O.prototype.moveSE=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(c,e):a.moveTo(c,e-h)};O.prototype.moveSW=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.moveTo(0,e):a.moveTo(h,e)};O.prototype.paintNW=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,
h,0,0,b,h,0)}else("snip"==g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(h,0);else a.lineTo(0,0)};O.prototype.paintTop=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(c,0):a.lineTo(c-h,0)};O.prototype.paintNE=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,h,0,0,b,c,h)}else("snip"==g||"default"==g&&"snip"==
f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c,h);else a.lineTo(c,0)};O.prototype.paintRight=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(c,e):a.lineTo(c,e-h)};O.prototype.paintLeft=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(0,0):a.lineTo(0,h)};O.prototype.paintSE=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==
f)b=1;a.arcTo(h,h,0,0,b,c-h,e)}else("snip"==g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-h,e);else a.lineTo(c,e)};O.prototype.paintBottom=function(a,b,d,c,e,f,g,h,k){"square"==g||"default"==g&&"square"==f||!k?a.lineTo(0,e):a.lineTo(h,e)};O.prototype.paintSW=function(a,b,d,c,e,f,g,h,k){if(k)if("rounded"==g||"default"==g&&"rounded"==f||"invRound"==g||"default"==g&&"invRound"==f){b=0;if("rounded"==g||"default"==g&&"rounded"==f)b=1;a.arcTo(h,h,0,0,b,0,e-h)}else("snip"==
g||"default"==g&&"snip"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(0,e-h);else a.lineTo(0,e)};O.prototype.paintNWInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,k,.5*k+h);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,k,k+h);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(k,.5*k+h);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(k+h,k+h),a.lineTo(k,k+h)};O.prototype.paintTopInner=function(a,b,d,c,e,
-f,g,h,k,m,l){m||l?!m&&l?a.lineTo(0,k):m&&!l?a.lineTo(k,0):m?"square"==g||"default"==g&&"square"==f?a.lineTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(h+.5*k,k):a.lineTo(h+k,k):a.lineTo(0,k):a.lineTo(0,0)};O.prototype.paintNEInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,c-h-.5*k,k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,c-h-k,k);else if("snip"==g||"default"==
-g&&"snip"==f)a.lineTo(c-h-.5*k,k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(c-h-k,h+k),a.lineTo(c-h-k,k)};O.prototype.paintRightInner=function(a,b,d,c,e,f,g,h,k,m,l){m||l?!m&&l?a.lineTo(c-k,0):m&&!l?a.lineTo(c,k):m?"square"==g||"default"==g&&"square"==f?a.lineTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-k,h+.5*k):a.lineTo(c-k,h+k):a.lineTo(c-k,0):a.lineTo(c,0)};O.prototype.paintLeftInner=function(a,b,d,c,e,f,g,h,k,m,l){m||l?!m&&l?a.lineTo(k,
-e):m&&!l?a.lineTo(0,e-k):m?"square"==g||"default"==g&&"square"==f?a.lineTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,e-h-.5*k):a.lineTo(k,e-h-k):a.lineTo(k,e):a.lineTo(0,e)};O.prototype.paintSEInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,c-k,e-h-.5*k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,c-k,e-h-k);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(c-
-k,e-h-.5*k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(c-h-k,e-h-k),a.lineTo(c-k,e-h-k)};O.prototype.paintBottomInner=function(a,b,d,c,e,f,g,h,k,m,l){m||l?!m&&l?a.lineTo(c,e-k):m&&!l?a.lineTo(c-k,e):"square"==g||"default"==g&&"square"==f||!m?a.lineTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-h-.5*k,e-k):a.lineTo(c-h-k,e-k):a.lineTo(c,e)};O.prototype.paintSWInner=function(a,b,d,c,e,f,g,h,k,m){if(!m)a.lineTo(k,e);else if("square"==g||"default"==
-g&&"square"==f)a.lineTo(k,e-k);else if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,h+.5*k,e-k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,h+k,e-k);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(h+.5*k,e-k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(k+h,e-h-k),a.lineTo(k+h,e-k)};O.prototype.moveSWInner=function(a,b,d,c,e,f,g,h,k,m){m?"square"==g||"default"==g&&"square"==f?a.moveTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||
-"snip"==g||"default"==g&&"snip"==f?a.moveTo(k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(k,e-h-k):a.moveTo(0,e-k)};O.prototype.lineSWInner=function(a,b,d,c,e,f,g,h,k,m){m?"square"==g||"default"==g&&"square"==f?a.lineTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(k,e-h-k):a.lineTo(0,e-k)};O.prototype.moveSEInner=
-function(a,b,d,c,e,f,g,h,k,m){m?"square"==g||"default"==g&&"square"==f?a.moveTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(c-k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(c-k,e-h-k):a.moveTo(c-k,e)};O.prototype.lineSEInner=function(a,b,d,c,e,f,g,h,k,m){m?"square"==g||"default"==g&&"square"==f?a.lineTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-
-k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-k,e-h-k):a.lineTo(c-k,e)};O.prototype.moveNEInner=function(a,b,d,c,e,f,g,h,k,m){m?"square"==g||"default"==g&&"square"==f||m?a.moveTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(c-k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(c-k,h+k):a.moveTo(c,k)};O.prototype.lineNEInner=function(a,b,d,c,e,
-f,g,h,k,m){m?"square"==g||"default"==g&&"square"==f||m?a.lineTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-k,h+k):a.lineTo(c,k)};O.prototype.moveNWInner=function(a,b,d,c,e,f,g,h,k,m,l){m||l?!m&&l?a.moveTo(k,0):m&&!l?a.moveTo(0,k):"square"==g||"default"==g&&"square"==f?a.moveTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==
-g&&"snip"==f?a.moveTo(k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(k,h+k):a.moveTo(0,0)};O.prototype.lineNWInner=function(a,b,d,c,e,f,g,h,k,m,l){m||l?!m&&l?a.lineTo(k,0):m&&!l?a.lineTo(0,k):"square"==g||"default"==g&&"square"==f?a.lineTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(k,h+k):a.lineTo(0,
-0)};O.prototype.paintFolds=function(a,b,d,c,e,f,g,h,k,m,l,n,p,q,r){if("fold"==f||"fold"==g||"fold"==h||"fold"==k||"fold"==m)("fold"==g||"default"==g&&"fold"==f)&&n&&r&&(a.moveTo(0,l),a.lineTo(l,l),a.lineTo(l,0)),("fold"==h||"default"==h&&"fold"==f)&&n&&p&&(a.moveTo(c-l,0),a.lineTo(c-l,l),a.lineTo(c,l)),("fold"==k||"default"==k&&"fold"==f)&&q&&p&&(a.moveTo(c-l,e),a.lineTo(c-l,e-l),a.lineTo(c,e-l)),("fold"==m||"default"==m&&"fold"==f)&&q&&r&&(a.moveTo(0,e-l),a.lineTo(l,e-l),a.lineTo(l,e))};mxCellRenderer.registerShape(O.prototype.cst.RECT2,
+f,g,h,k,l,m){l||m?!l&&m?a.lineTo(0,k):l&&!m?a.lineTo(k,0):l?"square"==g||"default"==g&&"square"==f?a.lineTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(h+.5*k,k):a.lineTo(h+k,k):a.lineTo(0,k):a.lineTo(0,0)};O.prototype.paintNEInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,c-h-.5*k,k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,c-h-k,k);else if("snip"==g||"default"==
+g&&"snip"==f)a.lineTo(c-h-.5*k,k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(c-h-k,h+k),a.lineTo(c-h-k,k)};O.prototype.paintRightInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(c-k,0):l&&!m?a.lineTo(c,k):l?"square"==g||"default"==g&&"square"==f?a.lineTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-k,h+.5*k):a.lineTo(c-k,h+k):a.lineTo(c-k,0):a.lineTo(c,0)};O.prototype.paintLeftInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(k,
+e):l&&!m?a.lineTo(0,e-k):l?"square"==g||"default"==g&&"square"==f?a.lineTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,e-h-.5*k):a.lineTo(k,e-h-k):a.lineTo(k,e):a.lineTo(0,e)};O.prototype.paintSEInner=function(a,b,d,c,e,f,g,h,k){if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,c-k,e-h-.5*k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,c-k,e-h-k);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(c-
+k,e-h-.5*k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(c-h-k,e-h-k),a.lineTo(c-k,e-h-k)};O.prototype.paintBottomInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(c,e-k):l&&!m?a.lineTo(c-k,e):"square"==g||"default"==g&&"square"==f||!l?a.lineTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-h-.5*k,e-k):a.lineTo(c-h-k,e-k):a.lineTo(c,e)};O.prototype.paintSWInner=function(a,b,d,c,e,f,g,h,k,l){if(!l)a.lineTo(k,e);else if("square"==g||"default"==
+g&&"square"==f)a.lineTo(k,e-k);else if("rounded"==g||"default"==g&&"rounded"==f)a.arcTo(h-.5*k,h-.5*k,0,0,0,h+.5*k,e-k);else if("invRound"==g||"default"==g&&"invRound"==f)a.arcTo(h+k,h+k,0,0,1,h+k,e-k);else if("snip"==g||"default"==g&&"snip"==f)a.lineTo(h+.5*k,e-k);else if("fold"==g||"default"==g&&"fold"==f)a.lineTo(k+h,e-h-k),a.lineTo(k+h,e-k)};O.prototype.moveSWInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.moveTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||
+"snip"==g||"default"==g&&"snip"==f?a.moveTo(k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(k,e-h-k):a.moveTo(0,e-k)};O.prototype.lineSWInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.lineTo(k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(k,e-h-k):a.lineTo(0,e-k)};O.prototype.moveSEInner=
+function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.moveTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(c-k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(c-k,e-h-k):a.moveTo(c-k,e)};O.prototype.lineSEInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f?a.lineTo(c-k,e-k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-
+k,e-h-.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-k,e-h-k):a.lineTo(c-k,e)};O.prototype.moveNEInner=function(a,b,d,c,e,f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f||l?a.moveTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.moveTo(c-k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(c-k,h+k):a.moveTo(c,k)};O.prototype.lineNEInner=function(a,b,d,c,e,
+f,g,h,k,l){l?"square"==g||"default"==g&&"square"==f||l?a.lineTo(c-k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(c-k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(c-k,h+k):a.lineTo(c,k)};O.prototype.moveNWInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.moveTo(k,0):l&&!m?a.moveTo(0,k):"square"==g||"default"==g&&"square"==f?a.moveTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==
+g&&"snip"==f?a.moveTo(k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.moveTo(k,h+k):a.moveTo(0,0)};O.prototype.lineNWInner=function(a,b,d,c,e,f,g,h,k,l,m){l||m?!l&&m?a.lineTo(k,0):l&&!m?a.lineTo(0,k):"square"==g||"default"==g&&"square"==f?a.lineTo(k,k):"rounded"==g||"default"==g&&"rounded"==f||"snip"==g||"default"==g&&"snip"==f?a.lineTo(k,h+.5*k):("invRound"==g||"default"==g&&"invRound"==f||"fold"==g||"default"==g&&"fold"==f)&&a.lineTo(k,h+k):a.lineTo(0,
+0)};O.prototype.paintFolds=function(a,b,d,c,e,f,g,h,k,l,m,n,p,q,r){if("fold"==f||"fold"==g||"fold"==h||"fold"==k||"fold"==l)("fold"==g||"default"==g&&"fold"==f)&&n&&r&&(a.moveTo(0,m),a.lineTo(m,m),a.lineTo(m,0)),("fold"==h||"default"==h&&"fold"==f)&&n&&p&&(a.moveTo(c-m,0),a.lineTo(c-m,m),a.lineTo(c,m)),("fold"==k||"default"==k&&"fold"==f)&&q&&p&&(a.moveTo(c-m,e),a.lineTo(c-m,e-m),a.lineTo(c,e-m)),("fold"==l||"default"==l&&"fold"==f)&&q&&r&&(a.moveTo(0,e-m),a.lineTo(m,e-m),a.lineTo(m,e))};mxCellRenderer.registerShape(O.prototype.cst.RECT2,
O);O.prototype.constraints=null;mxUtils.extend(wa,mxConnector);wa.prototype.origPaintEdgeShape=wa.prototype.paintEdgeShape;wa.prototype.paintEdgeShape=function(a,b,d){for(var c=[],e=0;e<b.length;e++)c.push(mxUtils.clone(b[e]));var e=a.state.dashed,f=a.state.fixDash;wa.prototype.origPaintEdgeShape.apply(this,[a,c,d]);3<=a.state.strokeWidth&&(c=mxUtils.getValue(this.style,"fillColor",null),null!=c&&(a.setStrokeColor(c),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(e,f),wa.prototype.origPaintEdgeShape.apply(this,
-[a,b,d])))};mxCellRenderer.registerShape("filledEdge",wa);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.editorUi.getSelectionState(),d=a.apply(this,arguments);"umlFrame"==b.style.shape&&d.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return d}}();mxMarker.addMarker("dash",function(a,b,d,c,e,f,g,h,k,m){var l=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();
-a.moveTo(c.x-l/2-n/2,c.y-n/2+l/2);a.lineTo(c.x+n/2-3*l/2,c.y-3*n/2-l/2);a.stroke()}});mxMarker.addMarker("box",function(a,b,d,c,e,f,g,h,k,m){var l=e*(g+k+1),n=f*(g+k+1),v=c.x+l/2,p=c.y+n/2;c.x-=l;c.y-=n;return function(){a.begin();a.moveTo(v-l/2-n/2,p-n/2+l/2);a.lineTo(v-l/2+n/2,p-n/2-l/2);a.lineTo(v+n/2-3*l/2,p-3*n/2-l/2);a.lineTo(v-n/2-3*l/2,p-3*n/2+l/2);a.close();m?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("cross",function(a,b,d,c,e,f,g,h,k,m){var l=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();
-a.moveTo(c.x-l/2-n/2,c.y-n/2+l/2);a.lineTo(c.x+n/2-3*l/2,c.y-3*n/2-l/2);a.moveTo(c.x-l/2+n/2,c.y-n/2-l/2);a.lineTo(c.x-n/2-3*l/2,c.y-3*n/2+l/2);a.stroke()}});mxMarker.addMarker("circle",Ra);mxMarker.addMarker("circlePlus",function(a,b,d,c,e,f,g,h,k,m){var l=c.clone(),n=Ra.apply(this,arguments),v=e*(g+2*k),p=f*(g+2*k);return function(){n.apply(this,arguments);a.begin();a.moveTo(l.x-e*k,l.y-f*k);a.lineTo(l.x-2*v+e*k,l.y-2*p+f*k);a.moveTo(l.x-v-p+f*k,l.y-p+v-e*k);a.lineTo(l.x+p-v-f*k,l.y-p-v+e*k);a.stroke()}});
-mxMarker.addMarker("halfCircle",function(a,b,d,c,e,f,g,h,k,m){var l=e*(g+k+1),n=f*(g+k+1),v=c.clone();c.x-=l;c.y-=n;return function(){a.begin();a.moveTo(v.x-n,v.y+l);a.quadTo(c.x-n,c.y+l,c.x,c.y);a.quadTo(c.x+n,c.y-l,v.x+n,v.y-l);a.stroke()}});mxMarker.addMarker("async",function(a,b,d,c,e,f,g,h,k,m){b=e*k*1.118;d=f*k*1.118;e*=g+k;f*=g+k;var l=c.clone();l.x-=b;l.y-=d;c.x+=1*-e-b;c.y+=1*-f-d;return function(){a.begin();a.moveTo(l.x,l.y);h?a.lineTo(l.x-e-f/2,l.y-f+e/2):a.lineTo(l.x+f/2-e,l.y-f-e/2);
-a.lineTo(l.x-e,l.y-f);a.close();m?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,d,c,e,f,g,h,k,m,l){f*=h+m;g*=h+m;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ya=function(a,b,d){return Da(a,["width"],b,function(b,c,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+d;return new mxPoint(f.x+c*b/4+e*g/2,f.y+
-e*b/4-c*g/2)},function(b,c,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=Math.round(2*b)/a.view.scale-d})},Da=function(a,b,d,c,e){return S(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=d?e[0]:e[f],e=d?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,m=Math.sqrt(f*f+k*k),h=c.call(this,m,f/m,k/m,h,e);return new mxPoint(h.x/g-b.x,h.y/g-b.y)},function(b,c,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,m=d?g[0]:
-g[h],g=d?g[1]:g[h-1],h=g.x-m.x,l=g.y-m.y,n=Math.sqrt(h*h+l*l);c.x=(c.x+b.x)*k;c.y=(c.y+b.y)*k;e.call(this,n,h/n,l/n,m,g,c,f)})},Sa=function(a){return function(b){return[S(b,["arrowWidth","arrowSize"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",U.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",U.prototype.arrowSize)));return new mxPoint(b.x+(1-c)*b.width,b.y+(1-d)*b.height/2)},function(b,d){this.state.style.arrowWidth=
+[a,b,d])))};mxCellRenderer.registerShape("filledEdge",wa);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors;StyleFormatPanel.prototype.getCustomColors=function(){var b=this.editorUi.getSelectionState(),d=a.apply(this,arguments);"umlFrame"==b.style.shape&&d.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"default"});return d}}();mxMarker.addMarker("dash",function(a,b,d,c,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();
+a.moveTo(c.x-m/2-n/2,c.y-n/2+m/2);a.lineTo(c.x+n/2-3*m/2,c.y-3*n/2-m/2);a.stroke()}});mxMarker.addMarker("box",function(a,b,d,c,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1),v=c.x+m/2,p=c.y+n/2;c.x-=m;c.y-=n;return function(){a.begin();a.moveTo(v-m/2-n/2,p-n/2+m/2);a.lineTo(v-m/2+n/2,p-n/2-m/2);a.lineTo(v+n/2-3*m/2,p-3*n/2-m/2);a.lineTo(v-n/2-3*m/2,p-3*n/2+m/2);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("cross",function(a,b,d,c,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1);return function(){a.begin();
+a.moveTo(c.x-m/2-n/2,c.y-n/2+m/2);a.lineTo(c.x+n/2-3*m/2,c.y-3*n/2-m/2);a.moveTo(c.x-m/2+n/2,c.y-n/2-m/2);a.lineTo(c.x-n/2-3*m/2,c.y-3*n/2+m/2);a.stroke()}});mxMarker.addMarker("circle",Ra);mxMarker.addMarker("circlePlus",function(a,b,d,c,e,f,g,h,k,l){var m=c.clone(),n=Ra.apply(this,arguments),v=e*(g+2*k),p=f*(g+2*k);return function(){n.apply(this,arguments);a.begin();a.moveTo(m.x-e*k,m.y-f*k);a.lineTo(m.x-2*v+e*k,m.y-2*p+f*k);a.moveTo(m.x-v-p+f*k,m.y-p+v-e*k);a.lineTo(m.x+p-v-f*k,m.y-p-v+e*k);a.stroke()}});
+mxMarker.addMarker("halfCircle",function(a,b,d,c,e,f,g,h,k,l){var m=e*(g+k+1),n=f*(g+k+1),v=c.clone();c.x-=m;c.y-=n;return function(){a.begin();a.moveTo(v.x-n,v.y+m);a.quadTo(c.x-n,c.y+m,c.x,c.y);a.quadTo(c.x+n,c.y-m,v.x+n,v.y-m);a.stroke()}});mxMarker.addMarker("async",function(a,b,d,c,e,f,g,h,k,l){b=e*k*1.118;d=f*k*1.118;e*=g+k;f*=g+k;var m=c.clone();m.x-=b;m.y-=d;c.x+=1*-e-b;c.y+=1*-f-d;return function(){a.begin();a.moveTo(m.x,m.y);h?a.lineTo(m.x-e-f/2,m.y-f+e/2):a.lineTo(m.x+f/2-e,m.y-f-e/2);
+a.lineTo(m.x-e,m.y-f);a.close();l?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(b,d,c,e,f,g,h,k,l,m){f*=h+l;g*=h+l;var n=e.clone();return function(){b.begin();b.moveTo(n.x,n.y);k?b.lineTo(n.x-f-g/a,n.y-g+f/a):b.lineTo(n.x+g/a-f,n.y-g-f/a);b.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ya=function(a,b,d){return Da(a,["width"],b,function(b,c,e,f,g){g=a.shape.getEdgeWidth()*a.view.scale+d;return new mxPoint(f.x+c*b/4+e*g/2,f.y+
+e*b/4-c*g/2)},function(b,c,e,f,g,h){b=Math.sqrt(mxUtils.ptSegDistSq(f.x,f.y,g.x,g.y,h.x,h.y));a.style.width=Math.round(2*b)/a.view.scale-d})},Da=function(a,b,d,c,e){return S(a,b,function(b){var e=a.absolutePoints,f=e.length-1;b=a.view.translate;var g=a.view.scale,h=d?e[0]:e[f],e=d?e[1]:e[f-1],f=e.x-h.x,k=e.y-h.y,l=Math.sqrt(f*f+k*k),h=c.call(this,l,f/l,k/l,h,e);return new mxPoint(h.x/g-b.x,h.y/g-b.y)},function(b,c,f){var g=a.absolutePoints,h=g.length-1;b=a.view.translate;var k=a.view.scale,l=d?g[0]:
+g[h],g=d?g[1]:g[h-1],h=g.x-l.x,m=g.y-l.y,n=Math.sqrt(h*h+m*m);c.x=(c.x+b.x)*k;c.y=(c.y+b.y)*k;e.call(this,n,h/n,m/n,l,g,c,f)})},Sa=function(a){return function(b){return[S(b,["arrowWidth","arrowSize"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",U.prototype.arrowWidth))),c=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",U.prototype.arrowSize)));return new mxPoint(b.x+(1-c)*b.width,b.y+(1-d)*b.height/2)},function(b,d){this.state.style.arrowWidth=
Math.max(0,Math.min(1,Math.abs(b.y+b.height/2-d.y)/b.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(b.x+b.width-d.x)/b.width))})]}},Ta=function(a){return function(b){return[S(b,["size"],function(b){var d=Math.max(0,Math.min(.5*b.height,parseFloat(mxUtils.getValue(this.state.style,"size",a))));return new mxPoint(b.x,b.y+d)},function(a,b){this.state.style.size=Math.max(0,b.y-a.y)},!0)]}},Qa=function(a,b,d){return function(c){var e=[S(c,["size"],function(d){var c=Math.max(0,Math.min(d.width,
Math.min(d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b)))))*a;return new mxPoint(d.x+c,d.y+c)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,d.x-b.x),Math.min(b.height,d.y-b.y)))/a)},!1)];d&&mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(ua(c));return e}},Ia=function(a,b,d,c,e){d=null!=d?d:.5;return function(f){var g=[S(f,["size"],function(b){var d=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,c=parseFloat(mxUtils.getValue(this.state.style,
"size",d?e:a));return new mxPoint(b.x+Math.max(0,Math.min(.5*b.width,c*(d?1:b.width))),b.getCenterY())},function(a,b,c){a=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?b.x-a.x:Math.max(0,Math.min(d,(b.x-a.x)/a.width));this.state.style.size=a},!1,c)];b&&mxUtils.getValue(f.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(ua(f));return g}},Ua=function(a,b,d){a=null!=a?a:.5;return function(c){var e=[S(c,["size"],function(c){var e=null!=d?"0"!=mxUtils.getValue(this.state.style,"fixedSize",
@@ -3475,8 +3475,8 @@ return new mxPoint(a.x+b,a.y+b)},function(a,b){this.state.style.size=Math.round(
!0,L.prototype.fixedSize),hexagon:Ia(M.prototype.size,!0,.5,!0,M.prototype.fixedSize),curlyBracket:Ia(H.prototype.size,!1),display:Ia(Aa.prototype.size,!1),cube:Qa(1,d.prototype.size,!1),card:Qa(.5,t.prototype.size,!0),loopLimit:Qa(.5,ga.prototype.size,!0),trapezoid:Ua(.5,F.prototype.size,F.prototype.fixedSize),parallelogram:Ua(1,y.prototype.size,y.prototype.fixedSize)};Graph.createHandle=S;Graph.handleFactory=Ja;var bb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=
function(){var a=bb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)?b=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(b=mxConstants.SHAPE_SWIMLANE);b=Ja[b];null==b&&null!=this.state.shape&&this.state.shape.isRoundable()&&(b=Ja[mxConstants.SHAPE_RECTANGLE]);null!=b&&(b=b(this.state),null!=b&&(a=null==a?b:a.concat(b)))}return a};mxEdgeHandler.prototype.createCustomHandles=
function(){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Ja[a];return null!=a?a(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ka=new mxPoint(1,0),La=new mxPoint(1,0),Va=mxUtils.toRadians(-30),Ka=mxUtils.getRotatedPoint(Ka,Math.cos(Va),Math.sin(Va)),Wa=mxUtils.toRadians(-150),La=mxUtils.getRotatedPoint(La,Math.cos(Wa),Math.sin(Wa));mxEdgeStyle.IsometricConnector=function(a,
-b,d,c,e){var f=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=c&&(c=f.transformControlPoint(a,c));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=d&&(g=new mxPoint(d.getCenterX(),d.getCenterY()));var k=Ka.x,m=Ka.y,l=La.x,n=La.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,d){a-=q.x;var c=b-q.y;b=(n*a-l*c)/(k*n-m*l);a=(m*a-k*c)/(m*l-k*n);p?(d&&(q=new mxPoint(q.x+k*b,q.y+
-m*b),e.push(q)),q=new mxPoint(q.x+l*a,q.y+n*a)):(d&&(q=new mxPoint(q.x+l*a,q.y+n*a),e.push(q)),q=new mxPoint(q.x+k*b,q.y+m*b));e.push(q)};var q=h;null==c&&(c=new mxPoint(h.x+(g.x-h.x)/2,h.y+(g.y-h.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var cb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var d=new mxElbowEdgeHandler(a);d.snapToTerminals=!1;return d}return cb.apply(this,
+b,d,c,e){var f=a.view;c=null!=c&&0<c.length?c[0]:null;var g=a.absolutePoints,h=g[0],g=g[g.length-1];null!=c&&(c=f.transformControlPoint(a,c));null==h&&null!=b&&(h=new mxPoint(b.getCenterX(),b.getCenterY()));null==g&&null!=d&&(g=new mxPoint(d.getCenterX(),d.getCenterY()));var k=Ka.x,l=Ka.y,m=La.x,n=La.y,p="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!=g&&null!=h){a=function(a,b,d){a-=q.x;var c=b-q.y;b=(n*a-m*c)/(k*n-l*m);a=(l*a-k*c)/(l*m-k*n);p?(d&&(q=new mxPoint(q.x+k*b,q.y+
+l*b),e.push(q)),q=new mxPoint(q.x+m*a,q.y+n*a)):(d&&(q=new mxPoint(q.x+m*a,q.y+n*a),e.push(q)),q=new mxPoint(q.x+k*b,q.y+l*b));e.push(q)};var q=h;null==c&&(c=new mxPoint(h.x+(g.x-h.x)/2,h.y+(g.y-h.y)/2));a(c.x,c.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var cb=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler=function(a,b){if(b==mxEdgeStyle.IsometricConnector){var d=new mxElbowEdgeHandler(a);d.snapToTerminals=!1;return d}return cb.apply(this,
arguments)};e.prototype.constraints=[];l.prototype.getConstraints=function(a,b,d){a=[];var c=Math.tan(mxUtils.toRadians(30)),e=(.5-c)/2,c=Math.min(b,d/(.5+c));b=(b-c)/2;d=(d-c)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+.5*c,d+c*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+c,d+.25*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b+c,d+.75*c));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,b+.5*c,d+(1-e)*c));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,d+.75*c));return a};m.prototype.getConstraints=function(a,b,d){a=[];var c=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,c=Math.min(b*Math.tan(c),.5*d);a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,b,c));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,b,d-c));a.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,d-c));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));return a};J.prototype.getConstraints=function(a,b,d){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var c=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style,
@@ -3589,7 +3589,7 @@ m&&(e.setSelectionCells(m),e.scrollCellToVisible(m[0]))}}},e.cellEditor.isConten
!0))}}).isEnabled=l;k=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(d,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){d.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),this.layersWindow.window.addListener("hide",function(){d.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),d.fireEvent(new mxEventObject("layers")),
this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");k.setToggleAction(!0);k.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));k=this.addAction("formatPanel",mxUtils.bind(this,function(){d.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");k.setToggleAction(!0);k.setSelectedCallback(mxUtils.bind(this,function(){return 0<d.formatWidth}));
k=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(d,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){d.fireEvent(new mxEventObject("outline"));this.outlineWindow.window.fit()})),this.outlineWindow.window.addListener("hide",function(){d.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),d.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),
-null,null,Editor.ctrlKey+"+Shift+O");k.setToggleAction(!0);k.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("connectionPoints...",function(){var a=e.getSelectionCell();e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&null!=a&&(a=new ConnectionPointsDialog(d,a),d.showDialog(a.container,300,390,!0,!0),a.init())}).isEnabled=l};
+null,null,Editor.ctrlKey+"+Shift+O");k.setToggleAction(!0);k.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("editConnectionPoints...",function(){var a=e.getSelectionCell();if(e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&null!=a){var b=new ConnectionPointsDialog(d,a);d.showDialog(b.container,350,450,!0,!0,function(){b.destroy()});b.init()}}).isEnabled=l};
Actions.prototype.addAction=function(a,b,c,d,f){var e;"..."==a.substring(a.length-3)?(a=a.substring(0,a.length-3),e=mxResources.get(a)+"..."):e=mxResources.get(a);return this.put(a,new Action(e,b,c,d,f))};Actions.prototype.put=function(a,b){return this.actions[a]=b};Actions.prototype.get=function(a){return this.actions[a]};function Action(a,b,c,d,f){mxEventSource.call(this);this.label=a;this.funct=this.createFunction(b);this.enabled=null!=c?c:!0;this.iconCls=d;this.shortcut=f;this.visible=!0}
mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(a){return a};Action.prototype.setEnabled=function(a){this.enabled!=a&&(this.enabled=a,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};Action.prototype.setToggleAction=function(a){this.toggleAction=a};Action.prototype.setSelectedCallback=function(a){this.selectedCallback=a};Action.prototype.isSelected=function(){return this.selectedCallback()};Menus=function(a){this.editorUi=a;this.menus={};this.init();mxClient.IS_SVG||((new Image).src=this.checkmarkImage)};Menus.prototype.defaultFont="Helvetica";Menus.prototype.defaultFontSize="12";Menus.prototype.defaultMenuItems="file edit view arrange extras help".split(" ");Menus.prototype.defaultFonts="Helvetica;Verdana;Times New Roman;Garamond;Comic Sans MS;Courier New;Georgia;Lucida Console;Tahoma".split(";");
Menus.prototype.init=function(){var a=this.editorUi,b=a.editor.graph,c=mxUtils.bind(b,b.isEnabled);this.customFonts=[];this.customFontSizes=[];this.put("fontFamily",new Menu(mxUtils.bind(this,function(d,c){for(var e=mxUtils.bind(this,function(e){this.styleChange(d,e,[mxConstants.STYLE_FONTFAMILY],[e],null,c,function(){document.execCommand("fontname",!1,e);a.fireEvent(new mxEventObject("styleChanged","keys",[mxConstants.STYLE_FONTFAMILY],"values",[e],"cells",[b.cellEditor.getEditingCell()]))},function(){b.updateLabelElements(b.getSelectionCells(),
@@ -3651,7 +3651,7 @@ null,c)};
Menus.prototype.addPopupMenuCellItems=function(a,b,c){var d=this.editorUi.editor.graph,f=d.view.getState(b);a.addSeparator();if(null!=f){var e=!1;1==d.getSelectionCount()&&d.getModel().isEdge(b)&&(a.addSeparator(),this.addSubmenu("line",a));if(d.getModel().isEdge(b)&&"entityRelationEdgeStyle"!=mxUtils.getValue(f.style,mxConstants.STYLE_EDGE,null)&&"arrow"!=mxUtils.getValue(f.style,mxConstants.STYLE_SHAPE,null)){var f=d.selectionCellsHandler.getHandler(b),l=!1;f instanceof mxEdgeHandler&&null!=f.bends&&
2<f.bends.length&&(e=f.getHandleForEvent(d.updateMouseEvent(new mxMouseEvent(c))),0<e&&e<f.bends.length-1&&(null==f.bends[e]||null==f.bends[e].node||""==f.bends[e].node.style.opacity)&&(l=this.editorUi.actions.get("removeWaypoint"),l.handler=f,l.index=e,l=!0));a.addSeparator();this.addMenuItem(a,"turn",null,c,null,mxResources.get("reverse"));this.addMenuItems(a,[l?"removeWaypoint":"addWaypoint"],null,c);f=d.getModel().getGeometry(b);e=null!=f&&null!=f.points&&0<f.points.length}1==d.getSelectionCount()&&
(e||d.getModel().isVertex(b)&&0<d.getModel().getEdgeCount(b))&&this.addMenuItems(a,["-","clearWaypoints"],null,c);1==d.getSelectionCount()&&d.isCellEditable(b)&&this.addPopupMenuCellEditItems(a,b,c)}};
-Menus.prototype.addPopupMenuCellEditItems=function(a,b,c,d){var f=this.editorUi.editor.graph.view.getState(b);this.addMenuItems(a,["-","editStyle","editData","editLink"],d,c);this.editorUi.editor.graph.getModel().isVertex(b)&&null!=mxUtils.getValue(f.style,mxConstants.STYLE_IMAGE,null)&&(a.addSeparator(),this.addMenuItem(a,"image",d,c).firstChild.nextSibling.innerHTML=mxResources.get("editImage")+"...",this.addMenuItem(a,"crop",d,c));"1"==urlParams.dev&&this.addMenuItem(a,"connectionPoints",d,c)};
+Menus.prototype.addPopupMenuCellEditItems=function(a,b,c,d){var f=this.editorUi.editor.graph.view.getState(b);this.addMenuItems(a,["-","editStyle","editData","editLink"],d,c);this.editorUi.editor.graph.getModel().isVertex(b)&&null!=mxUtils.getValue(f.style,mxConstants.STYLE_IMAGE,null)&&(a.addSeparator(),this.addMenuItem(a,"image",d,c).firstChild.nextSibling.innerHTML=mxResources.get("editImage")+"...",this.addMenuItem(a,"crop",d,c));this.addMenuItem(a,"editConnectionPoints",d,c)};
Menus.prototype.addPopupMenuSelectionItems=function(a,b,c){this.editorUi.editor.graph.isSelectionEmpty()&&this.addMenuItems(a,["-","selectVertices","selectEdges","selectAll"],null,c)};Menus.prototype.createMenubar=function(a){for(var b=new Menubar(this.editorUi,a),c=this.defaultMenuItems,d=0;d<c.length;d++)mxUtils.bind(this,function(a){var e=b.addMenu(mxResources.get(c[d]),mxUtils.bind(this,function(){a.funct.apply(this,arguments)}));this.menuCreated(a,e)})(this.get(c[d]));return b};
Menus.prototype.menuCreated=function(a,b,c){null!=b&&(c=null!=c?c:"geItem",a.addListener("stateChanged",function(){(b.enabled=a.enabled)?(b.className=c,8==document.documentMode&&(b.style.color="")):(b.className=c+" mxDisabled",8==document.documentMode&&(b.style.color="#c3c3c3"))}))};function Menubar(a,b){this.editorUi=a;this.container=b}Menubar.prototype.hideMenu=function(){this.editorUi.hideCurrentMenu()};
Menubar.prototype.addMenu=function(a,b,c){var d=document.createElement("a");d.className="geItem";mxUtils.write(d,a);this.addMenuHandler(d,b);null!=c?this.container.insertBefore(d,c):this.container.appendChild(d);return d};
@@ -10058,8 +10058,8 @@ DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:
DrawioFile.prototype.updateFile=function(b,e,d,c){null!=d&&d()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=e&&e():this.getLatestVersion(mxUtils.bind(this,function(g){try{null!=d&&d()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=e&&e():null!=g?this.mergeFile(g,b,e,c):this.reloadFile(b,e))}catch(k){null!=e&&e(k)}}),e))};
DrawioFile.prototype.mergeFile=function(b,e,d,c){var g=!0;try{this.stats.fileMerged++;var k=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),n=this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement);if(null!=n&&0<n.length){this.shadowPages=n;this.backupPatch=this.isModified()?this.ui.diffPages(k,this.ui.pages):null;var f=[this.ui.diffPages(null!=c?c:k,this.shadowPages)];if(!this.ignorePatches(f)){var l=this.ui.patchPages(k,
f[0]);c={};var m=this.ui.getHashValueForPages(l,c),k={},p=this.ui.getHashValueForPages(this.shadowPages,k);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",f,"checksum",p==m,m);if(null!=m&&m!=p){var q=this.compressReportData(this.getAnonymizedXmlForPages(n)),t=this.compressReportData(this.getAnonymizedXmlForPages(l)),v=this.ui.hashValue(b.getCurrentEtag()),u=this.ui.hashValue(this.getCurrentEtag());this.checksumError(d,f,"Shadow Details: "+JSON.stringify(c)+
-"\nChecksum: "+m+"\nCurrent: "+p+"\nCurrent Details: "+JSON.stringify(k)+"\nFrom: "+v+"\nTo: "+u+"\n\nFile Data:\n"+q+"\nPatched Shadow:\n"+t,null,"mergeFile");return}this.patch(f,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw g=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=e&&e()}catch(z){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
-null!=d&&d(z);try{if(g)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,z);else{var x=this.getCurrentUser(),A=null!=x?x.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),A,z)}}catch(B){}}};
+"\nChecksum: "+m+"\nCurrent: "+p+"\nCurrent Details: "+JSON.stringify(k)+"\nFrom: "+v+"\nTo: "+u+"\n\nFile Data:\n"+q+"\nPatched Shadow:\n"+t,null,"mergeFile");return}this.patch(f,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw g=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(b.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=e&&e()}catch(A){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();
+null!=d&&d(A);try{if(g)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,A);else{var x=this.getCurrentUser(),z=null!=x?x.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),z,A)}}catch(B){}}};
DrawioFile.prototype.getAnonymizedXmlForPages=function(b){var e=new mxCodec(mxUtils.createXmlDocument()),d=e.document.createElement("mxfile");if(null!=b)for(var c=0;c<b.length;c++){var g=e.encode(new mxGraphModel(b[c].root));"1"!=urlParams.dev&&(g=this.ui.anonymizeNode(g,!0));g.setAttribute("id",b[c].getId());b[c].viewState&&this.ui.editor.graph.saveViewState(b[c].viewState,g,!0);d.appendChild(g)}return mxUtils.getPrettyXml(d)};
DrawioFile.prototype.compressReportData=function(b,e,d){e=null!=e?e:1E4;null!=d&&null!=b&&b.length>d?b=b.substring(0,d)+"[...]":null!=b&&b.length>e&&(b=Graph.compress(b)+"\n");return b};
DrawioFile.prototype.checksumError=function(b,e,d,c,g){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=b&&b();try{if(this.errorReportsEnabled){if(null!=e)for(b=0;b<e.length;b++)this.ui.anonymizePatch(e[b]);var k=mxUtils.bind(this,function(b){var c=this.compressReportData(JSON.stringify(e,null,2));b=null!=b?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(b.data).documentElement)),
@@ -10123,7 +10123,7 @@ LocalFile.prototype.isRenamable=function(){return!0};LocalFile.prototype.save=fu
LocalFile.prototype.getLatestVersion=function(b,e){null==this.fileHandle?b(null):this.ui.loadFileSystemEntry(this.fileHandle,b,e)};
LocalFile.prototype.saveFile=function(b,e,d,c,g){b!=this.title&&(this.desc=this.fileHandle=null);this.title=b;g||this.updateFileData();var k=this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle());this.setShadowModified(!1);var n=this.getData(),f=mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.contentChanged();null!=d&&d()}),l=mxUtils.bind(this,function(d){if(null!=this.fileHandle){if(!this.savingFile){this.savingFileTime=new Date;this.savingFile=!0;var e=mxUtils.bind(this,
function(b){this.savingFile=!1;null!=c&&c({error:b})});this.saveDraft();this.fileHandle.createWritable().then(mxUtils.bind(this,function(b){this.fileHandle.getFile().then(mxUtils.bind(this,function(c){this.invalidFileHandle=null;this.desc.lastModified==c.lastModified?b.write(k?this.ui.base64ToBlob(d,"image/png"):d).then(mxUtils.bind(this,function(){b.close().then(mxUtils.bind(this,function(){this.fileHandle.getFile().then(mxUtils.bind(this,function(b){try{var c=this.desc;this.savingFile=!1;this.desc=
-b;this.fileSaved(n,c,f,e);this.removeDraft()}catch(A){e(A)}}),e)}),e)}),e):(this.inConflictState=!0,e())}),mxUtils.bind(this,function(b){this.invalidFileHandle=!0;e(b)}))}),e)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(d,b,k?"image/png":"text/xml",k);else if(d.length<MAX_REQUEST_SIZE){var l=b.lastIndexOf("."),l=0<l?b.substring(l+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+l+"&xml="+encodeURIComponent(d)+"&filename="+encodeURIComponent(b)+(k?"&binary=1":""))).simulate(document,
+b;this.fileSaved(n,c,f,e);this.removeDraft()}catch(z){e(z)}}),e)}),e)}),e):(this.inConflictState=!0,e())}),mxUtils.bind(this,function(b){this.invalidFileHandle=!0;e(b)}))}),e)}}else{if(this.ui.isOfflineApp()||this.ui.isLocalFileSave())this.ui.doSaveLocalFile(d,b,k?"image/png":"text/xml",k);else if(d.length<MAX_REQUEST_SIZE){var l=b.lastIndexOf("."),l=0<l?b.substring(l+1):"xml";(new mxXmlRequest(SAVE_URL,"format="+l+"&xml="+encodeURIComponent(d)+"&filename="+encodeURIComponent(b)+(k?"&binary=1":""))).simulate(document,
"_blank")}else this.ui.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(d)}));f()}});k?(e=this.ui.getPngFileProperties(this.ui.fileNode),this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){l(b)}),c,this.ui.getCurrentFile()!=this?n:null,e.scale,e.border)):l(n)};LocalFile.prototype.rename=function(b,e,d){this.title=b;this.descriptorChanged();null!=e&&e()};
LocalFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};LocalLibrary=function(b,e,d){LocalFile.call(this,b,e,d)};mxUtils.extend(LocalLibrary,LocalFile);LocalLibrary.prototype.getHash=function(){return"F"+this.getTitle()};LocalLibrary.prototype.isAutosave=function(){return!1};LocalLibrary.prototype.saveAs=function(b,e,d){this.saveFile(b,!1,e,d)};LocalLibrary.prototype.updateFileData=function(){};LocalLibrary.prototype.open=function(){};StorageFile=function(b,e,d){DrawioFile.call(this,b,e);this.title=d};mxUtils.extend(StorageFile,DrawioFile);StorageFile.prototype.autosaveDelay=2E3;StorageFile.prototype.maxAutosaveDelay=2E4;StorageFile.prototype.type="F";StorageFile.prototype.getMode=function(){return App.MODE_BROWSER};StorageFile.prototype.isAutosaveOptional=function(){return!0};StorageFile.prototype.getHash=function(){return"L"+encodeURIComponent(this.getTitle())};StorageFile.prototype.getTitle=function(){return this.title};
StorageFile.prototype.isRenamable=function(){return!0};StorageFile.prototype.save=function(b,e,d){this.saveAs(this.getTitle(),e,d)};StorageFile.prototype.saveAs=function(b,e,d){DrawioFile.prototype.save.apply(this,arguments);this.saveFile(b,!1,e,d)};
@@ -10139,11 +10139,11 @@ StorageFile.listFiles=function(b,e,d,c){b.getDatabaseItems(function(b){var c=[];
StorageLibrary.prototype.isRenamable=function(b,e,d){return".scratchpad"!=this.title};StorageLibrary.prototype.open=function(){};RemoteFile=function(b,e,d){DrawioFile.call(this,b,e);this.title=d;this.mode=null};mxUtils.extend(RemoteFile,DrawioFile);RemoteFile.prototype.isAutosave=function(){return!1};RemoteFile.prototype.getMode=function(){return this.mode};RemoteFile.prototype.getTitle=function(){return this.title};RemoteFile.prototype.isRenamable=function(){return!1};RemoteFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};RemoteLibrary=function(b,e,d){RemoteFile.call(this,b,e,d.title);this.libObj=d};mxUtils.extend(RemoteLibrary,LocalFile);RemoteLibrary.prototype.getHash=function(){return"R"+encodeURIComponent(JSON.stringify([this.libObj.id,this.libObj.title,this.libObj.downloadUrl]))};RemoteLibrary.prototype.isEditable=function(){return!1};RemoteLibrary.prototype.isRenamable=function(){return!1};RemoteLibrary.prototype.isAutosave=function(){return!1};RemoteLibrary.prototype.save=function(b,e,d){};
RemoteLibrary.prototype.saveAs=function(b,e,d){};RemoteLibrary.prototype.updateFileData=function(){};RemoteLibrary.prototype.open=function(){};UrlLibrary=function(b,e,d){StorageFile.call(this,b,e,d);b=d;e=b.lastIndexOf("/");0<=e&&(b=b.substring(e+1));this.fname=b};mxUtils.extend(UrlLibrary,StorageFile);UrlLibrary.prototype.getHash=function(){return"U"+encodeURIComponent(this.title)};UrlLibrary.prototype.getTitle=function(){return this.fname};UrlLibrary.prototype.isAutosave=function(){return!1};UrlLibrary.prototype.isEditable=function(b,e,d){return!1};UrlLibrary.prototype.saveAs=function(b,e,d){};UrlLibrary.prototype.open=function(){};EmbedFile=function(b,e,d){DrawioFile.call(this,b,e);this.desc=d||{};this.mode=App.MODE_EMBED};mxUtils.extend(EmbedFile,DrawioFile);EmbedFile.prototype.getMode=function(){return this.mode};EmbedFile.prototype.getTitle=function(){return this.desc.title||""};/*
mxClient.IS_IOS || */
-var StorageDialog=function(b,e,d){function c(c,g,k,p,x,A){function q(){mxEvent.addListener(t,"click",null!=A?A:function(){k!=App.MODE_GOOGLE||b.isDriveDomain()?k==App.MODE_GOOGLE&&b.spinner.spin(document.body,mxResources.get("authorizing"))?b.drive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();b.setMode(k,!0);e()})):k==App.MODE_ONEDRIVE&&b.spinner.spin(document.body,mxResources.get("authorizing"))?b.oneDrive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();b.setMode(k,!0);e()})):
-(b.setMode(k,!0),e()):window.location.hostname=DriveClient.prototype.newAppHostname})}f++;++n>d&&(mxUtils.br(l),n=1);var t=document.createElement("a");t.style.overflow="hidden";t.style.display="inline-block";t.className="geBaseButton";t.style.boxSizing="border-box";t.style.fontSize="11px";t.style.position="relative";t.style.margin="4px";t.style.marginTop="8px";t.style.marginBottom="0px";t.style.padding="8px 10px 8px 10px";t.style.width="88px";t.style.height="100px";t.style.whiteSpace="nowrap";t.setAttribute("title",
-g);var y=document.createElement("div");y.style.textOverflow="ellipsis";y.style.overflow="hidden";y.style.position="absolute";y.style.bottom="8px";y.style.left="0px";y.style.right="0px";mxUtils.write(y,g);t.appendChild(y);if(null!=c){var v=document.createElement("img");v.setAttribute("src",c);v.setAttribute("border","0");v.setAttribute("align","absmiddle");v.style.width="60px";v.style.height="60px";v.style.paddingBottom="6px";t.appendChild(v)}else y.style.paddingTop="5px",y.style.whiteSpace="normal",
-mxClient.IS_IOS?(t.style.padding="0px 10px 20px 10px",t.style.top="6px"):mxClient.IS_FF&&(y.style.paddingTop="0px",y.style.marginTop="-2px");if(null!=x)for(c=0;c<x.length;c++)mxUtils.br(y),mxUtils.write(y,x[c]);if(null!=p&&null==b[p]){v.style.visibility="hidden";mxUtils.setOpacity(y,10);var u=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});u.spin(t);var D=window.setTimeout(function(){null==
-b[p]&&(u.stop(),t.style.display="none")},3E4);b.addListener("clientLoaded",mxUtils.bind(this,function(c,f){null!=b[p]&&f.getProperty("client")==b[p]&&(window.clearTimeout(D),mxUtils.setOpacity(y,100),v.style.visibility="",u.stop(),q(),"drive"==p&&null!=m.parentNode&&m.parentNode.removeChild(m))}))}else q();l.appendChild(t)}d=null!=d?d:2;var g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";g.style.paddingTop="0px";g.style.paddingBottom="20px";var k=document.createElement("div");
+var StorageDialog=function(b,e,d){function c(c,p,g,k,x,z){function q(){mxEvent.addListener(t,"click",null!=z?z:function(){g!=App.MODE_GOOGLE||b.isDriveDomain()?g==App.MODE_GOOGLE&&b.spinner.spin(document.body,mxResources.get("authorizing"))?b.drive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();b.setMode(g,!0);e()})):g==App.MODE_ONEDRIVE&&b.spinner.spin(document.body,mxResources.get("authorizing"))?b.oneDrive.checkToken(mxUtils.bind(this,function(){b.spinner.stop();b.setMode(g,!0);e()})):
+(b.setMode(g,!0),e()):window.location.hostname=DriveClient.prototype.newAppHostname})}f++;++n>d&&(mxUtils.br(l),n=1);var t=document.createElement("a");t.style.overflow="hidden";t.style.display="inline-block";t.className="geBaseButton";t.style.boxSizing="border-box";t.style.fontSize="11px";t.style.position="relative";t.style.margin="4px";t.style.marginTop="8px";t.style.marginBottom="0px";t.style.padding="8px 10px 8px 10px";t.style.width="88px";t.style.height="100px";t.style.whiteSpace="nowrap";t.setAttribute("title",
+p);var y=document.createElement("div");y.style.textOverflow="ellipsis";y.style.overflow="hidden";y.style.position="absolute";y.style.bottom="8px";y.style.left="0px";y.style.right="0px";mxUtils.write(y,p);t.appendChild(y);if(null!=c){var v=document.createElement("img");v.setAttribute("src",c);v.setAttribute("border","0");v.setAttribute("align","absmiddle");v.style.width="60px";v.style.height="60px";v.style.paddingBottom="6px";t.appendChild(v)}else y.style.paddingTop="5px",y.style.whiteSpace="normal",
+mxClient.IS_IOS?(t.style.padding="0px 10px 20px 10px",t.style.top="6px"):mxClient.IS_FF&&(y.style.paddingTop="0px",y.style.marginTop="-2px");if(null!=x)for(c=0;c<x.length;c++)mxUtils.br(y),mxUtils.write(y,x[c]);if(null!=k&&null==b[k]){v.style.visibility="hidden";mxUtils.setOpacity(y,10);var u=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});u.spin(t);var D=window.setTimeout(function(){null==
+b[k]&&(u.stop(),t.style.display="none")},3E4);b.addListener("clientLoaded",mxUtils.bind(this,function(c,f){null!=b[k]&&f.getProperty("client")==b[k]&&(window.clearTimeout(D),mxUtils.setOpacity(y,100),v.style.visibility="",u.stop(),q(),"drive"==k&&null!=m.parentNode&&m.parentNode.removeChild(m))}))}else q();l.appendChild(t)}d=null!=d?d:2;var g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace="nowrap";g.style.paddingTop="0px";g.style.paddingBottom="20px";var k=document.createElement("div");
k.style.border="1px solid #d3d3d3";k.style.borderWidth="1px 0px 1px 0px";k.style.padding="10px 0px 20px 0px";var n=0,f=0,l=document.createElement("div");l.style.paddingTop="2px";k.appendChild(l);var m=document.createElement("p"),p=document.createElement("p");p.style.cssText="font-size:22px;padding:4px 0 16px 0;margin:0;color:gray;";mxUtils.write(p,mxResources.get("saveDiagramsTo")+":");g.appendChild(p);g.appendChild(k);n=0;"function"===typeof window.DriveClient&&c(IMAGE_PATH+"/google-drive-logo.svg",
mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive");"function"===typeof window.OneDriveClient&&c(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive");"1"!=urlParams.noDevice&&c(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);!isLocalStorage||"1"!=urlParams.browser&&"1"!=urlParams.offline||c(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER);"function"===typeof window.DropboxClient&&c(IMAGE_PATH+"/dropbox-logo.svg",
mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox");null!=b.gitHub&&c(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub");null!=b.gitLab&&c(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),App.MODE_GITLAB,"gitLab");6>f&&null!=b.notion&&c(IMAGE_PATH+"/notion-logo.svg",mxResources.get("notion"),App.MODE_NOTION,"notion");k=document.createElement("span");k.style.position="absolute";k.style.cursor="pointer";k.style.bottom="27px";k.style.color="gray";k.style.userSelect=
@@ -10163,7 +10163,7 @@ b.mode==App.MODE_GITLAB&&null!=b.gitLab?d(function(){b.gitLab.logout();b.openLin
e,d,c,g,k,n,f,l){n=null!=n?n:"Check out the diagram I made using @drawio";c=document.createElement("div");var m=/^https?:\/\//.test(e)||/^mailto:\/\//.test(e);null!=k?mxUtils.write(c,k):mxUtils.write(c,mxResources.get(5E5>e.length?m?"link":"mainEmbedNotice":"preview")+":");mxUtils.br(c);k=document.createElement("div");k.style.position="absolute";k.style.top="30px";k.style.right="30px";k.style.color="gray";mxUtils.write(k,b.formatFileSize(e.length));c.appendChild(k);var p=document.createElement("textarea");
p.setAttribute("autocomplete","off");p.setAttribute("autocorrect","off");p.setAttribute("autocapitalize","off");p.setAttribute("spellcheck","false");p.style.fontFamily="monospace";p.style.wordBreak="break-all";p.style.marginTop="10px";p.style.resize="none";p.style.height="150px";p.style.width="440px";p.style.border="1px solid gray";p.value=mxResources.get("updatingDocument");c.appendChild(p);mxUtils.br(c);this.init=function(){window.setTimeout(function(){5E5>e.length?(p.value=e,p.focus(),mxClient.IS_GC||
mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)):(p.setAttribute("readonly","true"),p.value=mxResources.get("tooLargeUseDownload"))},0)};k=document.createElement("div");k.style.position="absolute";k.style.bottom="36px";k.style.right="32px";var q=null;!EmbedDialog.showPreviewOption||mxClient.IS_CHROMEAPP&&!m||navigator.standalone||!(m||mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode))||(q=mxUtils.button(null!=f?f:mxResources.get(5E5>
-e.length?"preview":"openInNewWindow"),function(){var c=5E5>e.length?p.value:e;if(null!=g)g(c);else if(m)try{var f=b.openLink(c);null!=f&&(null==d||0<d)&&window.setTimeout(mxUtils.bind(this,function(){try{null!=f&&null!=f.location.href&&f.location.href.substring(0,8)!=c.substring(0,8)&&(f.close(),b.handleError({message:mxResources.get("drawingTooLarge")}))}catch(A){}}),d||500)}catch(A){b.handleError({message:A.message||mxResources.get("drawingTooLarge")})}else{var l=window.open(),l=null!=l?l.document:
+e.length?"preview":"openInNewWindow"),function(){var c=5E5>e.length?p.value:e;if(null!=g)g(c);else if(m)try{var f=b.openLink(c);null!=f&&(null==d||0<d)&&window.setTimeout(mxUtils.bind(this,function(){try{null!=f&&null!=f.location.href&&f.location.href.substring(0,8)!=c.substring(0,8)&&(f.close(),b.handleError({message:mxResources.get("drawingTooLarge")}))}catch(z){}}),d||500)}catch(z){b.handleError({message:z.message||mxResources.get("drawingTooLarge")})}else{var l=window.open(),l=null!=l?l.document:
null;null!=l?(l.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+e+"</body></html>"),l.close()):b.handleError({message:mxResources.get("errorUpdatingPreview")})}}),q.className="geBtn",k.appendChild(q));if(!m||7500<e.length)f=mxUtils.button(mxResources.get("download"),function(){b.hideDialog();b.saveData(null!=l?l:"embed.txt","txt",e,"text/plain")}),f.className="geBtn",k.appendChild(f);if(m&&(!b.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>
e.length){var t=mxUtils.button("",function(){try{var c="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(p.value);b.openLink(c)}catch(u){b.handleError({message:u.message||mxResources.get("drawingTooLarge")})}});f=document.createElement("img");f.setAttribute("src",Editor.facebookImage);f.setAttribute("width","18");f.setAttribute("height","18");f.setAttribute("border","0");t.appendChild(f);t.setAttribute("title",mxResources.get("facebook")+" ("+b.formatFileSize(51200)+" max)");t.style.verticalAlign=
"bottom";t.style.paddingTop="4px";t.style.minWidth="46px";t.className="geBtn";k.appendChild(t)}7168>e.length&&(t=mxUtils.button("",function(){try{var c="https://twitter.com/intent/tweet?text="+encodeURIComponent(n)+"&url="+encodeURIComponent(p.value);b.openLink(c)}catch(u){b.handleError({message:u.message||mxResources.get("drawingTooLarge")})}}),f=document.createElement("img"),f.setAttribute("src",Editor.tweetImage),f.setAttribute("width","18"),f.setAttribute("height","18"),f.setAttribute("border",
@@ -10171,15 +10171,15 @@ e.length){var t=mxUtils.button("",function(){try{var c="https://www.facebook.com
f=document.createElement("img"),f.setAttribute("src",Editor.mailImage),f.setAttribute("width","18"),f.setAttribute("height","18"),f.setAttribute("border","0"),f.style.marginBottom="5px",Editor.isDarkMode()&&(f.style.filter="invert(100%)"),t.appendChild(f),t.style.verticalAlign="bottom",t.style.paddingTop="4px",t.style.minWidth="46px",t.className="geBtn",k.appendChild(t));f=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});k.appendChild(f);t=mxUtils.button(mxResources.get("copy"),
function(){p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");b.alert(mxResources.get("copiedToClipboard"))});5E5>e.length?mxClient.IS_SF||null!=document.documentMode?f.className="geBtn gePrimaryBtn":(k.appendChild(t),t.className="geBtn gePrimaryBtn",f.className="geBtn"):(k.appendChild(q),f.className="geBtn",q.className="geBtn gePrimaryBtn");c.appendChild(k);this.container=c};
EmbedDialog.showPreviewOption=!0;
-var GoogleSitesDialog=function(b,e){function d(){var b=null!=D&&null!=D.getTitle()?D.getTitle():this.defaultFilename;if(C.checked&&""!=t.value){var c="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(t.value));null!=b&&(c+="&title="+encodeURIComponent(b));0<G.length&&(c+="&s="+G);""!=v.value&&"0"!=v.value&&(c+="&border="+v.value);""!=q.value&&(c+="&height="+q.value);c+="&pan="+(u.checked?"1":"0");c+="&zoom="+(x.checked?"1":"0");c+="&fit="+(y.checked?"1":"0");
-c+="&resize="+(B.checked?"1":"0");c+="&x0="+Number(p.value);c+="&y0="+l;g.mathEnabled&&(c+="&math=1");z.checked?c+="&edit=_blank":A.checked&&(c+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));m.value=c}else D.constructor==DriveFile||D.constructor==DropboxFile?(c="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=t.value?c+=encodeURIComponent(mxUtils.htmlEntities(t.value))+"&type=3":(c+=D.getHash().substring(1),c=D.constructor==DropboxFile?c+"&type=2":c+"&type=1"),null!=
+var GoogleSitesDialog=function(b,e){function d(){var b=null!=D&&null!=D.getTitle()?D.getTitle():this.defaultFilename;if(C.checked&&""!=t.value){var c="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(t.value));null!=b&&(c+="&title="+encodeURIComponent(b));0<E.length&&(c+="&s="+E);""!=v.value&&"0"!=v.value&&(c+="&border="+v.value);""!=q.value&&(c+="&height="+q.value);c+="&pan="+(u.checked?"1":"0");c+="&zoom="+(x.checked?"1":"0");c+="&fit="+(y.checked?"1":"0");
+c+="&resize="+(B.checked?"1":"0");c+="&x0="+Number(p.value);c+="&y0="+l;g.mathEnabled&&(c+="&math=1");A.checked?c+="&edit=_blank":z.checked&&(c+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));m.value=c}else D.constructor==DriveFile||D.constructor==DropboxFile?(c="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=t.value?c+=encodeURIComponent(mxUtils.htmlEntities(t.value))+"&type=3":(c+=D.getHash().substring(1),c=D.constructor==DropboxFile?c+"&type=2":c+"&type=1"),null!=
b&&(c+="&title="+encodeURIComponent(b)),""!=q.value&&(b=parseInt(q.value)+parseInt(p.value),c+="&height="+b),m.value=c):m.value=""}var c=document.createElement("div"),g=b.editor.graph,k=g.getGraphBounds(),n=g.view.scale,f=Math.floor(k.x/n-g.view.translate.x),l=Math.floor(k.y/n-g.view.translate.y);mxUtils.write(c,mxResources.get("googleGadget")+":");mxUtils.br(c);var m=document.createElement("input");m.setAttribute("type","text");m.style.marginBottom="8px";m.style.marginTop="2px";m.style.width="410px";
c.appendChild(m);mxUtils.br(c);this.init=function(){m.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?m.select():document.execCommand("selectAll",!1,null)};mxUtils.write(c,mxResources.get("top")+":");var p=document.createElement("input");p.setAttribute("type","text");p.setAttribute("size","4");p.style.marginRight="16px";p.style.marginLeft="4px";p.value=f;c.appendChild(p);mxUtils.write(c,mxResources.get("height")+":");var q=document.createElement("input");q.setAttribute("type","text");
q.setAttribute("size","4");q.style.marginLeft="4px";q.value=Math.ceil(k.height/n);c.appendChild(q);mxUtils.br(c);k=document.createElement("hr");k.setAttribute("size","1");k.style.marginBottom="16px";k.style.marginTop="16px";c.appendChild(k);mxUtils.write(c,mxResources.get("publicDiagramUrl")+":");mxUtils.br(c);var t=document.createElement("input");t.setAttribute("type","text");t.setAttribute("size","28");t.style.marginBottom="8px";t.style.marginTop="2px";t.style.width="410px";t.value=e||"";c.appendChild(t);
mxUtils.br(c);mxUtils.write(c,mxResources.get("borderWidth")+":");var v=document.createElement("input");v.setAttribute("type","text");v.setAttribute("size","3");v.style.marginBottom="8px";v.style.marginLeft="4px";v.value="0";c.appendChild(v);mxUtils.br(c);var u=document.createElement("input");u.setAttribute("type","checkbox");u.setAttribute("checked","checked");u.defaultChecked=!0;u.style.marginLeft="16px";c.appendChild(u);mxUtils.write(c,mxResources.get("pan")+" ");var x=document.createElement("input");
-x.setAttribute("type","checkbox");x.setAttribute("checked","checked");x.defaultChecked=!0;x.style.marginLeft="8px";c.appendChild(x);mxUtils.write(c,mxResources.get("zoom")+" ");var A=document.createElement("input");A.setAttribute("type","checkbox");A.style.marginLeft="8px";A.setAttribute("title",window.location.href);c.appendChild(A);mxUtils.write(c,mxResources.get("edit")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";c.appendChild(z);mxUtils.write(c,
+x.setAttribute("type","checkbox");x.setAttribute("checked","checked");x.defaultChecked=!0;x.style.marginLeft="8px";c.appendChild(x);mxUtils.write(c,mxResources.get("zoom")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";z.setAttribute("title",window.location.href);c.appendChild(z);mxUtils.write(c,mxResources.get("edit")+" ");var A=document.createElement("input");A.setAttribute("type","checkbox");A.style.marginLeft="8px";c.appendChild(A);mxUtils.write(c,
mxResources.get("asNew")+" ");mxUtils.br(c);var B=document.createElement("input");B.setAttribute("type","checkbox");B.setAttribute("checked","checked");B.defaultChecked=!0;B.style.marginLeft="16px";c.appendChild(B);mxUtils.write(c,mxResources.get("resize")+" ");var y=document.createElement("input");y.setAttribute("type","checkbox");y.style.marginLeft="8px";c.appendChild(y);mxUtils.write(c,mxResources.get("fit")+" ");var C=document.createElement("input");C.setAttribute("type","checkbox");C.style.marginLeft=
-"8px";c.appendChild(C);mxUtils.write(c,mxResources.get("embed")+" ");var G=b.getBasenames().join(";"),D=b.getCurrentFile();mxEvent.addListener(u,"change",d);mxEvent.addListener(x,"change",d);mxEvent.addListener(B,"change",d);mxEvent.addListener(y,"change",d);mxEvent.addListener(A,"change",d);mxEvent.addListener(z,"change",d);mxEvent.addListener(C,"change",d);mxEvent.addListener(q,"change",d);mxEvent.addListener(p,"change",d);mxEvent.addListener(v,"change",d);mxEvent.addListener(t,"change",d);d();
+"8px";c.appendChild(C);mxUtils.write(c,mxResources.get("embed")+" ");var E=b.getBasenames().join(";"),D=b.getCurrentFile();mxEvent.addListener(u,"change",d);mxEvent.addListener(x,"change",d);mxEvent.addListener(B,"change",d);mxEvent.addListener(y,"change",d);mxEvent.addListener(z,"change",d);mxEvent.addListener(A,"change",d);mxEvent.addListener(C,"change",d);mxEvent.addListener(q,"change",d);mxEvent.addListener(p,"change",d);mxEvent.addListener(v,"change",d);mxEvent.addListener(t,"change",d);d();
mxEvent.addListener(m,"click",function(){m.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?m.select():document.execCommand("selectAll",!1,null)});k=document.createElement("div");k.style.paddingTop="12px";k.style.textAlign="right";n=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});n.className="geBtn gePrimaryBtn";k.appendChild(n);c.appendChild(k);this.container=c},CreateGraphDialog=function(b,e,d){var c=document.createElement("div");c.style.textAlign="right";this.init=
function(){var e=document.createElement("div");e.style.position="relative";e.style.border="1px solid gray";e.style.width="100%";e.style.height="360px";e.style.overflow="hidden";e.style.marginBottom="16px";mxEvent.disableContextMenu(e);c.appendChild(e);var k=new Graph(e);k.setCellsCloneable(!0);k.setPanning(!0);k.setAllowDanglingEdges(!1);k.connectionHandler.select=!1;k.view.setTranslate(20,20);k.border=20;k.panningHandler.useLeftButtonForPanning=!0;var n="curved=1;";k.cellRenderer.installCellOverlayListeners=
function(b,c,f){mxCellRenderer.prototype.installCellOverlayListeners.apply(this,arguments);mxEvent.addListener(f.node,mxClient.IS_POINTER?"pointerdown":"mousedown",function(f){c.fireEvent(new mxEventObject("pointerdown","event",f,"state",b))});!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&mxEvent.addListener(f.node,"touchstart",function(f){c.fireEvent(new mxEventObject("pointerdown","event",f,"state",b))})};k.getAllConnectionConstraints=function(){return null};k.connectionHandler.marker.highlight.keepOnTop=
@@ -10194,28 +10194,28 @@ CreateGraphDialog.prototype.connectImage=new mxImage(mxClient.IS_SVG?"data:image
"/handle-connect.png",26,26);
var BackgroundImageDialog=function(b,e,d){var c=document.createElement("div");c.style.whiteSpace="nowrap";var g=document.createElement("h2");mxUtils.write(g,mxResources.get("backgroundImage"));g.style.marginTop="0px";c.appendChild(g);var k=null!=d&&null!=d.originalSrc,g=!1,n=document.createElement("input");n.style.cssText="margin-right:8px;margin-bottom:8px;";n.setAttribute("value","url");n.setAttribute("type","radio");n.setAttribute("name","geBackgroundImageDialogOption");var f=document.createElement("input");
f.style.cssText="margin-right:8px;margin-bottom:8px;";f.setAttribute("value","url");f.setAttribute("type","radio");f.setAttribute("name","geBackgroundImageDialogOption");var l=document.createElement("input");l.setAttribute("type","text");l.style.marginBottom="8px";l.style.width="320px";l.value=k||null==d?"":d.src;var m=document.createElement("select");m.style.width="320px";if(null!=b.pages)for(var p=0;p<b.pages.length;p++){var q=document.createElement("option");mxUtils.write(q,b.pages[p].getName()||
-mxResources.get("pageWithNumber",[p+1]));q.setAttribute("value","data:page/id,"+b.pages[p].getId());b.pages[p]==b.currentPage&&q.setAttribute("disabled","disabled");null!=d&&d.originalSrc==q.getAttribute("value")&&(q.setAttribute("selected","selected"),g=!0);m.appendChild(q)}k||null!=b.pages&&1!=b.pages.length||(n.style.display="none",f.style.display="none",m.style.display="none");var t=!1,v=!1,u=function(c,d){t||null!=c&&v||(f.checked?null!=d&&d(m.value):""==l.value||b.isOffline()?(x.value="",A.value=
-"",null!=d&&d("")):(l.value=mxUtils.trim(l.value),b.loadImage(l.value,function(b){x.value=b.width;A.value=b.height;null!=d&&d(l.value)},function(){b.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"));x.value="";A.value="";null!=d&&d(null)})))};this.init=function(){k?m.focus():l.focus();mxEvent.addListener(m,"focus",function(){n.removeAttribute("checked");f.setAttribute("checked","checked");f.checked=!0});mxEvent.addListener(l,"focus",function(){f.removeAttribute("checked");
+mxResources.get("pageWithNumber",[p+1]));q.setAttribute("value","data:page/id,"+b.pages[p].getId());b.pages[p]==b.currentPage&&q.setAttribute("disabled","disabled");null!=d&&d.originalSrc==q.getAttribute("value")&&(q.setAttribute("selected","selected"),g=!0);m.appendChild(q)}k||null!=b.pages&&1!=b.pages.length||(n.style.display="none",f.style.display="none",m.style.display="none");var t=!1,v=!1,u=function(c,d){t||null!=c&&v||(f.checked?null!=d&&d(m.value):""==l.value||b.isOffline()?(x.value="",z.value=
+"",null!=d&&d("")):(l.value=mxUtils.trim(l.value),b.loadImage(l.value,function(b){x.value=b.width;z.value=b.height;null!=d&&d(l.value)},function(){b.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"));x.value="";z.value="";null!=d&&d(null)})))};this.init=function(){k?m.focus():l.focus();mxEvent.addListener(m,"focus",function(){n.removeAttribute("checked");f.setAttribute("checked","checked");f.checked=!0});mxEvent.addListener(l,"focus",function(){f.removeAttribute("checked");
n.setAttribute("checked","checked");n.checked=!0});if(Graph.fileSupport){l.setAttribute("placeholder",mxResources.get("dragImagesHere"));var d=c.parentNode,e=null;mxEvent.addListener(d,"dragleave",function(b){null!=e&&(e.parentNode.removeChild(e),e=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(d,"dragover",mxUtils.bind(this,function(c){null==e&&(!mxClient.IS_IE||10<document.documentMode)&&(e=b.highlightElement(d));c.stopPropagation();c.preventDefault()}));mxEvent.addListener(d,
"drop",mxUtils.bind(this,function(c){null!=e&&(e.parentNode.removeChild(e),e=null);if(0<c.dataTransfer.files.length)b.importFiles(c.dataTransfer.files,0,0,b.maxBackgroundSize,function(b,c,f,d,e,m){l.value=b;u()},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var c=0;c<b.length;c++)b[c]()},!0,b.maxBackgroundBytes,b.maxBackgroundBytes,!0);else if(0<=mxUtils.indexOf(c.dataTransfer.types,"text/uri-list")){var f=c.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(f)&&
-(l.value=decodeURIComponent(f),u())}c.stopPropagation();c.preventDefault()}),!1)}};c.appendChild(n);c.appendChild(l);mxUtils.br(c);p=document.createElement("span");p.style.marginLeft="30px";mxUtils.write(p,mxResources.get("width")+":");c.appendChild(p);var x=document.createElement("input");x.setAttribute("type","text");x.style.width="60px";x.style.marginLeft="8px";x.style.marginRight="16px";x.value=null==d||k?"":d.width;c.appendChild(x);mxUtils.write(c,mxResources.get("height")+":");var A=document.createElement("input");
-A.setAttribute("type","text");A.style.width="60px";A.style.marginLeft="8px";A.style.marginRight="16px";A.value=null==d||k?"":d.height;c.appendChild(A);mxUtils.br(c);mxUtils.br(c);mxEvent.addListener(l,"change",u);ImageDialog.filePicked=function(b){b.action==google.picker.Action.PICKED&&null!=b.docs[0].thumbnails&&(b=b.docs[0].thumbnails[b.docs[0].thumbnails.length-1],null!=b&&(l.value=b.url,u()));l.focus()};c.appendChild(f);c.appendChild(m);mxUtils.br(c);k?(f.setAttribute("checked","checked"),f.checked=
-!0):(n.setAttribute("checked","checked"),n.checked=!0);if(!g&&f.checked){var z=document.createElement("option");mxUtils.write(z,mxResources.get("pageNotFound"));z.setAttribute("disabled","disabled");z.setAttribute("selected","selected");z.setAttribute("value","pageNotFound");m.appendChild(z);mxEvent.addListener(m,"change",function(){null==z.parentNode||z.selected||z.parentNode.removeChild(z)})}d=document.createElement("div");d.style.marginTop="30px";d.style.textAlign="right";g=mxUtils.button(mxResources.get("reset"),
-function(){l.value="";x.value="";A.value="";n.checked=!0;t=!1});mxEvent.addGestureListeners(g,function(){t=!0});g.className="geBtn";g.width="100";d.appendChild(g);g=mxUtils.button(mxResources.get("cancel"),function(){t=!0;b.hideDialog()});g.className="geBtn";b.editor.cancelFirst&&d.appendChild(g);applyBtn=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();u(null,function(b){e(""!=b&&null!=b?new mxImage(b,x.value,A.value):null,null==b)})});mxEvent.addGestureListeners(applyBtn,function(){v=
+(l.value=decodeURIComponent(f),u())}c.stopPropagation();c.preventDefault()}),!1)}};c.appendChild(n);c.appendChild(l);mxUtils.br(c);p=document.createElement("span");p.style.marginLeft="30px";mxUtils.write(p,mxResources.get("width")+":");c.appendChild(p);var x=document.createElement("input");x.setAttribute("type","text");x.style.width="60px";x.style.marginLeft="8px";x.style.marginRight="16px";x.value=null==d||k?"":d.width;c.appendChild(x);mxUtils.write(c,mxResources.get("height")+":");var z=document.createElement("input");
+z.setAttribute("type","text");z.style.width="60px";z.style.marginLeft="8px";z.style.marginRight="16px";z.value=null==d||k?"":d.height;c.appendChild(z);mxUtils.br(c);mxUtils.br(c);mxEvent.addListener(l,"change",u);ImageDialog.filePicked=function(b){b.action==google.picker.Action.PICKED&&null!=b.docs[0].thumbnails&&(b=b.docs[0].thumbnails[b.docs[0].thumbnails.length-1],null!=b&&(l.value=b.url,u()));l.focus()};c.appendChild(f);c.appendChild(m);mxUtils.br(c);k?(f.setAttribute("checked","checked"),f.checked=
+!0):(n.setAttribute("checked","checked"),n.checked=!0);if(!g&&f.checked){var A=document.createElement("option");mxUtils.write(A,mxResources.get("pageNotFound"));A.setAttribute("disabled","disabled");A.setAttribute("selected","selected");A.setAttribute("value","pageNotFound");m.appendChild(A);mxEvent.addListener(m,"change",function(){null==A.parentNode||A.selected||A.parentNode.removeChild(A)})}d=document.createElement("div");d.style.marginTop="30px";d.style.textAlign="right";g=mxUtils.button(mxResources.get("reset"),
+function(){l.value="";x.value="";z.value="";n.checked=!0;t=!1});mxEvent.addGestureListeners(g,function(){t=!0});g.className="geBtn";g.width="100";d.appendChild(g);g=mxUtils.button(mxResources.get("cancel"),function(){t=!0;b.hideDialog()});g.className="geBtn";b.editor.cancelFirst&&d.appendChild(g);applyBtn=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();u(null,function(b){e(""!=b&&null!=b?new mxImage(b,x.value,z.value):null,null==b)})});mxEvent.addGestureListeners(applyBtn,function(){v=
!0});applyBtn.className="geBtn gePrimaryBtn";d.appendChild(applyBtn);b.editor.cancelFirst||d.appendChild(g);c.appendChild(d);this.container=c},ParseDialog=function(b,e,d){function c(c,f,d){var e=c.split("\n");if("plantUmlPng"==f||"plantUmlSvg"==f||"plantUmlTxt"==f){if(b.spinner.spin(document.body,mxResources.get("inserting"))){var l=function(c,f,e,l,p){k=mxEvent.isAltDown(d)?k:m.getCenterInsertPoint(new mxRectangle(0,0,l,p));var g=null;m.getModel().beginUpdate();try{g="txt"==f?b.insertAsPreText(e,
-k.x,k.y):m.insertVertex(null,null,null,k.x,k.y,l,p,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b.convertDataUri(e)+";"),m.setAttributeForCell(g,"plantUmlData",JSON.stringify({data:c,format:f},null,2))}finally{m.getModel().endUpdate()}null!=g&&(m.setSelectionCell(g),m.scrollCellToVisible(g))},m=b.editor.graph,g="plantUmlTxt"==f?"txt":"plantUmlPng"==f?"png":"svg";"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml"==
-c&&"svg"==g?window.setTimeout(function(){b.spinner.stop();l(c,g,"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U2NyaXB0VHlwZT0iYXBwbGljYXRpb24vZWNtYXNjcmlwdCIgY29udGVudFN0eWxlVHlwZT0idGV4dC9jc3MiIGhlaWdodD0iMjEycHgiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHN0eWxlPSJ3aWR0aDoyOTVweDtoZWlnaHQ6MjEycHg7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyOTUgMjEyIiB3aWR0aD0iMjk1cHgiIHpvb21BbmRQYW49Im1hZ25pZnkiPjxkZWZzLz48Zz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsgc3Ryb2tlLWRhc2hhcnJheTogNS4wLDUuMDsiIHgxPSIzMSIgeDI9IjMxIiB5MT0iMzQuNDg4MyIgeTI9IjE3MS43MzA1Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7IHN0cm9rZS1kYXNoYXJyYXk6IDUuMCw1LjA7IiB4MT0iMjY0LjUiIHgyPSIyNjQuNSIgeTE9IjM0LjQ4ODMiIHkyPSIxNzEuNzMwNSIvPjxyZWN0IGZpbGw9IiNGRUZFQ0UiIGhlaWdodD0iMzAuNDg4MyIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjU7IiB3aWR0aD0iNDciIHg9IjgiIHk9IjMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIzMyIgeD0iMTUiIHk9IjIzLjUzNTIiPkFsaWNlPC90ZXh0PjxyZWN0IGZpbGw9IiNGRUZFQ0UiIGhlaWdodD0iMzAuNDg4MyIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjU7IiB3aWR0aD0iNDciIHg9IjgiIHk9IjE3MC43MzA1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIgdGV4dExlbmd0aD0iMzMiIHg9IjE1IiB5PSIxOTEuMjY1NiI+QWxpY2U8L3RleHQ+PHJlY3QgZmlsbD0iI0ZFRkVDRSIgaGVpZ2h0PSIzMC40ODgzIiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuNTsiIHdpZHRoPSI0MCIgeD0iMjQ0LjUiIHk9IjMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIyNiIgeD0iMjUxLjUiIHk9IjIzLjUzNTIiPkJvYjwvdGV4dD48cmVjdCBmaWxsPSIjRkVGRUNFIiBoZWlnaHQ9IjMwLjQ4ODMiIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS41OyIgd2lkdGg9IjQwIiB4PSIyNDQuNSIgeT0iMTcwLjczMDUiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIyNiIgeD0iMjUxLjUiIHk9IjE5MS4yNjU2Ij5Cb2I8L3RleHQ+PHBvbHlnb24gZmlsbD0iI0E4MDAzNiIgcG9pbnRzPSIyNTIuNSw2MS43OTg4LDI2Mi41LDY1Ljc5ODgsMjUyLjUsNjkuNzk4OCwyNTYuNSw2NS43OTg4IiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiIHgxPSIzMS41IiB4Mj0iMjU4LjUiIHkxPSI2NS43OTg4IiB5Mj0iNjUuNzk4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmdBbmRHbHlwaHMiIHRleHRMZW5ndGg9IjE0NyIgeD0iMzguNSIgeT0iNjEuMDU2NiI+QXV0aGVudGljYXRpb24gUmVxdWVzdDwvdGV4dD48cG9seWdvbiBmaWxsPSIjQTgwMDM2IiBwb2ludHM9IjQyLjUsOTEuMTA5NCwzMi41LDk1LjEwOTQsNDIuNSw5OS4xMDk0LDM4LjUsOTUuMTA5NCIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7IHN0cm9rZS1kYXNoYXJyYXk6IDIuMCwyLjA7IiB4MT0iMzYuNSIgeDI9IjI2My41IiB5MT0iOTUuMTA5NCIgeTI9Ijk1LjEwOTQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIxNTciIHg9IjQ4LjUiIHk9IjkwLjM2NzIiPkF1dGhlbnRpY2F0aW9uIFJlc3BvbnNlPC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiNBODAwMzYiIHBvaW50cz0iMjUyLjUsMTIwLjQxOTksMjYyLjUsMTI0LjQxOTksMjUyLjUsMTI4LjQxOTksMjU2LjUsMTI0LjQxOTkiIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS4wOyIgeDE9IjMxLjUiIHgyPSIyNTguNSIgeTE9IjEyNC40MTk5IiB5Mj0iMTI0LjQxOTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIxOTkiIHg9IjM4LjUiIHk9IjExOS42Nzc3Ij5Bbm90aGVyIGF1dGhlbnRpY2F0aW9uIFJlcXVlc3Q8L3RleHQ+PHBvbHlnb24gZmlsbD0iI0E4MDAzNiIgcG9pbnRzPSI0Mi41LDE0OS43MzA1LDMyLjUsMTUzLjczMDUsNDIuNSwxNTcuNzMwNSwzOC41LDE1My43MzA1IiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsgc3Ryb2tlLWRhc2hhcnJheTogMi4wLDIuMDsiIHgxPSIzNi41IiB4Mj0iMjYzLjUiIHkxPSIxNTMuNzMwNSIgeTI9IjE1My43MzA1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIgdGV4dExlbmd0aD0iMjA5IiB4PSI0OC41IiB5PSIxNDguOTg4MyI+QW5vdGhlciBhdXRoZW50aWNhdGlvbiBSZXNwb25zZTwvdGV4dD48IS0tTUQ1PVs3ZjNlNGQwYzkwMWVmZGJjNTdlYjQ0MjQ5YTNiODE5N10KQHN0YXJ0dW1sDQpza2lucGFyYW0gc2hhZG93aW5nIGZhbHNlDQpBbGljZSAtPiBCb2I6IEF1dGhlbnRpY2F0aW9uIFJlcXVlc3QNCkJvYiAtIC0+IEFsaWNlOiBBdXRoZW50aWNhdGlvbiBSZXNwb25zZQ0KDQpBbGljZSAtPiBCb2I6IEFub3RoZXIgYXV0aGVudGljYXRpb24gUmVxdWVzdA0KQWxpY2UgPC0gLSBCb2I6IEFub3RoZXIgYXV0aGVudGljYXRpb24gUmVzcG9uc2UNCkBlbmR1bWwNCgpQbGFudFVNTCB2ZXJzaW9uIDEuMjAyMC4wMihTdW4gTWFyIDAxIDA0OjIyOjA3IENTVCAyMDIwKQooTUlUIHNvdXJjZSBkaXN0cmlidXRpb24pCkphdmEgUnVudGltZTogT3BlbkpESyBSdW50aW1lIEVudmlyb25tZW50CkpWTTogT3BlbkpESyA2NC1CaXQgU2VydmVyIFZNCkphdmEgVmVyc2lvbjogMTIrMzMKT3BlcmF0aW5nIFN5c3RlbTogTWFjIE9TIFgKRGVmYXVsdCBFbmNvZGluZzogVVRGLTgKTGFuZ3VhZ2U6IGVuCkNvdW50cnk6IFVTCi0tPjwvZz48L3N2Zz4=",
-295,212)},200):b.generatePlantUmlImage(c,g,function(f,e,d){b.spinner.stop();l(c,g,f,e,d)},function(c){b.handleError(c)})}}else if("mermaid"==f)b.spinner.spin(document.body,mxResources.get("inserting"))&&(m=b.editor.graph,b.generateMermaidImage(c,g,function(f,e,l){k=mxEvent.isAltDown(d)?k:m.getCenterInsertPoint(new mxRectangle(0,0,e,l));b.spinner.stop();var p=null;m.getModel().beginUpdate();try{p=m.insertVertex(null,null,null,k.x,k.y,e,l,"shape=image;noLabel=1;verticalAlign=top;imageAspect=1;image="+
-f+";"),m.setAttributeForCell(p,"mermaidData",JSON.stringify({data:c,config:EditorUi.defaultMermaidConfig},null,2))}finally{m.getModel().endUpdate()}null!=p&&(m.setSelectionCell(p),m.scrollCellToVisible(p))},function(c){b.handleError(c)}));else if("table"==f){f=null;for(var p=[],q=0,t={},n=0;n<e.length;n++){var v=mxUtils.trim(e[n]);if("primary key"==v.substring(0,11).toLowerCase()){var u=v.match(/\((.+)\)/);u&&u[1]&&(t[u[1]]=!0);e.splice(n,1)}else 0<v.toLowerCase().indexOf("primary key")&&(t[v.split(" ")[0]]=
-!0,e[n]=mxUtils.trim(v.replace(/primary key/i,"")))}for(n=0;n<e.length;n++)if(v=mxUtils.trim(e[n]),"create table"==v.substring(0,12).toLowerCase())v=mxUtils.trim(v.substring(12)),"("==v.charAt(v.length-1)&&(v=mxUtils.trim(v.substring(0,v.length-1))),f=new mxCell(v,new mxGeometry(q,0,160,40),"shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;"),f.vertex=!0,p.push(f),v=b.editor.graph.getPreferredSizeForCell(x),null!=
+k.x,k.y):m.insertVertex(null,null,null,k.x,k.y,l,p,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b.convertDataUri(e)+";"),m.setAttributeForCell(g,"plantUmlData",JSON.stringify({data:c,format:f},null,2))}finally{m.getModel().endUpdate()}null!=g&&(m.setSelectionCell(g),m.scrollCellToVisible(g))},m=b.editor.graph,p="plantUmlTxt"==f?"txt":"plantUmlPng"==f?"png":"svg";"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml"==
+c&&"svg"==p?window.setTimeout(function(){b.spinner.stop();l(c,p,"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U2NyaXB0VHlwZT0iYXBwbGljYXRpb24vZWNtYXNjcmlwdCIgY29udGVudFN0eWxlVHlwZT0idGV4dC9jc3MiIGhlaWdodD0iMjEycHgiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHN0eWxlPSJ3aWR0aDoyOTVweDtoZWlnaHQ6MjEycHg7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyOTUgMjEyIiB3aWR0aD0iMjk1cHgiIHpvb21BbmRQYW49Im1hZ25pZnkiPjxkZWZzLz48Zz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsgc3Ryb2tlLWRhc2hhcnJheTogNS4wLDUuMDsiIHgxPSIzMSIgeDI9IjMxIiB5MT0iMzQuNDg4MyIgeTI9IjE3MS43MzA1Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7IHN0cm9rZS1kYXNoYXJyYXk6IDUuMCw1LjA7IiB4MT0iMjY0LjUiIHgyPSIyNjQuNSIgeTE9IjM0LjQ4ODMiIHkyPSIxNzEuNzMwNSIvPjxyZWN0IGZpbGw9IiNGRUZFQ0UiIGhlaWdodD0iMzAuNDg4MyIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjU7IiB3aWR0aD0iNDciIHg9IjgiIHk9IjMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIzMyIgeD0iMTUiIHk9IjIzLjUzNTIiPkFsaWNlPC90ZXh0PjxyZWN0IGZpbGw9IiNGRUZFQ0UiIGhlaWdodD0iMzAuNDg4MyIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjU7IiB3aWR0aD0iNDciIHg9IjgiIHk9IjE3MC43MzA1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIgdGV4dExlbmd0aD0iMzMiIHg9IjE1IiB5PSIxOTEuMjY1NiI+QWxpY2U8L3RleHQ+PHJlY3QgZmlsbD0iI0ZFRkVDRSIgaGVpZ2h0PSIzMC40ODgzIiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuNTsiIHdpZHRoPSI0MCIgeD0iMjQ0LjUiIHk9IjMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIyNiIgeD0iMjUxLjUiIHk9IjIzLjUzNTIiPkJvYjwvdGV4dD48cmVjdCBmaWxsPSIjRkVGRUNFIiBoZWlnaHQ9IjMwLjQ4ODMiIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS41OyIgd2lkdGg9IjQwIiB4PSIyNDQuNSIgeT0iMTcwLjczMDUiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIyNiIgeD0iMjUxLjUiIHk9IjE5MS4yNjU2Ij5Cb2I8L3RleHQ+PHBvbHlnb24gZmlsbD0iI0E4MDAzNiIgcG9pbnRzPSIyNTIuNSw2MS43OTg4LDI2Mi41LDY1Ljc5ODgsMjUyLjUsNjkuNzk4OCwyNTYuNSw2NS43OTg4IiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiIHgxPSIzMS41IiB4Mj0iMjU4LjUiIHkxPSI2NS43OTg4IiB5Mj0iNjUuNzk4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmdBbmRHbHlwaHMiIHRleHRMZW5ndGg9IjE0NyIgeD0iMzguNSIgeT0iNjEuMDU2NiI+QXV0aGVudGljYXRpb24gUmVxdWVzdDwvdGV4dD48cG9seWdvbiBmaWxsPSIjQTgwMDM2IiBwb2ludHM9IjQyLjUsOTEuMTA5NCwzMi41LDk1LjEwOTQsNDIuNSw5OS4xMDk0LDM4LjUsOTUuMTA5NCIgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTogI0E4MDAzNjsgc3Ryb2tlLXdpZHRoOiAxLjA7IHN0cm9rZS1kYXNoYXJyYXk6IDIuMCwyLjA7IiB4MT0iMzYuNSIgeDI9IjI2My41IiB5MT0iOTUuMTA5NCIgeTI9Ijk1LjEwOTQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIxNTciIHg9IjQ4LjUiIHk9IjkwLjM2NzIiPkF1dGhlbnRpY2F0aW9uIFJlc3BvbnNlPC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiNBODAwMzYiIHBvaW50cz0iMjUyLjUsMTIwLjQxOTksMjYyLjUsMTI0LjQxOTksMjUyLjUsMTI4LjQxOTksMjU2LjUsMTI0LjQxOTkiIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS4wOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6ICNBODAwMzY7IHN0cm9rZS13aWR0aDogMS4wOyIgeDE9IjMxLjUiIHgyPSIyNTguNSIgeTE9IjEyNC40MTk5IiB5Mj0iMTI0LjQxOTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhzIiB0ZXh0TGVuZ3RoPSIxOTkiIHg9IjM4LjUiIHk9IjExOS42Nzc3Ij5Bbm90aGVyIGF1dGhlbnRpY2F0aW9uIFJlcXVlc3Q8L3RleHQ+PHBvbHlnb24gZmlsbD0iI0E4MDAzNiIgcG9pbnRzPSI0Mi41LDE0OS43MzA1LDMyLjUsMTUzLjczMDUsNDIuNSwxNTcuNzMwNSwzOC41LDE1My43MzA1IiBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiAjQTgwMDM2OyBzdHJva2Utd2lkdGg6IDEuMDsgc3Ryb2tlLWRhc2hhcnJheTogMi4wLDIuMDsiIHgxPSIzNi41IiB4Mj0iMjYzLjUiIHkxPSIxNTMuNzMwNSIgeTI9IjE1My43MzA1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIgdGV4dExlbmd0aD0iMjA5IiB4PSI0OC41IiB5PSIxNDguOTg4MyI+QW5vdGhlciBhdXRoZW50aWNhdGlvbiBSZXNwb25zZTwvdGV4dD48IS0tTUQ1PVs3ZjNlNGQwYzkwMWVmZGJjNTdlYjQ0MjQ5YTNiODE5N10KQHN0YXJ0dW1sDQpza2lucGFyYW0gc2hhZG93aW5nIGZhbHNlDQpBbGljZSAtPiBCb2I6IEF1dGhlbnRpY2F0aW9uIFJlcXVlc3QNCkJvYiAtIC0+IEFsaWNlOiBBdXRoZW50aWNhdGlvbiBSZXNwb25zZQ0KDQpBbGljZSAtPiBCb2I6IEFub3RoZXIgYXV0aGVudGljYXRpb24gUmVxdWVzdA0KQWxpY2UgPC0gLSBCb2I6IEFub3RoZXIgYXV0aGVudGljYXRpb24gUmVzcG9uc2UNCkBlbmR1bWwNCgpQbGFudFVNTCB2ZXJzaW9uIDEuMjAyMC4wMihTdW4gTWFyIDAxIDA0OjIyOjA3IENTVCAyMDIwKQooTUlUIHNvdXJjZSBkaXN0cmlidXRpb24pCkphdmEgUnVudGltZTogT3BlbkpESyBSdW50aW1lIEVudmlyb25tZW50CkpWTTogT3BlbkpESyA2NC1CaXQgU2VydmVyIFZNCkphdmEgVmVyc2lvbjogMTIrMzMKT3BlcmF0aW5nIFN5c3RlbTogTWFjIE9TIFgKRGVmYXVsdCBFbmNvZGluZzogVVRGLTgKTGFuZ3VhZ2U6IGVuCkNvdW50cnk6IFVTCi0tPjwvZz48L3N2Zz4=",
+295,212)},200):b.generatePlantUmlImage(c,p,function(f,e,d){b.spinner.stop();l(c,p,f,e,d)},function(c){b.handleError(c)})}}else if("mermaid"==f)b.spinner.spin(document.body,mxResources.get("inserting"))&&(m=b.editor.graph,b.generateMermaidImage(c,p,function(f,e,l){k=mxEvent.isAltDown(d)?k:m.getCenterInsertPoint(new mxRectangle(0,0,e,l));b.spinner.stop();var p=null;m.getModel().beginUpdate();try{p=m.insertVertex(null,null,null,k.x,k.y,e,l,"shape=image;noLabel=1;verticalAlign=top;imageAspect=1;image="+
+f+";"),m.setAttributeForCell(p,"mermaidData",JSON.stringify({data:c,config:EditorUi.defaultMermaidConfig},null,2))}finally{m.getModel().endUpdate()}null!=p&&(m.setSelectionCell(p),m.scrollCellToVisible(p))},function(c){b.handleError(c)}));else if("table"==f){f=null;for(var g=[],q=0,t={},n=0;n<e.length;n++){var v=mxUtils.trim(e[n]);if("primary key"==v.substring(0,11).toLowerCase()){var u=v.match(/\((.+)\)/);u&&u[1]&&(t[u[1]]=!0);e.splice(n,1)}else 0<v.toLowerCase().indexOf("primary key")&&(t[v.split(" ")[0]]=
+!0,e[n]=mxUtils.trim(v.replace(/primary key/i,"")))}for(n=0;n<e.length;n++)if(v=mxUtils.trim(e[n]),"create table"==v.substring(0,12).toLowerCase())v=mxUtils.trim(v.substring(12)),"("==v.charAt(v.length-1)&&(v=mxUtils.trim(v.substring(0,v.length-1))),f=new mxCell(v,new mxGeometry(q,0,160,40),"shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;"),f.vertex=!0,g.push(f),v=b.editor.graph.getPreferredSizeForCell(x),null!=
v&&(f.geometry.width=v.width+10);else if(null!=f&&")"==v.charAt(0))q+=f.geometry.width+40,f=null;else if("("!=v&&null!=f){var v=v.substring(0,","==v.charAt(v.length-1)?v.length-1:v.length),u=t[v.split(" ")[0]],x=new mxCell("",new mxGeometry(0,0,160,30),"shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;top=0;left=0;right=0;bottom="+(u?"1":"0")+";");x.vertex=!0;var H=new mxCell(u?"PK":"",
new mxGeometry(0,0,30,30),"shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;"+(u?"fontStyle=1;":""));H.vertex=!0;x.insert(H);v=new mxCell(v,new mxGeometry(30,0,130,30),"shape=partialRectangle;overflow=hidden;connectable=0;fillColor=none;align=left;top=0;left=0;bottom=0;right=0;spacingLeft=6;"+(u?"fontStyle=5;":""));v.vertex=!0;x.insert(v);v=b.editor.graph.getPreferredSizeForCell(v);null!=v&&f.geometry.width<v.width+30&&(f.geometry.width=Math.min(320,
-Math.max(f.geometry.width,v.width+30)));f.insert(x,u?0:null);f.geometry.height+=30}0<p.length&&(m=b.editor.graph,k=mxEvent.isAltDown(d)?k:m.getCenterInsertPoint(m.getBoundingBoxFromGeometry(p,!0)),m.setSelectionCells(m.importCells(p,k.x,k.y)),m.scrollCellToVisible(m.getSelectionCell()))}else if("list"==f){if(0<e.length){m=b.editor.graph;x=null;p=[];for(n=f=0;n<e.length;n++)";"!=e[n].charAt(0)&&(0==e[n].length?x=null:null==x?(x=new mxCell(e[n],new mxGeometry(f,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;"),
-x.vertex=!0,p.push(x),v=m.getPreferredSizeForCell(x),null!=v&&x.geometry.width<v.width+10&&(x.geometry.width=v.width+10),f+=x.geometry.width+40):"--"==e[n]?(v=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;"),v.vertex=!0,x.geometry.height+=v.geometry.height,x.insert(v)):0<e[n].length&&(q=new mxCell(e[n],new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),
-q.vertex=!0,v=m.getPreferredSizeForCell(q),null!=v&&q.geometry.width<v.width&&(q.geometry.width=v.width),x.geometry.width=Math.max(x.geometry.width,q.geometry.width),x.geometry.height+=q.geometry.height,x.insert(q)));if(0<p.length){k=mxEvent.isAltDown(d)?k:m.getCenterInsertPoint(m.getBoundingBoxFromGeometry(p,!0));m.getModel().beginUpdate();try{p=m.importCells(p,k.x,k.y);v=[];for(n=0;n<p.length;n++)v.push(p[n]),v=v.concat(p[n].children);m.fireEvent(new mxEventObject("cellsInserted","cells",v))}finally{m.getModel().endUpdate()}m.setSelectionCells(p);
-m.scrollCellToVisible(m.getSelectionCell())}}}else{for(var x=function(b){var c=I[b];null==c&&(c=new mxCell(b,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),c.vertex=!0,I[b]=c,p.push(c));return c},I={},p=[],n=0;n<e.length;n++)if(";"!=e[n].charAt(0)){var S=e[n].split("->");2<=S.length&&(u=x(S[0]),H=x(S[S.length-1]),S=new mxCell(2<S.length?S[1]:"",new mxGeometry),S.edge=!0,u.insertEdge(S,!0),H.insertEdge(S,!1),p.push(S))}if(0<p.length){e=document.createElement("div");e.style.visibility="hidden";
-document.body.appendChild(e);m=new Graph(e);m.getModel().beginUpdate();try{p=m.importCells(p);for(n=0;n<p.length;n++)m.getModel().isVertex(p[n])&&(v=m.getPreferredSizeForCell(p[n]),p[n].geometry.width=Math.max(p[n].geometry.width,v.width),p[n].geometry.height=Math.max(p[n].geometry.height,v.height));n=!0;"horizontalFlow"==f||"verticalFlow"==f?((new mxHierarchicalLayout(m,"horizontalFlow"==f?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH)).execute(m.getDefaultParent(),p),n=!1):"circle"==f?
-(new mxCircleLayout(m)).execute(m.getDefaultParent()):(q=new mxFastOrganicLayout(m),q.disableEdgeStyle=!1,q.forceConstant=180,q.execute(m.getDefaultParent()));n&&(t=new mxParallelEdgeLayout(m),t.spacing=30,t.execute(m.getDefaultParent()))}finally{m.getModel().endUpdate()}m.clearCellOverlays();v=[];b.editor.graph.getModel().beginUpdate();try{p=m.getModel().getChildren(m.getDefaultParent()),k=mxEvent.isAltDown(d)?k:b.editor.graph.getCenterInsertPoint(m.getBoundingBoxFromGeometry(p,!0)),v=b.editor.graph.importCells(p,
+Math.max(f.geometry.width,v.width+30)));f.insert(x,u?0:null);f.geometry.height+=30}0<g.length&&(m=b.editor.graph,k=mxEvent.isAltDown(d)?k:m.getCenterInsertPoint(m.getBoundingBoxFromGeometry(g,!0)),m.setSelectionCells(m.importCells(g,k.x,k.y)),m.scrollCellToVisible(m.getSelectionCell()))}else if("list"==f){if(0<e.length){m=b.editor.graph;x=null;g=[];for(n=f=0;n<e.length;n++)";"!=e[n].charAt(0)&&(0==e[n].length?x=null:null==x?(x=new mxCell(e[n],new mxGeometry(f,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;"),
+x.vertex=!0,g.push(x),v=m.getPreferredSizeForCell(x),null!=v&&x.geometry.width<v.width+10&&(x.geometry.width=v.width+10),f+=x.geometry.width+40):"--"==e[n]?(v=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;"),v.vertex=!0,x.geometry.height+=v.geometry.height,x.insert(v)):0<e[n].length&&(q=new mxCell(e[n],new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"),
+q.vertex=!0,v=m.getPreferredSizeForCell(q),null!=v&&q.geometry.width<v.width&&(q.geometry.width=v.width),x.geometry.width=Math.max(x.geometry.width,q.geometry.width),x.geometry.height+=q.geometry.height,x.insert(q)));if(0<g.length){k=mxEvent.isAltDown(d)?k:m.getCenterInsertPoint(m.getBoundingBoxFromGeometry(g,!0));m.getModel().beginUpdate();try{g=m.importCells(g,k.x,k.y);v=[];for(n=0;n<g.length;n++)v.push(g[n]),v=v.concat(g[n].children);m.fireEvent(new mxEventObject("cellsInserted","cells",v))}finally{m.getModel().endUpdate()}m.setSelectionCells(g);
+m.scrollCellToVisible(m.getSelectionCell())}}}else{for(var x=function(b){var c=K[b];null==c&&(c=new mxCell(b,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),c.vertex=!0,K[b]=c,g.push(c));return c},K={},g=[],n=0;n<e.length;n++)if(";"!=e[n].charAt(0)){var R=e[n].split("->");2<=R.length&&(u=x(R[0]),H=x(R[R.length-1]),R=new mxCell(2<R.length?R[1]:"",new mxGeometry),R.edge=!0,u.insertEdge(R,!0),H.insertEdge(R,!1),g.push(R))}if(0<g.length){e=document.createElement("div");e.style.visibility="hidden";
+document.body.appendChild(e);m=new Graph(e);m.getModel().beginUpdate();try{g=m.importCells(g);for(n=0;n<g.length;n++)m.getModel().isVertex(g[n])&&(v=m.getPreferredSizeForCell(g[n]),g[n].geometry.width=Math.max(g[n].geometry.width,v.width),g[n].geometry.height=Math.max(g[n].geometry.height,v.height));n=!0;"horizontalFlow"==f||"verticalFlow"==f?((new mxHierarchicalLayout(m,"horizontalFlow"==f?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH)).execute(m.getDefaultParent(),g),n=!1):"circle"==f?
+(new mxCircleLayout(m)).execute(m.getDefaultParent()):(q=new mxFastOrganicLayout(m),q.disableEdgeStyle=!1,q.forceConstant=180,q.execute(m.getDefaultParent()));n&&(t=new mxParallelEdgeLayout(m),t.spacing=30,t.execute(m.getDefaultParent()))}finally{m.getModel().endUpdate()}m.clearCellOverlays();v=[];b.editor.graph.getModel().beginUpdate();try{g=m.getModel().getChildren(m.getDefaultParent()),k=mxEvent.isAltDown(d)?k:b.editor.graph.getCenterInsertPoint(m.getBoundingBoxFromGeometry(g,!0)),v=b.editor.graph.importCells(g,
k.x,k.y),b.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",v))}finally{b.editor.graph.getModel().endUpdate()}b.editor.graph.setSelectionCells(v);b.editor.graph.scrollCellToVisible(b.editor.graph.getSelectionCell());m.destroy();e.parentNode.removeChild(e)}}}function g(){return"list"==f.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean\n\nAddress\n-street: String\n-city: String\n-state: String":"mermaid"==f.value?
"graph TD;\n A--\x3eB;\n A--\x3eC;\n B--\x3eD;\n C--\x3eD;":"table"==f.value?"CREATE TABLE Suppliers\n(\nsupplier_id int NOT NULL PRIMARY KEY,\nsupplier_name char(50) NOT NULL,\ncontact_name char(50),\n);\nCREATE TABLE Customers\n(\ncustomer_id int NOT NULL PRIMARY KEY,\ncustomer_name char(50) NOT NULL,\naddress char(50),\ncity char(50),\nstate char(25),\nzip_code char(10)\n);\n":"plantUmlPng"==f.value?"@startuml\nskinparam backgroundcolor transparent\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml":
"plantUmlSvg"==f.value||"plantUmlTxt"==f.value?"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml":";Example:\na->b\nb->edge label->c\nc->a\n"}var k=b.editor.graph.getFreeInsertPoint();e=document.createElement("div");e.style.textAlign="right";var n=document.createElement("textarea");n.style.boxSizing="border-box";n.style.resize=
@@ -10225,58 +10225,58 @@ p.setAttribute("value","horizontalFlow");mxUtils.write(p,mxResources.get("horizo
"selected");m=document.createElement("option");m.setAttribute("value","plantUmlPng");mxUtils.write(m,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+")");p=document.createElement("option");p.setAttribute("value","plantUmlTxt");mxUtils.write(p,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!b.isOffline()&&"plantUml"==d&&(f.appendChild(l),f.appendChild(m),f.appendChild(p));var t=g();n.value=t;e.appendChild(n);this.init=function(){n.focus()};
Graph.fileSupport&&(n.addEventListener("dragover",function(b){b.stopPropagation();b.preventDefault()},!1),n.addEventListener("drop",function(b){b.stopPropagation();b.preventDefault();if(0<b.dataTransfer.files.length){b=b.dataTransfer.files[0];var c=new FileReader;c.onload=function(b){n.value=b.target.result};c.readAsText(b)}},!1));e.appendChild(f);mxEvent.addListener(f,"change",function(){var b=g();if(0==n.value.length||n.value==t)t=b,n.value=t});b.isOffline()||"mermaid"!=d&&"plantUml"!=d||(l=mxUtils.button(mxResources.get("help"),
function(){b.openLink("mermaid"==d?"https://mermaid-js.github.io/mermaid/#/":"https://plantuml.com/")}),l.className="geBtn",e.appendChild(l));l=mxUtils.button(mxResources.get("close"),function(){n.value==t?b.hideDialog():b.confirm(mxResources.get("areYouSure"),function(){b.hideDialog()})});l.className="geBtn";b.editor.cancelFirst&&e.appendChild(l);m=mxUtils.button(mxResources.get("insert"),function(e){b.hideDialog();c(n.value,f.value,e)});e.appendChild(m);m.className="geBtn gePrimaryBtn";b.editor.cancelFirst||
-e.appendChild(l);this.container=e},NewDialog=function(b,e,d,c,g,k,n,f,l,m,p,q,t,v,u,x,A,z){function B(b){null!=b&&(pa=ra=b?135:140);b=!0;if(null!=ma)for(;I<ma.length&&(b||0!=mxUtils.mod(I,30));){var c=ma[I++],c=G(c.url,c.libs,c.title,c.tooltip?c.tooltip:c.title,c.select,c.imgUrl,c.info,c.onClick,c.preview,c.noImg,c.clibs);b&&c.click();b=!1}}function y(){if(sa&&null!=v)d||b.hideDialog(),v(sa,ka,H.value);else if(c)d||b.hideDialog(),c(N,H.value,la,oa);else{var f=H.value;null!=f&&0<f.length&&b.pickFolder(b.mode,
-function(c){b.createFile(f,N,null!=oa&&0<oa.length?oa:null,null,function(){b.hideDialog()},null,c,null,null!=ea&&0<ea.length?ea:null)},b.mode!=App.MODE_GOOGLE||null==b.stateArg||null==b.stateArg.folderId)}}function C(b,c,e,d,m,p,g){null!=ha&&(ha.style.backgroundColor="transparent",ha.style.border="1px solid transparent");P.removeAttribute("disabled");N=c;oa=e;ea=p;ha=b;sa=d;la=g;ka=m;ha.style.backgroundColor=f;ha.style.border=l}function G(c,f,e,d,l,m,p,g,k,q,t){function n(c,f){if(null==x){var e=c,
+e.appendChild(l);this.container=e},NewDialog=function(b,e,d,c,g,k,n,f,l,m,p,q,t,v,u,x,z,A){function B(b){null!=b&&(oa=qa=b?135:140);b=!0;if(null!=la)for(;K<la.length&&(b||0!=mxUtils.mod(K,30));){var c=la[K++],c=E(c.url,c.libs,c.title,c.tooltip?c.tooltip:c.title,c.select,c.imgUrl,c.info,c.onClick,c.preview,c.noImg,c.clibs);b&&c.click();b=!1}}function y(){if(ra&&null!=v)d||b.hideDialog(),v(ra,ja,H.value);else if(c)d||b.hideDialog(),c(T,H.value,ka,na);else{var f=H.value;null!=f&&0<f.length&&b.pickFolder(b.mode,
+function(c){b.createFile(f,T,null!=na&&0<na.length?na:null,null,function(){b.hideDialog()},null,c,null,null!=ea&&0<ea.length?ea:null)},b.mode!=App.MODE_GOOGLE||null==b.stateArg||null==b.stateArg.folderId)}}function C(b,c,e,d,m,p,g){null!=ha&&(ha.style.backgroundColor="transparent",ha.style.border="1px solid transparent");O.removeAttribute("disabled");T=c;na=e;ea=p;ha=b;ra=d;ka=g;ja=m;ha.style.backgroundColor=f;ha.style.border=l}function E(c,f,e,d,l,m,p,g,k,q,t){function n(c,f){if(null==x){var e=c,
e=/^https?:\/\//.test(e)&&!b.editor.isCorsEnabledForUrl(e)?PROXY_URL+"?url="+encodeURIComponent(e):TEMPLATE_PATH+"/"+e;mxUtils.get(e,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(x=b.getText());f(x)}))}else f(x)}function L(f,d,l){if(null!=f&&mxUtils.isAncestorNode(document.body,u)){f=mxUtils.parseXml(f);f=Editor.parseDiagramNode(f.documentElement);var m=new mxCodec(f.ownerDocument),g=new mxGraphModel;m.decode(f,g);f=g.root.getChildAt(0).children;b.sidebar.createTooltip(u,
-f,Math.min((window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-80,1E3),Math.min((window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)-80,800),null!=e?mxResources.get(e,null,e):null,!0,new mxPoint(d,l),!0,function(){T=null!=b.sidebar.tooltip&&"none"!=b.sidebar.tooltip.style.display;C(u,null,null,c,p,t)},!0,!1)}}function v(f,e){if(null==c||A||b.sidebar.currentElt==u)b.sidebar.hideTooltip();else if(b.sidebar.hideTooltip(),null!=D){var d=
-'<mxfile><diagram id="d" name="n">'+Graph.compress('<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="" style="shape=image;image='+D.src+';imageAspect=1;" parent="1" vertex="1"><mxGeometry width="'+D.naturalWidth+'" height="'+D.naturalHeight+'" as="geometry" /></mxCell></root></mxGraphModel>')+"</diagram></mxfile>";L(d,mxEvent.getClientX(f),mxEvent.getClientY(f))}else b.sidebar.currentElt=u,A=!0,n(c,function(c){A&&b.sidebar.currentElt==u&&L(c,mxEvent.getClientX(f),
-mxEvent.getClientY(f));A=!1})}var u=document.createElement("div");u.className="geTemplate";u.style.position="relative";u.style.height=pa+"px";u.style.width=ra+"px";var x=null;Editor.isDarkMode()&&(u.style.filter="invert(100%)");null!=e?u.setAttribute("title",mxResources.get(e,null,e)):null!=d&&0<d.length&&u.setAttribute("title",d);var A=!1,D=null;if(null!=m){u.style.display="inline-flex";u.style.justifyContent="center";u.style.alignItems="center";l=document.createElement("img");l.setAttribute("src",
-m);l.setAttribute("alt",d);l.style.maxWidth=pa+"px";l.style.maxHeight=ra+"px";var D=l,E=m.replace(".drawio.xml","").replace(".drawio","").replace(".xml","");u.appendChild(l);l.onerror=function(){this.src!=E?this.src=E:(this.src=Editor.errorImage,this.onerror=null)};mxEvent.addGestureListeners(u,mxUtils.bind(this,function(b){C(u,null,null,c,p,t)}),null,null);mxEvent.addListener(u,"dblclick",function(b){y();mxEvent.consume(b)})}else if(!q&&null!=c&&0<c.length){var Q=function(b){P.setAttribute("disabled",
-"disabled");u.style.backgroundColor="transparent";u.style.border="1px solid transparent";S.spin(V);n(c,function(c){S.stop();null!=c&&(C(u,c,f,null,null,t,R),b&&y())})};l=k||TEMPLATE_PATH+"/"+c.substring(0,c.length-4)+".png";u.style.backgroundImage="url("+l+")";u.style.backgroundPosition="center center";u.style.backgroundRepeat="no-repeat";if(null!=e){d=document.createElement("table");d.setAttribute("width","100%");d.setAttribute("height","100%");d.style.background=Editor.isDarkMode()?"transparent":
-"rgba(255,255,255,0.85)";d.style.lineHeight="1.3em";d.style.border="inherit";m=document.createElement("tbody");k=document.createElement("tr");q=document.createElement("td");q.setAttribute("align","center");q.setAttribute("valign","middle");var F=document.createElement("span");F.style.display="inline-block";F.style.padding="4px 8px 4px 8px";F.style.userSelect="none";F.style.borderRadius="3px";F.style.background="rgba(255,255,255,0.85)";F.style.overflow="hidden";F.style.textOverflow="ellipsis";F.style.maxWidth=
-pa-34+"px";mxUtils.write(F,mxResources.get(e,null,e));q.appendChild(F);k.appendChild(q);m.appendChild(k);d.appendChild(m);u.appendChild(d)}mxEvent.addGestureListeners(u,mxUtils.bind(this,function(b){Q()}),null,null);mxEvent.addListener(u,"dblclick",function(b){Q(!0);mxEvent.consume(b)})}else d=document.createElement("table"),d.setAttribute("width","100%"),d.setAttribute("height","100%"),d.style.lineHeight="1.3em",m=document.createElement("tbody"),k=document.createElement("tr"),q=document.createElement("td"),
-q.setAttribute("align","center"),q.setAttribute("valign","middle"),F=document.createElement("span"),F.style.display="inline-block",F.style.padding="4px 8px 4px 8px",F.style.userSelect="none",F.style.borderRadius="3px",F.style.background="#ffffff",F.style.overflow="hidden",F.style.textOverflow="ellipsis",F.style.maxWidth=pa-34+"px",mxUtils.write(F,mxResources.get(e,null,e)),q.appendChild(F),k.appendChild(q),m.appendChild(k),d.appendChild(m),u.appendChild(d),l&&C(u),mxEvent.addGestureListeners(u,mxUtils.bind(this,
+f,Math.min((window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-80,1E3),Math.min((window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)-80,800),null!=e?mxResources.get(e,null,e):null,!0,new mxPoint(d,l),!0,function(){X=null!=b.sidebar.tooltip&&"none"!=b.sidebar.tooltip.style.display;C(u,null,null,c,p,t)},!0,!1)}}function v(f,e){if(null==c||z||b.sidebar.currentElt==u)b.sidebar.hideTooltip();else if(b.sidebar.hideTooltip(),null!=D){var d=
+'<mxfile><diagram id="d" name="n">'+Graph.compress('<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="" style="shape=image;image='+D.src+';imageAspect=1;" parent="1" vertex="1"><mxGeometry width="'+D.naturalWidth+'" height="'+D.naturalHeight+'" as="geometry" /></mxCell></root></mxGraphModel>')+"</diagram></mxfile>";L(d,mxEvent.getClientX(f),mxEvent.getClientY(f))}else b.sidebar.currentElt=u,z=!0,n(c,function(c){z&&b.sidebar.currentElt==u&&L(c,mxEvent.getClientX(f),
+mxEvent.getClientY(f));z=!1})}var u=document.createElement("div");u.className="geTemplate";u.style.position="relative";u.style.height=oa+"px";u.style.width=qa+"px";var x=null;Editor.isDarkMode()&&(u.style.filter="invert(100%)");null!=e?u.setAttribute("title",mxResources.get(e,null,e)):null!=d&&0<d.length&&u.setAttribute("title",d);var z=!1,D=null;if(null!=m){u.style.display="inline-flex";u.style.justifyContent="center";u.style.alignItems="center";l=document.createElement("img");l.setAttribute("src",
+m);l.setAttribute("alt",d);l.style.maxWidth=oa+"px";l.style.maxHeight=qa+"px";var D=l,F=m.replace(".drawio.xml","").replace(".drawio","").replace(".xml","");u.appendChild(l);l.onerror=function(){this.src!=F?this.src=F:(this.src=Editor.errorImage,this.onerror=null)};mxEvent.addGestureListeners(u,mxUtils.bind(this,function(b){C(u,null,null,c,p,t)}),null,null);mxEvent.addListener(u,"dblclick",function(b){y();mxEvent.consume(b)})}else if(!q&&null!=c&&0<c.length){var P=function(b){O.setAttribute("disabled",
+"disabled");u.style.backgroundColor="transparent";u.style.border="1px solid transparent";R.spin(U);n(c,function(c){R.stop();null!=c&&(C(u,c,f,null,null,t,Q),b&&y())})};l=k||TEMPLATE_PATH+"/"+c.substring(0,c.length-4)+".png";u.style.backgroundImage="url("+l+")";u.style.backgroundPosition="center center";u.style.backgroundRepeat="no-repeat";if(null!=e){d=document.createElement("table");d.setAttribute("width","100%");d.setAttribute("height","100%");d.style.background=Editor.isDarkMode()?"transparent":
+"rgba(255,255,255,0.85)";d.style.lineHeight="1.3em";d.style.border="inherit";m=document.createElement("tbody");k=document.createElement("tr");q=document.createElement("td");q.setAttribute("align","center");q.setAttribute("valign","middle");var G=document.createElement("span");G.style.display="inline-block";G.style.padding="4px 8px 4px 8px";G.style.userSelect="none";G.style.borderRadius="3px";G.style.background="rgba(255,255,255,0.85)";G.style.overflow="hidden";G.style.textOverflow="ellipsis";G.style.maxWidth=
+oa-34+"px";mxUtils.write(G,mxResources.get(e,null,e));q.appendChild(G);k.appendChild(q);m.appendChild(k);d.appendChild(m);u.appendChild(d)}mxEvent.addGestureListeners(u,mxUtils.bind(this,function(b){P()}),null,null);mxEvent.addListener(u,"dblclick",function(b){P(!0);mxEvent.consume(b)})}else d=document.createElement("table"),d.setAttribute("width","100%"),d.setAttribute("height","100%"),d.style.lineHeight="1.3em",m=document.createElement("tbody"),k=document.createElement("tr"),q=document.createElement("td"),
+q.setAttribute("align","center"),q.setAttribute("valign","middle"),G=document.createElement("span"),G.style.display="inline-block",G.style.padding="4px 8px 4px 8px",G.style.userSelect="none",G.style.borderRadius="3px",G.style.background="#ffffff",G.style.overflow="hidden",G.style.textOverflow="ellipsis",G.style.maxWidth=oa-34+"px",mxUtils.write(G,mxResources.get(e,null,e)),q.appendChild(G),k.appendChild(q),m.appendChild(k),d.appendChild(m),u.appendChild(d),l&&C(u),mxEvent.addGestureListeners(u,mxUtils.bind(this,
function(b){C(u,null,null,c,p)}),null,null),null!=g?mxEvent.addListener(u,"click",g):(mxEvent.addListener(u,"click",function(b){C(u,null,null,c,p)}),mxEvent.addListener(u,"dblclick",function(b){y();mxEvent.consume(b)}));if(null!=c){var H=document.createElement("img");H.setAttribute("src",Sidebar.prototype.searchImage);H.setAttribute("title",mxResources.get("preview"));H.className="geActiveButton";H.style.position="absolute";H.style.cursor="default";H.style.padding="8px";H.style.right="0px";H.style.top=
-"0px";u.appendChild(H);var T=!1;mxEvent.addGestureListeners(H,mxUtils.bind(this,function(c){T=b.sidebar.currentElt==u}),null,null);mxEvent.addListener(H,"click",mxUtils.bind(this,function(b){T||v(b,H);mxEvent.consume(b)}))}V.appendChild(u);return u}function D(){function b(b,c){var f=mxResources.get(b);null==f&&(f=b.substring(0,1).toUpperCase()+b.substring(1));18<f.length&&(f=f.substring(0,18)+"&hellip;");return f+" ("+c.length+")"}function c(b,c,f){mxEvent.addListener(c,"click",function(){ja!=c&&
-(ja.style.backgroundColor="",ja=c,ja.style.backgroundColor=n,V.scrollTop=0,V.innerHTML="",I=0,ma=f?na[b][f]:U[b],W=null,B(!1))})}ta&&(ta=!1,mxEvent.addListener(V,"scroll",function(b){V.scrollTop+V.clientHeight>=V.scrollHeight&&(B(),mxEvent.consume(b))}));if(0<ba){var f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(f,mxResources.get("custom"));ca.appendChild(f);for(var e in ga){var d=document.createElement("div"),
-l=e,f=ga[e];18<l.length&&(l=l.substring(0,18)+"&hellip;");d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;";d.setAttribute("title",l+" ("+f.length+")");mxUtils.write(d,d.getAttribute("title"));null!=m&&(d.style.padding=m);ca.appendChild(d);(function(b,c){mxEvent.addListener(d,"click",function(){ja!=c&&(ja.style.backgroundColor="",ja=c,ja.style.backgroundColor=n,V.scrollTop=0,V.innerHTML="",I=0,
-ma=ga[b],W=null,B(!1))})})(e,d)}f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(f,"draw.io");ca.appendChild(f)}for(e in U){var l=na[e],p=d=document.createElement(l?"ul":"div"),f=U[e],g=b(e,f);if(null!=l){var k=document.createElement("li"),q=document.createElement("div");q.className="geTempTreeCaret";q.setAttribute("title",g);mxUtils.write(q,g);p=q;k.appendChild(q);g=document.createElement("ul");g.className=
-"geTempTreeNested";g.style.visibility="hidden";for(var t in l){var L=document.createElement("li"),v=b(t,l[t]);L.setAttribute("title",v);mxUtils.write(L,v);c(e,L,t);g.appendChild(L)}k.appendChild(g);d.className="geTempTree";d.appendChild(k);(function(b,c){mxEvent.addListener(c,"click",function(){b.style.visibility="visible";b.classList.toggle("geTempTreeActive");b.classList.toggle("geTempTreeNested")&&setTimeout(function(){b.style.visibility="hidden"},550);c.classList.toggle("geTempTreeCaret-down")})})(g,
-q)}else d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;transition: all 0.5s;",d.setAttribute("title",g),mxUtils.write(d,g);null!=m&&(d.style.padding=m);ca.appendChild(d);null==ja&&0<f.length&&(ja=d,ja.style.backgroundColor=n,ma=f);c(e,p)}B(!1)}var E=500>(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth);d=null!=d?d:!0;g=null!=g?g:!1;n=null!=n?n:"#ebf2f9";f=null!=
-f?f:Editor.isDarkMode()?"#a2a2a2":"#e6eff8";l=null!=l?l:Editor.isDarkMode()?"1px dashed #00a8ff":"1px solid #ccd9ea";p=null!=p?p:EditorUi.templateFile;var F=document.createElement("div");F.style.userSelect="none";F.style.height="100%";var J=document.createElement("div");J.style.whiteSpace="nowrap";J.style.height="46px";d&&F.appendChild(J);var K=document.createElement("img");K.setAttribute("border","0");K.setAttribute("align","absmiddle");K.style.width="40px";K.style.height="40px";K.style.marginRight=
-"10px";K.style.paddingBottom="4px";K.src=b.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":b.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":b.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":b.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":b.mode==App.MODE_GITLAB?IMAGE_PATH+"/gitlab-logo.svg":b.mode==App.MODE_NOTION?IMAGE_PATH+"/notion-logo.svg":b.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":b.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png";
-e||E||!d||J.appendChild(K);d&&mxUtils.write(J,(E?mxResources.get("name"):null==b.mode||b.mode==App.MODE_GOOGLE||b.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"))+":");K=".drawio";b.mode==App.MODE_GOOGLE&&null!=b.drive?K=b.drive.extension:b.mode==App.MODE_DROPBOX&&null!=b.dropbox?K=b.dropbox.extension:b.mode==App.MODE_ONEDRIVE&&null!=b.oneDrive?K=b.oneDrive.extension:b.mode==App.MODE_GITHUB&&null!=b.gitHub?K=b.gitHub.extension:b.mode==App.MODE_GITLAB&&null!=b.gitLab?
-K=b.gitLab.extension:b.mode==App.MODE_NOTION&&null!=b.notion?K=b.notion.extension:b.mode==App.MODE_TRELLO&&null!=b.trello&&(K=b.trello.extension);var H=document.createElement("input");H.setAttribute("value",b.defaultFilename+K);H.style.marginLeft="10px";H.style.width=e||E?"144px":"244px";this.init=function(){d&&(H.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?H.select():document.execCommand("selectAll",!1,null));null!=V.parentNode&&null!=V.parentNode.parentNode&&mxEvent.addGestureListeners(V.parentNode.parentNode,
-mxUtils.bind(this,function(c){b.sidebar.hideTooltip()}),null,null)};d&&(J.appendChild(H),z?H.style.width=e||E?"350px":"450px":(null!=b.editor.diagramFileTypes&&(z=FilenameDialog.createFileTypes(b,H,b.editor.diagramFileTypes),z.style.marginLeft="6px",z.style.width=e||E?"80px":"180px",J.appendChild(z)),null!=b.editor.fileExtensions&&(E=FilenameDialog.createTypeHint(b,H,b.editor.fileExtensions),E.style.marginTop="12px",J.appendChild(E))));var J=!1,I=0,S=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}),P=mxUtils.button(x||mxResources.get("create"),function(){P.setAttribute("disabled","disabled");y();P.removeAttribute("disabled")});P.className="geBtn gePrimaryBtn";if(q||t){var M=[],W=null,X=null,L=null,Q=function(b){P.setAttribute("disabled","disabled");for(var c=0;c<M.length;c++)M[c].className=c==b?"geBtn gePrimaryBtn":"geBtn"},J=!0;x=document.createElement("div");x.style.whiteSpace="nowrap";x.style.height="30px";
-F.appendChild(x);E=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){ca.style.display="";Z.style.display="";V.style.left="160px";Q(0);V.scrollTop=0;V.innerHTML="";I=0;W!=ma&&(ma=W,U=X,ba=L,ca.innerHTML="",D(),W=null)});M.push(E);x.appendChild(E);var T=function(b){ca.style.display="none";Z.style.display="none";V.style.left="30px";Q(b?-1:1);null==W&&(W=ma);V.scrollTop=0;V.innerHTML="";S.spin(V);var c=function(b,c,f){I=0;S.stop();ma=b;f=f||{};var e=0,d;for(d in f)e+=f[d].length;
-if(c)V.innerHTML=c;else if(0==b.length&&0==e)V.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found"));else if(V.innerHTML="",0<e){ca.style.display="";V.style.left="160px";ca.innerHTML="";ba=0;U={"draw.io":b};for(d in f)U[d]=f[d];D()}else B(!0)};b?t(da.value,c):q(c)};q&&(E=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){T()}),x.appendChild(E),M.push(E));if(t){E=document.createElement("span");E.style.marginLeft="10px";E.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+
-":");x.appendChild(E);var da=document.createElement("input");da.style.marginRight="10px";da.style.marginLeft="10px";da.style.width="220px";mxEvent.addListener(da,"keypress",function(b){13==b.keyCode&&T(!0)});x.appendChild(da);E=mxUtils.button(mxResources.get("search"),function(){T(!0)});E.className="geBtn";x.appendChild(E)}Q(0)}var oa=null,ea=null,N=null,ha=null,sa=null,la=null,ka=null,V=document.createElement("div");V.style.border="1px solid #d3d3d3";V.style.position="absolute";V.style.left="160px";
-V.style.right="34px";x=(d?72:40)+(J?30:0);V.style.top=x+"px";V.style.bottom="68px";V.style.margin="6px 0 0 -1px";V.style.padding="6px";V.style.overflow="auto";var Z=document.createElement("div");Z.style.cssText="position:absolute;left:30px;width:128px;top:"+x+"px;height:22px;margin-top: 6px;white-space: nowrap";var O=document.createElement("input");O.style.cssText="width:105px;height:16px;border:1px solid #d3d3d3;padding: 3px 20px 3px 3px;font-size: 12px";O.setAttribute("placeholder",mxResources.get("search"));
-O.setAttribute("type","text");Z.appendChild(O);var fa=document.createElement("img"),Y="undefined"!=typeof Sidebar?Sidebar.prototype.searchImage:IMAGE_PATH+"/search.png";fa.setAttribute("src",Y);fa.setAttribute("title",mxResources.get("search"));fa.style.position="relative";fa.style.left="-18px";fa.style.top="1px";fa.style.background="url('"+b.editor.transparentImage+"')";Z.appendChild(fa);mxEvent.addListener(fa,"click",function(){fa.getAttribute("src")==Dialog.prototype.closeImage&&(fa.setAttribute("src",
-Y),fa.setAttribute("title",mxResources.get("search")),O.value="",null!=qa&&(qa.click(),qa=null));O.focus()});mxEvent.addListener(O,"keydown",mxUtils.bind(this,function(b){if(13==b.keyCode){var c=O.value;if(""==c)null!=qa&&(qa.click(),qa=null);else{if(null==NewDialog.tagsList[p]){var f={},d;for(d in U)for(var e=U[d],l=0;l<e.length;l++){var m=e[l];if(null!=m.tags)for(var g=m.tags.toLowerCase().split(";"),k=0;k<g.length;k++)null==f[g[k]]&&(f[g[k]]=[]),f[g[k]].push(m)}NewDialog.tagsList[p]=f}var q=c.toLowerCase().split(" "),
-f=NewDialog.tagsList[p];if(0<ba&&null==f.__tagsList__){for(d in ga)for(e=ga[d],l=0;l<e.length;l++)for(m=e[l],g=m.title.split(" "),g.push(d),k=0;k<g.length;k++){var t=g[k].toLowerCase();null==f[t]&&(f[t]=[]);f[t].push(m)}f.__tagsList__=!0}d=[];e={};for(l=g=0;l<q.length;l++)if(0<q[l].length){var t=f[q[l]],n={};d=[];if(null!=t)for(k=0;k<t.length;k++)m=t[k],0==g==(null==e[m.url])&&(n[m.url]=!0,d.push(m));e=n;g++}V.scrollTop=0;V.innerHTML="";I=0;f=document.createElement("div");f.style.cssText="border: 1px solid #D3D3D3; padding: 6px; background: #F5F5F5;";
-mxUtils.write(f,mxResources.get(0==d.length?"noResultsFor":"resultsFor",[c]));V.appendChild(f);null!=ja&&null==qa&&(ja.style.backgroundColor="",qa=ja,ja=f);ma=d;W=null;B(!1)}mxEvent.consume(b)}}));mxEvent.addListener(O,"keyup",mxUtils.bind(this,function(b){""==O.value?(fa.setAttribute("src",Y),fa.setAttribute("title",mxResources.get("search"))):(fa.setAttribute("src",Dialog.prototype.closeImage),fa.setAttribute("title",mxResources.get("reset")))}));x+=23;var ca=document.createElement("div");ca.style.cssText=
-"position:absolute;left:30px;width:128px;top:"+x+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";mxEvent.addListener(V,"scroll",function(){b.sidebar.hideTooltip()});var pa=140,ra=140,U={},na={},ga={},ba=0,ta=!0,ja=null,qa=null;U.basic=[{title:"blankDiagram",select:!0}];var ma=U.basic;if(!e){var ia=function(){mxUtils.get(R,function(b){if(!aa){aa=!0;b=b.getXml().documentElement.firstChild;for(var c={};null!=b;){if("undefined"!==typeof b.getAttribute)if("clibs"==b.nodeName){for(var f=
-b.getAttribute("name"),d=b.getElementsByTagName("add"),e=[],l=0;l<d.length;l++)e.push(encodeURIComponent(mxUtils.getTextContent(d[l])));null!=f&&0<e.length&&(c[f]=e.join(";"))}else if(e=b.getAttribute("url"),null!=e){d=b.getAttribute("section");f=b.getAttribute("subsection");if(null==d&&(l=e.indexOf("/"),d=e.substring(0,l),null==f)){var m=e.indexOf("/",l+1);-1<m&&(f=e.substring(l+1,m))}l=U[d];null==l&&(l=[],U[d]=l);e=b.getAttribute("clibs");null!=c[e]&&(e=c[e]);e={url:b.getAttribute("url"),libs:b.getAttribute("libs"),
-title:b.getAttribute("title"),tooltip:b.getAttribute("name")||b.getAttribute("url"),preview:b.getAttribute("preview"),clibs:e,tags:b.getAttribute("tags")};l.push(e);null!=f&&(l=na[d],null==l&&(l={},na[d]=l),d=l[f],null==d&&(d=[],l[f]=d),d.push(e))}b=b.nextSibling}S.stop();D()}})};F.appendChild(Z);F.appendChild(ca);F.appendChild(V);var aa=!1,R=p;/^https?:\/\//.test(R)&&!b.editor.isCorsEnabledForUrl(R)&&(R=PROXY_URL+"?url="+encodeURIComponent(R));S.spin(V);null!=A?A(function(b,c){ga=b;L=ba=c;ia()},
-ia):ia();X=U}mxEvent.addListener(H,"keypress",function(c){b.dialog.container.firstChild==F&&13==c.keyCode&&y()});A=document.createElement("div");A.style.marginTop=e?"4px":"16px";A.style.textAlign="right";A.style.position="absolute";A.style.left="40px";A.style.bottom="24px";A.style.right="40px";e||b.isOffline()||!d||null!=c||g||(x=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),x.className="geBtn",A.appendChild(x));x=mxUtils.button(mxResources.get("cancel"),
-function(){null!=k&&k();b.hideDialog(!0)});x.className="geBtn";!b.editor.cancelFirst||g&&null==k||A.appendChild(x);e||"1"==urlParams.embed||g||mxClient.IS_ANDROID||mxClient.IS_IOS||"1"==urlParams.noDevice||(e=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var c=new FilenameDialog(b,"",mxResources.get("create"),function(c){null!=c&&0<c.length&&(c=b.getUrl(window.location.pathname+"?mode="+b.mode+"&title="+encodeURIComponent(H.value)+"&create="+encodeURIComponent(c)),null==b.getCurrentFile()?
-window.location.href=c:window.openWindow(c))},mxResources.get("url"));b.showDialog(c.container,300,80,!0,!0);c.init()}),e.className="geBtn",A.appendChild(e));Graph.fileSupport&&u&&(u=mxUtils.button(mxResources.get("import"),function(){if(null==b.newDlgFileInputElt){var c=document.createElement("input");c.setAttribute("multiple","multiple");c.setAttribute("type","file");mxEvent.addListener(c,"change",function(f){b.openFiles(c.files,!0);c.value=""});c.style.display="none";document.body.appendChild(c);
-b.newDlgFileInputElt=c}b.newDlgFileInputElt.click()}),u.className="geBtn",A.appendChild(u));A.appendChild(P);b.editor.cancelFirst||null!=c||g&&null==k||A.appendChild(x);F.appendChild(A);this.container=F};NewDialog.tagsList={};
-var CreateDialog=function(b,e,d,c,g,k,n,f,l,m,p,q,t,v,u,x,A){function z(c,f,d,l){function m(){mxEvent.addListener(g,"click",function(){var c=d;if(n){var f=C.value,l=f.lastIndexOf(".");if(0>e.lastIndexOf(".")&&0>l){var c=null!=c?c:F.value,m="";c==App.MODE_GOOGLE?m=b.drive.extension:c==App.MODE_GITHUB?m=b.gitHub.extension:c==App.MODE_GITLAB?m=b.gitLab.extension:c==App.MODE_NOTION?m=b.notion.extension:c==App.MODE_TRELLO?m=b.trello.extension:c==App.MODE_DROPBOX?m=b.dropbox.extension:c==App.MODE_ONEDRIVE?
+"0px";u.appendChild(H);var X=!1;mxEvent.addGestureListeners(H,mxUtils.bind(this,function(c){X=b.sidebar.currentElt==u}),null,null);mxEvent.addListener(H,"click",mxUtils.bind(this,function(b){X||v(b,H);mxEvent.consume(b)}))}U.appendChild(u);return u}function D(){function b(b,c){var f=mxResources.get(b);null==f&&(f=b.substring(0,1).toUpperCase()+b.substring(1));18<f.length&&(f=f.substring(0,18)+"&hellip;");return f+" ("+c.length+")"}function c(b,c,f){mxEvent.addListener(c,"click",function(){ia!=c&&
+(ia.style.backgroundColor="",ia=c,ia.style.backgroundColor=n,U.scrollTop=0,U.innerHTML="",K=0,la=f?ma[b][f]:S[b],V=null,B(!1))})}ta&&(ta=!1,mxEvent.addListener(U,"scroll",function(b){U.scrollTop+U.clientHeight>=U.scrollHeight&&(B(),mxEvent.consume(b))}));if(0<ba){var f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(f,mxResources.get("custom"));ca.appendChild(f);for(var e in ga){var d=document.createElement("div"),
+l=e,f=ga[e];18<l.length&&(l=l.substring(0,18)+"&hellip;");d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;";d.setAttribute("title",l+" ("+f.length+")");mxUtils.write(d,d.getAttribute("title"));null!=m&&(d.style.padding=m);ca.appendChild(d);(function(b,c){mxEvent.addListener(d,"click",function(){ia!=c&&(ia.style.backgroundColor="",ia=c,ia.style.backgroundColor=n,U.scrollTop=0,U.innerHTML="",K=0,
+la=ga[b],V=null,B(!1))})})(e,d)}f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(f,"draw.io");ca.appendChild(f)}for(e in S){var l=ma[e],p=d=document.createElement(l?"ul":"div"),f=S[e],g=b(e,f);if(null!=l){var k=document.createElement("li"),q=document.createElement("div");q.className="geTempTreeCaret";q.setAttribute("title",g);mxUtils.write(q,g);p=q;k.appendChild(q);g=document.createElement("ul");g.className=
+"geTempTreeNested";g.style.visibility="hidden";for(var t in l){var L=document.createElement("li"),y=b(t,l[t]);L.setAttribute("title",y);mxUtils.write(L,y);c(e,L,t);g.appendChild(L)}k.appendChild(g);d.className="geTempTree";d.appendChild(k);(function(b,c){mxEvent.addListener(c,"click",function(){b.style.visibility="visible";b.classList.toggle("geTempTreeActive");b.classList.toggle("geTempTreeNested")&&setTimeout(function(){b.style.visibility="hidden"},550);c.classList.toggle("geTempTreeCaret-down")})})(g,
+q)}else d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;transition: all 0.5s;",d.setAttribute("title",g),mxUtils.write(d,g);null!=m&&(d.style.padding=m);ca.appendChild(d);null==ia&&0<f.length&&(ia=d,ia.style.backgroundColor=n,la=f);c(e,p)}B(!1)}var F=500>(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth);d=null!=d?d:!0;g=null!=g?g:!1;n=null!=n?n:"#ebf2f9";f=null!=
+f?f:Editor.isDarkMode()?"#a2a2a2":"#e6eff8";l=null!=l?l:Editor.isDarkMode()?"1px dashed #00a8ff":"1px solid #ccd9ea";p=null!=p?p:EditorUi.templateFile;var G=document.createElement("div");G.style.userSelect="none";G.style.height="100%";var I=document.createElement("div");I.style.whiteSpace="nowrap";I.style.height="46px";d&&G.appendChild(I);var J=document.createElement("img");J.setAttribute("border","0");J.setAttribute("align","absmiddle");J.style.width="40px";J.style.height="40px";J.style.marginRight=
+"10px";J.style.paddingBottom="4px";J.src=b.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg":b.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":b.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":b.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":b.mode==App.MODE_GITLAB?IMAGE_PATH+"/gitlab-logo.svg":b.mode==App.MODE_NOTION?IMAGE_PATH+"/notion-logo.svg":b.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":b.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png";
+e||F||!d||I.appendChild(J);d&&mxUtils.write(I,(F?mxResources.get("name"):null==b.mode||b.mode==App.MODE_GOOGLE||b.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"))+":");J=".drawio";b.mode==App.MODE_GOOGLE&&null!=b.drive?J=b.drive.extension:b.mode==App.MODE_DROPBOX&&null!=b.dropbox?J=b.dropbox.extension:b.mode==App.MODE_ONEDRIVE&&null!=b.oneDrive?J=b.oneDrive.extension:b.mode==App.MODE_GITHUB&&null!=b.gitHub?J=b.gitHub.extension:b.mode==App.MODE_GITLAB&&null!=b.gitLab?
+J=b.gitLab.extension:b.mode==App.MODE_NOTION&&null!=b.notion?J=b.notion.extension:b.mode==App.MODE_TRELLO&&null!=b.trello&&(J=b.trello.extension);var H=document.createElement("input");H.setAttribute("value",b.defaultFilename+J);H.style.marginLeft="10px";H.style.width=e||F?"144px":"244px";this.init=function(){d&&(H.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?H.select():document.execCommand("selectAll",!1,null));null!=U.parentNode&&null!=U.parentNode.parentNode&&mxEvent.addGestureListeners(U.parentNode.parentNode,
+mxUtils.bind(this,function(c){b.sidebar.hideTooltip()}),null,null)};d&&(I.appendChild(H),A?H.style.width=e||F?"350px":"450px":(null!=b.editor.diagramFileTypes&&(A=FilenameDialog.createFileTypes(b,H,b.editor.diagramFileTypes),A.style.marginLeft="6px",A.style.width=e||F?"80px":"180px",I.appendChild(A)),null!=b.editor.fileExtensions&&(F=FilenameDialog.createTypeHint(b,H,b.editor.fileExtensions),F.style.marginTop="12px",I.appendChild(F))));var I=!1,K=0,R=new Spinner({lines:12,length:10,width:5,radius:10,
+rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9}),O=mxUtils.button(x||mxResources.get("create"),function(){O.setAttribute("disabled","disabled");y();O.removeAttribute("disabled")});O.className="geBtn gePrimaryBtn";if(q||t){var M=[],V=null,W=null,L=null,P=function(b){O.setAttribute("disabled","disabled");for(var c=0;c<M.length;c++)M[c].className=c==b?"geBtn gePrimaryBtn":"geBtn"},I=!0;x=document.createElement("div");x.style.whiteSpace="nowrap";x.style.height="30px";
+G.appendChild(x);F=mxUtils.button(mxResources.get("Templates",null,"Templates"),function(){ca.style.display="";Z.style.display="";U.style.left="160px";P(0);U.scrollTop=0;U.innerHTML="";K=0;V!=la&&(la=V,S=W,ba=L,ca.innerHTML="",D(),V=null)});M.push(F);x.appendChild(F);var X=function(b){ca.style.display="none";Z.style.display="none";U.style.left="30px";P(b?-1:1);null==V&&(V=la);U.scrollTop=0;U.innerHTML="";R.spin(U);var c=function(b,c,f){K=0;R.stop();la=b;f=f||{};var e=0,d;for(d in f)e+=f[d].length;
+if(c)U.innerHTML=c;else if(0==b.length&&0==e)U.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found"));else if(U.innerHTML="",0<e){ca.style.display="";U.style.left="160px";ca.innerHTML="";ba=0;S={"draw.io":b};for(d in f)S[d]=f[d];D()}else B(!0)};b?t(da.value,c):q(c)};q&&(F=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){X()}),x.appendChild(F),M.push(F));if(t){F=document.createElement("span");F.style.marginLeft="10px";F.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+
+":");x.appendChild(F);var da=document.createElement("input");da.style.marginRight="10px";da.style.marginLeft="10px";da.style.width="220px";mxEvent.addListener(da,"keypress",function(b){13==b.keyCode&&X(!0)});x.appendChild(da);F=mxUtils.button(mxResources.get("search"),function(){X(!0)});F.className="geBtn";x.appendChild(F)}P(0)}var na=null,ea=null,T=null,ha=null,ra=null,ka=null,ja=null,U=document.createElement("div");U.style.border="1px solid #d3d3d3";U.style.position="absolute";U.style.left="160px";
+U.style.right="34px";x=(d?72:40)+(I?30:0);U.style.top=x+"px";U.style.bottom="68px";U.style.margin="6px 0 0 -1px";U.style.padding="6px";U.style.overflow="auto";var Z=document.createElement("div");Z.style.cssText="position:absolute;left:30px;width:128px;top:"+x+"px;height:22px;margin-top: 6px;white-space: nowrap";var N=document.createElement("input");N.style.cssText="width:105px;height:16px;border:1px solid #d3d3d3;padding: 3px 20px 3px 3px;font-size: 12px";N.setAttribute("placeholder",mxResources.get("search"));
+N.setAttribute("type","text");Z.appendChild(N);var fa=document.createElement("img"),Y="undefined"!=typeof Sidebar?Sidebar.prototype.searchImage:IMAGE_PATH+"/search.png";fa.setAttribute("src",Y);fa.setAttribute("title",mxResources.get("search"));fa.style.position="relative";fa.style.left="-18px";fa.style.top="1px";fa.style.background="url('"+b.editor.transparentImage+"')";Z.appendChild(fa);mxEvent.addListener(fa,"click",function(){fa.getAttribute("src")==Dialog.prototype.closeImage&&(fa.setAttribute("src",
+Y),fa.setAttribute("title",mxResources.get("search")),N.value="",null!=pa&&(pa.click(),pa=null));N.focus()});mxEvent.addListener(N,"keydown",mxUtils.bind(this,function(b){if(13==b.keyCode){var c=N.value;if(""==c)null!=pa&&(pa.click(),pa=null);else{if(null==NewDialog.tagsList[p]){var f={},d;for(d in S)for(var e=S[d],l=0;l<e.length;l++){var m=e[l];if(null!=m.tags)for(var g=m.tags.toLowerCase().split(";"),k=0;k<g.length;k++)null==f[g[k]]&&(f[g[k]]=[]),f[g[k]].push(m)}NewDialog.tagsList[p]=f}var q=c.toLowerCase().split(" "),
+f=NewDialog.tagsList[p];if(0<ba&&null==f.__tagsList__){for(d in ga)for(e=ga[d],l=0;l<e.length;l++)for(m=e[l],g=m.title.split(" "),g.push(d),k=0;k<g.length;k++){var t=g[k].toLowerCase();null==f[t]&&(f[t]=[]);f[t].push(m)}f.__tagsList__=!0}d=[];e={};for(l=g=0;l<q.length;l++)if(0<q[l].length){var t=f[q[l]],n={};d=[];if(null!=t)for(k=0;k<t.length;k++)m=t[k],0==g==(null==e[m.url])&&(n[m.url]=!0,d.push(m));e=n;g++}U.scrollTop=0;U.innerHTML="";K=0;f=document.createElement("div");f.style.cssText="border: 1px solid #D3D3D3; padding: 6px; background: #F5F5F5;";
+mxUtils.write(f,mxResources.get(0==d.length?"noResultsFor":"resultsFor",[c]));U.appendChild(f);null!=ia&&null==pa&&(ia.style.backgroundColor="",pa=ia,ia=f);la=d;V=null;B(!1)}mxEvent.consume(b)}}));mxEvent.addListener(N,"keyup",mxUtils.bind(this,function(b){""==N.value?(fa.setAttribute("src",Y),fa.setAttribute("title",mxResources.get("search"))):(fa.setAttribute("src",Dialog.prototype.closeImage),fa.setAttribute("title",mxResources.get("reset")))}));x+=23;var ca=document.createElement("div");ca.style.cssText=
+"position:absolute;left:30px;width:128px;top:"+x+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";mxEvent.addListener(U,"scroll",function(){b.sidebar.hideTooltip()});var oa=140,qa=140,S={},ma={},ga={},ba=0,ta=!0,ia=null,pa=null;S.basic=[{title:"blankDiagram",select:!0}];var la=S.basic;if(!e){var sa=function(){mxUtils.get(Q,function(b){if(!aa){aa=!0;b=b.getXml().documentElement.firstChild;for(var c={};null!=b;){if("undefined"!==typeof b.getAttribute)if("clibs"==b.nodeName){for(var f=
+b.getAttribute("name"),d=b.getElementsByTagName("add"),e=[],l=0;l<d.length;l++)e.push(encodeURIComponent(mxUtils.getTextContent(d[l])));null!=f&&0<e.length&&(c[f]=e.join(";"))}else if(e=b.getAttribute("url"),null!=e){d=b.getAttribute("section");f=b.getAttribute("subsection");if(null==d&&(l=e.indexOf("/"),d=e.substring(0,l),null==f)){var m=e.indexOf("/",l+1);-1<m&&(f=e.substring(l+1,m))}l=S[d];null==l&&(l=[],S[d]=l);e=b.getAttribute("clibs");null!=c[e]&&(e=c[e]);e={url:b.getAttribute("url"),libs:b.getAttribute("libs"),
+title:b.getAttribute("title"),tooltip:b.getAttribute("name")||b.getAttribute("url"),preview:b.getAttribute("preview"),clibs:e,tags:b.getAttribute("tags")};l.push(e);null!=f&&(l=ma[d],null==l&&(l={},ma[d]=l),d=l[f],null==d&&(d=[],l[f]=d),d.push(e))}b=b.nextSibling}R.stop();D()}})};G.appendChild(Z);G.appendChild(ca);G.appendChild(U);var aa=!1,Q=p;/^https?:\/\//.test(Q)&&!b.editor.isCorsEnabledForUrl(Q)&&(Q=PROXY_URL+"?url="+encodeURIComponent(Q));R.spin(U);null!=z?z(function(b,c){ga=b;L=ba=c;sa()},
+sa):sa();W=S}mxEvent.addListener(H,"keypress",function(c){b.dialog.container.firstChild==G&&13==c.keyCode&&y()});z=document.createElement("div");z.style.marginTop=e?"4px":"16px";z.style.textAlign="right";z.style.position="absolute";z.style.left="40px";z.style.bottom="24px";z.style.right="40px";e||b.isOffline()||!d||null!=c||g||(x=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),x.className="geBtn",z.appendChild(x));x=mxUtils.button(mxResources.get("cancel"),
+function(){null!=k&&k();b.hideDialog(!0)});x.className="geBtn";!b.editor.cancelFirst||g&&null==k||z.appendChild(x);e||"1"==urlParams.embed||g||mxClient.IS_ANDROID||mxClient.IS_IOS||"1"==urlParams.noDevice||(e=mxUtils.button(mxResources.get("fromTemplateUrl"),function(){var c=new FilenameDialog(b,"",mxResources.get("create"),function(c){null!=c&&0<c.length&&(c=b.getUrl(window.location.pathname+"?mode="+b.mode+"&title="+encodeURIComponent(H.value)+"&create="+encodeURIComponent(c)),null==b.getCurrentFile()?
+window.location.href=c:window.openWindow(c))},mxResources.get("url"));b.showDialog(c.container,300,80,!0,!0);c.init()}),e.className="geBtn",z.appendChild(e));Graph.fileSupport&&u&&(u=mxUtils.button(mxResources.get("import"),function(){if(null==b.newDlgFileInputElt){var c=document.createElement("input");c.setAttribute("multiple","multiple");c.setAttribute("type","file");mxEvent.addListener(c,"change",function(f){b.openFiles(c.files,!0);c.value=""});c.style.display="none";document.body.appendChild(c);
+b.newDlgFileInputElt=c}b.newDlgFileInputElt.click()}),u.className="geBtn",z.appendChild(u));z.appendChild(O);b.editor.cancelFirst||null!=c||g&&null==k||z.appendChild(x);G.appendChild(z);this.container=G};NewDialog.tagsList={};
+var CreateDialog=function(b,e,d,c,g,k,n,f,l,m,p,q,t,v,u,x,z){function A(c,f,d,l){function m(){mxEvent.addListener(g,"click",function(){var c=d;if(n){var f=C.value,l=f.lastIndexOf(".");if(0>e.lastIndexOf(".")&&0>l){var c=null!=c?c:G.value,m="";c==App.MODE_GOOGLE?m=b.drive.extension:c==App.MODE_GITHUB?m=b.gitHub.extension:c==App.MODE_GITLAB?m=b.gitLab.extension:c==App.MODE_NOTION?m=b.notion.extension:c==App.MODE_TRELLO?m=b.trello.extension:c==App.MODE_DROPBOX?m=b.dropbox.extension:c==App.MODE_ONEDRIVE?
m=b.oneDrive.extension:c==App.MODE_DEVICE&&(m=".drawio");0<=l&&(f=f.substring(0,l));C.value=f+m}}B(d)})}var g=document.createElement("a");g.style.overflow="hidden";var p=document.createElement("img");p.src=c;p.setAttribute("border","0");p.setAttribute("align","absmiddle");p.style.width="60px";p.style.height="60px";p.style.paddingBottom="6px";g.style.display="inline-block";g.className="geBaseButton";g.style.position="relative";g.style.margin="4px";g.style.padding="8px 8px 10px 8px";g.style.whiteSpace=
"nowrap";g.appendChild(p);g.style.color="gray";g.style.fontSize="11px";var k=document.createElement("div");g.appendChild(k);mxUtils.write(k,f);if(null!=l&&null==b[l]){p.style.visibility="hidden";mxUtils.setOpacity(k,10);var t=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});t.spin(g);var L=window.setTimeout(function(){null==b[l]&&(t.stop(),g.style.display="none")},3E4);b.addListener("clientLoaded",mxUtils.bind(this,
-function(){null!=b[l]&&(window.clearTimeout(L),mxUtils.setOpacity(k,100),p.style.visibility="",t.stop(),m())}))}else m();D.appendChild(g);++E==q&&(mxUtils.br(D),E=0)}function B(c){var f=C.value;if(null==c||null!=f&&0<f.length)A&&b.hideDialog(),d(f,c,C)}p="1"==urlParams.noDevice?!1:p;n=null!=n?n:!0;f=null!=f?f:!0;q=null!=q?q:4;A=null!=A?A:!0;k=document.createElement("div");k.style.whiteSpace="nowrap";null==c&&b.addLanguageMenu(k);var y=document.createElement("h2");mxUtils.write(y,g||mxResources.get("create"));
+function(){null!=b[l]&&(window.clearTimeout(L),mxUtils.setOpacity(k,100),p.style.visibility="",t.stop(),m())}))}else m();D.appendChild(g);++F==q&&(mxUtils.br(D),F=0)}function B(c){var f=C.value;if(null==c||null!=f&&0<f.length)z&&b.hideDialog(),d(f,c,C)}p="1"==urlParams.noDevice?!1:p;n=null!=n?n:!0;f=null!=f?f:!0;q=null!=q?q:4;z=null!=z?z:!0;k=document.createElement("div");k.style.whiteSpace="nowrap";null==c&&b.addLanguageMenu(k);var y=document.createElement("h2");mxUtils.write(y,g||mxResources.get("create"));
y.style.marginTop="0px";y.style.marginBottom="24px";k.appendChild(y);mxUtils.write(k,mxResources.get("filename")+":");var C=document.createElement("input");C.setAttribute("value",e);C.style.width="200px";C.style.marginLeft="10px";C.style.marginBottom="20px";C.style.maxWidth="70%";this.init=function(){C.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?C.select():document.execCommand("selectAll",!1,null)};k.appendChild(C);null!=x&&(null!=b.editor.diagramFileTypes&&(g=FilenameDialog.createFileTypes(b,
-C,b.editor.diagramFileTypes),g.style.marginLeft="6px",g.style.width="90px",k.appendChild(g)),k.appendChild(FilenameDialog.createTypeHint(b,C,x)));x=null;if("1"!=urlParams.noDevice&&null!=t&&null!=v&&"image/"==v.substring(0,6)&&("image/svg"!=v.substring(0,9)||mxClient.IS_SVG)){C.style.width="160px";g=document.createElement("img");var G=u?t:btoa(unescape(encodeURIComponent(t)));g.setAttribute("src","data:"+v+";base64,"+G);g.style.position="absolute";g.style.top="70px";g.style.right="100px";g.style.maxWidth=
-"120px";g.style.maxHeight="80px";mxUtils.setPrefixedStyle(g.style,"transform","translate(50%,-50%)");k.appendChild(g);mxClient.IS_FF||null==navigator.clipboard||"image/png"!=v||(x=mxUtils.button(mxResources.get("copy"),function(c){c=b.base64ToBlob(G,"image/png");c=new ClipboardItem({"image/png":c,"text/html":new Blob(['<img src="data:'+v+";base64,"+G+'">'],{type:"text/html"})});navigator.clipboard.write([c]).then(mxUtils.bind(this,function(){b.alert(mxResources.get("copiedToClipboard"))}))["catch"](mxUtils.bind(this,
-function(c){b.handleError(c)}))}),x.style.marginTop="6px",x.className="geBtn");l&&Editor.popupsAllowed&&(g.style.cursor="pointer",mxEvent.addGestureListeners(g,null,null,function(b){mxEvent.isPopupTrigger(b)||B("_blank")}))}mxUtils.br(k);var D=document.createElement("div");D.style.textAlign="center";var E=0;D.style.marginTop="6px";k.appendChild(D);var F=document.createElement("select");F.style.marginLeft="10px";b.isOfflineApp()||b.isOffline()||("function"===typeof window.DriveClient&&(t=document.createElement("option"),
-t.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(t,mxResources.get("googleDrive")),F.appendChild(t),z(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(t,mxResources.get("oneDrive")),F.appendChild(t),b.mode==App.MODE_ONEDRIVE&&t.setAttribute("selected","selected"),z(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),
-App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(t,mxResources.get("dropbox")),F.appendChild(t),b.mode==App.MODE_DROPBOX&&t.setAttribute("selected","selected"),z(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=b.gitHub&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_GITHUB),mxUtils.write(t,mxResources.get("github")),F.appendChild(t),
-z(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),null!=b.gitLab&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_GITLAB),mxUtils.write(t,mxResources.get("gitlab")),F.appendChild(t),z(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),App.MODE_GITLAB,"gitLab")),null!=b.notion&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_NOTION),mxUtils.write(t,mxResources.get("notion")),F.appendChild(t),z(IMAGE_PATH+"/notion-logo.svg",
-mxResources.get("notion"),App.MODE_NOTION,"notion")),"function"===typeof window.TrelloClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_TRELLO),mxUtils.write(t,mxResources.get("trello")),F.appendChild(t),z(IMAGE_PATH+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));if(!Editor.useLocalStorage||"device"==urlParams.storage||null!=b.getCurrentFile()&&"1"!=urlParams.noDevice)t=document.createElement("option"),t.setAttribute("value",App.MODE_DEVICE),mxUtils.write(t,
-mxResources.get("device")),F.appendChild(t),b.mode!=App.MODE_DEVICE&&f||t.setAttribute("selected","selected"),p&&z(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);f&&isLocalStorage&&"0"!=urlParams.browser&&(f=document.createElement("option"),f.setAttribute("value",App.MODE_BROWSER),mxUtils.write(f,mxResources.get("browser")),F.appendChild(f),b.mode==App.MODE_BROWSER&&f.setAttribute("selected","selected"),z(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER));
+C,b.editor.diagramFileTypes),g.style.marginLeft="6px",g.style.width="90px",k.appendChild(g)),k.appendChild(FilenameDialog.createTypeHint(b,C,x)));x=null;if("1"!=urlParams.noDevice&&null!=t&&null!=v&&"image/"==v.substring(0,6)&&("image/svg"!=v.substring(0,9)||mxClient.IS_SVG)){C.style.width="160px";g=document.createElement("img");var E=u?t:btoa(unescape(encodeURIComponent(t)));g.setAttribute("src","data:"+v+";base64,"+E);g.style.position="absolute";g.style.top="70px";g.style.right="100px";g.style.maxWidth=
+"120px";g.style.maxHeight="80px";mxUtils.setPrefixedStyle(g.style,"transform","translate(50%,-50%)");k.appendChild(g);mxClient.IS_FF||null==navigator.clipboard||"image/png"!=v||(x=mxUtils.button(mxResources.get("copy"),function(c){c=b.base64ToBlob(E,"image/png");c=new ClipboardItem({"image/png":c,"text/html":new Blob(['<img src="data:'+v+";base64,"+E+'">'],{type:"text/html"})});navigator.clipboard.write([c]).then(mxUtils.bind(this,function(){b.alert(mxResources.get("copiedToClipboard"))}))["catch"](mxUtils.bind(this,
+function(c){b.handleError(c)}))}),x.style.marginTop="6px",x.className="geBtn");l&&Editor.popupsAllowed&&(g.style.cursor="pointer",mxEvent.addGestureListeners(g,null,null,function(b){mxEvent.isPopupTrigger(b)||B("_blank")}))}mxUtils.br(k);var D=document.createElement("div");D.style.textAlign="center";var F=0;D.style.marginTop="6px";k.appendChild(D);var G=document.createElement("select");G.style.marginLeft="10px";b.isOfflineApp()||b.isOffline()||("function"===typeof window.DriveClient&&(t=document.createElement("option"),
+t.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(t,mxResources.get("googleDrive")),G.appendChild(t),A(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(t,mxResources.get("oneDrive")),G.appendChild(t),b.mode==App.MODE_ONEDRIVE&&t.setAttribute("selected","selected"),A(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),
+App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(t,mxResources.get("dropbox")),G.appendChild(t),b.mode==App.MODE_DROPBOX&&t.setAttribute("selected","selected"),A(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=b.gitHub&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_GITHUB),mxUtils.write(t,mxResources.get("github")),G.appendChild(t),
+A(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),null!=b.gitLab&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_GITLAB),mxUtils.write(t,mxResources.get("gitlab")),G.appendChild(t),A(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),App.MODE_GITLAB,"gitLab")),null!=b.notion&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_NOTION),mxUtils.write(t,mxResources.get("notion")),G.appendChild(t),A(IMAGE_PATH+"/notion-logo.svg",
+mxResources.get("notion"),App.MODE_NOTION,"notion")),"function"===typeof window.TrelloClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_TRELLO),mxUtils.write(t,mxResources.get("trello")),G.appendChild(t),A(IMAGE_PATH+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));if(!Editor.useLocalStorage||"device"==urlParams.storage||null!=b.getCurrentFile()&&"1"!=urlParams.noDevice)t=document.createElement("option"),t.setAttribute("value",App.MODE_DEVICE),mxUtils.write(t,
+mxResources.get("device")),G.appendChild(t),b.mode!=App.MODE_DEVICE&&f||t.setAttribute("selected","selected"),p&&A(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);f&&isLocalStorage&&"0"!=urlParams.browser&&(f=document.createElement("option"),f.setAttribute("value",App.MODE_BROWSER),mxUtils.write(f,mxResources.get("browser")),G.appendChild(f),b.mode==App.MODE_BROWSER&&f.setAttribute("selected","selected"),A(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER));
f=document.createElement("div");f.style.marginTop="26px";f.style.textAlign="center";null!=m&&(p=mxUtils.button(mxResources.get("help"),function(){b.openLink(m)}),p.className="geBtn",f.appendChild(p));p=mxUtils.button(mxResources.get(null!=c?"close":"cancel"),function(){null!=c?c():(b.fileLoaded(null),b.hideDialog(),window.close(),window.location.href=b.getUrl())});p.className="geBtn";b.editor.cancelFirst&&null==c&&f.appendChild(p);null==c&&(t=mxUtils.button(mxResources.get("decideLater"),function(){B(null)}),
t.className="geBtn",f.appendChild(t));l&&Editor.popupsAllowed&&(l=mxUtils.button(mxResources.get("openInNewWindow"),function(){B("_blank")}),l.className="geBtn",f.appendChild(l));CreateDialog.showDownloadButton&&(l=mxUtils.button(mxResources.get("download"),function(){B("download")}),l.className="geBtn",f.appendChild(l),null!=x&&(l.style.marginTop="6px",f.style.marginTop="6px"));null!=x&&(mxUtils.br(f),f.appendChild(x));b.editor.cancelFirst&&null==c||f.appendChild(p);mxEvent.addListener(C,"keypress",
function(c){13==c.keyCode?B(App.MODE_DEVICE):27==c.keyCode&&(b.fileLoaded(null),b.hideDialog(),window.close())});k.appendChild(f);this.container=k};CreateDialog.showDownloadButton="1"!=urlParams.noDevice;
@@ -10285,27 +10285,27 @@ null!=d&&d();b.openLink(e,null,!0)});f.className="geBtn gePrimaryBtn";f.style.wi
"transparent";e.style.borderColor="transparent";e.style.whiteSpace="nowrap";e.style.textOverflow="clip";e.style.cursor="default";e.style.paddingRight="20px";var q=document.createElement("input");q.setAttribute("value",d);q.setAttribute("type","text");q.setAttribute("spellcheck","false");q.setAttribute("autocorrect","off");q.setAttribute("autocomplete","off");q.setAttribute("autocapitalize","off");q.style.marginTop="6px";q.style.width=(Graph.fileSupport?460:340)-20+"px";q.style.backgroundImage="url('"+
Dialog.prototype.clearImage+"')";q.style.backgroundRepeat="no-repeat";q.style.backgroundPosition="100% 50%";q.style.paddingRight="14px";d=document.createElement("div");d.setAttribute("title",mxResources.get("reset"));d.style.position="relative";d.style.left="-16px";d.style.width="12px";d.style.height="14px";d.style.cursor="pointer";d.style.display="inline-block";d.style.top="3px";d.style.background="url('"+b.editor.transparentImage+"')";mxEvent.addListener(d,"click",function(){q.value="";q.focus()});
e.appendChild(q);e.appendChild(d);p.appendChild(e);var t=f,v,u,x=function(f,d,e,l){var m="data:"==f.substring(0,5);!b.isOffline()||m&&"undefined"===typeof chrome?0<f.length&&b.spinner.spin(document.body,mxResources.get("inserting"))?b.loadImage(f,function(m){b.spinner.stop();b.hideDialog();var g=!1===l?1:null!=d&&null!=e?Math.max(d/m.width,e/m.height):Math.min(1,Math.min(520/m.width,520/m.height));k&&(f=b.convertDataUri(f));c(f,Math.round(Number(m.width)*g),Math.round(Number(m.height)*g),t,v,u)},
-function(){b.spinner.stop();c(null);b.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"))}):(b.hideDialog(),c(f,null,null,t,v,u)):(f=b.convertDataUri(f),d=null==d?120:d,e=null==e?100:e,b.hideDialog(),c(f,d,e,t,v,u))},A=function(f,d){if(null!=f){var e=g?null:m.getModel().getGeometry(m.getSelectionCell());null!=e?x(f,e.width,e.height,d):x(f,null,null,d)}else b.hideDialog(),c(null)};this.init=function(){q.focus();if(Graph.fileSupport){q.setAttribute("placeholder",
+function(){b.spinner.stop();c(null);b.showError(mxResources.get("error"),mxResources.get("fileNotFound"),mxResources.get("ok"))}):(b.hideDialog(),c(f,null,null,t,v,u)):(f=b.convertDataUri(f),d=null==d?120:d,e=null==e?100:e,b.hideDialog(),c(f,d,e,t,v,u))},z=function(f,d){if(null!=f){var e=g?null:m.getModel().getGeometry(m.getSelectionCell());null!=e?x(f,e.width,e.height,d):x(f,null,null,d)}else b.hideDialog(),c(null)};this.init=function(){q.focus();if(Graph.fileSupport){q.setAttribute("placeholder",
mxResources.get("dragImagesHere"));var c=p.parentNode,f=null;mxEvent.addListener(c,"dragleave",function(b){null!=f&&(f.parentNode.removeChild(f),f=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(d){null==f&&(!mxClient.IS_IE||10<document.documentMode)&&(f=b.highlightElement(c));d.stopPropagation();d.preventDefault()}));mxEvent.addListener(c,"drop",mxUtils.bind(this,function(c){null!=f&&(f.parentNode.removeChild(f),f=null);if(0<c.dataTransfer.files.length)b.importFiles(c.dataTransfer.files,
-0,0,b.maxImageSize,function(b,c,f,d,e,l,m,g){A(b,g)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var c=0;c<b.length;c++)b[c]()},!mxEvent.isControlDown(c),null,null,!0);else if(0<=mxUtils.indexOf(c.dataTransfer.types,"text/uri-list")){var d=c.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(d)&&A(decodeURIComponent(d))}c.stopPropagation();c.preventDefault()}),!1)}};f=document.createElement("div");f.style.marginTop="14px";f.style.textAlign=
-"center";d=mxUtils.button(mxResources.get("cancel"),function(){b.spinner.stop();b.hideDialog()});d.className="geBtn";b.editor.cancelFirst&&f.appendChild(d);ImageDialog.filePicked=function(b){b.action==google.picker.Action.PICKED&&null!=b.docs[0].thumbnails&&(b=b.docs[0].thumbnails[b.docs[0].thumbnails.length-1],null!=b&&(q.value=b.url));q.focus()};if(Graph.fileSupport){if(null==b.imgDlgFileInputElt){var z=document.createElement("input");z.setAttribute("multiple","multiple");z.setAttribute("type",
-"file");mxEvent.addListener(z,"change",function(c){null!=z.files&&(b.importFiles(z.files,0,0,b.maxImageSize,function(b,c,f,d,e,l){A(b)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var c=0;c<b.length;c++)b[c]()},!0),z.type="",z.type="file",z.value="")});z.style.display="none";document.body.appendChild(z);b.imgDlgFileInputElt=z}e=mxUtils.button(mxResources.get("open"),function(){b.imgDlgFileInputElt.click()});e.className="geBtn";f.appendChild(e)}mxEvent.addListener(q,
-"keypress",function(b){13==b.keyCode&&A(q.value)});var B=mxUtils.button(mxResources.get("crop"),function(){var c=new CropImageDialog(b,q.value,t,function(b,c,f){t=b;v=c;u=f});b.showDialog(c.container,300,390,!0,!0)});n&&(B.className="geBtn",f.appendChild(B));mxEvent.addListener(q,"change",function(b){t=null;l()});l();n=mxUtils.button(mxResources.get("apply"),function(){A(q.value)});n.className="geBtn gePrimaryBtn";f.appendChild(n);b.editor.cancelFirst||f.appendChild(d);Graph.fileSupport&&(f.style.marginTop=
+0,0,b.maxImageSize,function(b,c,f,d,e,l,m,g){z(b,g)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var c=0;c<b.length;c++)b[c]()},!mxEvent.isControlDown(c),null,null,!0);else if(0<=mxUtils.indexOf(c.dataTransfer.types,"text/uri-list")){var d=c.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(d)&&z(decodeURIComponent(d))}c.stopPropagation();c.preventDefault()}),!1)}};f=document.createElement("div");f.style.marginTop="14px";f.style.textAlign=
+"center";d=mxUtils.button(mxResources.get("cancel"),function(){b.spinner.stop();b.hideDialog()});d.className="geBtn";b.editor.cancelFirst&&f.appendChild(d);ImageDialog.filePicked=function(b){b.action==google.picker.Action.PICKED&&null!=b.docs[0].thumbnails&&(b=b.docs[0].thumbnails[b.docs[0].thumbnails.length-1],null!=b&&(q.value=b.url));q.focus()};if(Graph.fileSupport){if(null==b.imgDlgFileInputElt){var A=document.createElement("input");A.setAttribute("multiple","multiple");A.setAttribute("type",
+"file");mxEvent.addListener(A,"change",function(c){null!=A.files&&(b.importFiles(A.files,0,0,b.maxImageSize,function(b,c,f,d,e,l){z(b)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var c=0;c<b.length;c++)b[c]()},!0),A.type="",A.type="file",A.value="")});A.style.display="none";document.body.appendChild(A);b.imgDlgFileInputElt=A}e=mxUtils.button(mxResources.get("open"),function(){b.imgDlgFileInputElt.click()});e.className="geBtn";f.appendChild(e)}mxEvent.addListener(q,
+"keypress",function(b){13==b.keyCode&&z(q.value)});var B=mxUtils.button(mxResources.get("crop"),function(){var c=new CropImageDialog(b,q.value,t,function(b,c,f){t=b;v=c;u=f});b.showDialog(c.container,300,390,!0,!0)});n&&(B.className="geBtn",f.appendChild(B));mxEvent.addListener(q,"change",function(b){t=null;l()});l();n=mxUtils.button(mxResources.get("apply"),function(){z(q.value)});n.className="geBtn gePrimaryBtn";f.appendChild(n);b.editor.cancelFirst||f.appendChild(d);Graph.fileSupport&&(f.style.marginTop=
"120px",p.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",p.style.backgroundPosition="center 65%",p.style.backgroundRepeat="no-repeat",n=document.createElement("div"),n.style.position="absolute",n.style.width="420px",n.style.top="58%",n.style.textAlign="center",n.style.fontSize="18px",n.style.color="#a0c3ff",mxUtils.write(n,mxResources.get("dragImagesHere")),p.appendChild(n));p.appendChild(f);this.container=p},LinkDialog=function(b,e,d,c,g,k,n){function f(b,c,f){f=mxUtils.button("",f);
f.className="geBtn";f.setAttribute("title",c);c=document.createElement("img");c.style.height="26px";c.style.width="26px";c.setAttribute("src",b);f.style.minWidth="42px";f.style.verticalAlign="middle";f.appendChild(c);B.appendChild(f)}var l=document.createElement("div");l.style.height="100%";mxUtils.write(l,mxResources.get("editLink")+":");var m=document.createElement("div");m.className="geTitle";m.style.backgroundColor="transparent";m.style.borderColor="transparent";m.style.whiteSpace="nowrap";m.style.textOverflow=
"clip";m.style.cursor="default";m.style.paddingRight="20px";var p=document.createElement("input");p.setAttribute("placeholder",mxResources.get("dragUrlsHere"));p.setAttribute("type","text");p.style.marginTop="6px";p.style.width="97%";p.style.boxSizing="border-box";p.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";p.style.backgroundRepeat="no-repeat";p.style.backgroundPosition="100% 50%";p.style.paddingRight="14px";p.style.marginBottom="4px";var q=document.createElement("div");q.setAttribute("title",
mxResources.get("reset"));q.style.position="relative";q.style.left="-16px";q.style.width="12px";q.style.height="14px";q.style.cursor="pointer";q.style.display="inline-block";q.style.top="3px";q.style.background="url('"+b.editor.transparentImage+"')";mxEvent.addListener(q,"click",function(){p.value="";p.focus()});var t=document.createElement("input");t.style.cssText="margin-right:8px;margin-bottom:8px;";t.setAttribute("value","url");t.setAttribute("type","radio");t.setAttribute("name","geLinkDialogOption");
var v=document.createElement("input");v.style.cssText="margin-right:8px;margin-bottom:8px;";v.setAttribute("value","url");v.setAttribute("type","radio");v.setAttribute("name","geLinkDialogOption");var u=document.createElement("select");u.style.width="520px";var x=document.createElement("input");x.setAttribute("type","checkbox");x.style.margin="0 6p 0 6px";null!=n&&(x.setAttribute("checked","checked"),x.defaultChecked=!0);n=null!=n?n:"_blank";x.setAttribute("title",n);k&&(p.style.width="340px");if(g&&
null!=b.pages){null!=e&&Graph.isPageLink(e)?(v.setAttribute("checked","checked"),v.defaultChecked=!0):(p.setAttribute("value",e),t.setAttribute("checked","checked"),t.defaultChecked=!0);m.appendChild(t);m.appendChild(p);m.appendChild(q);k&&(m.appendChild(x),mxUtils.write(m,mxResources.get("openInNewWindow")));mxUtils.br(m);m.appendChild(v);g=!1;for(k=0;k<b.pages.length;k++)q=document.createElement("option"),mxUtils.write(q,b.pages[k].getName()||mxResources.get("pageWithNumber",[k+1])),q.setAttribute("value",
-"data:page/id,"+b.pages[k].getId()),e==q.getAttribute("value")&&(q.setAttribute("selected","selected"),g=!0),u.appendChild(q);if(!g&&v.checked){var A=document.createElement("option");mxUtils.write(A,mxResources.get("pageNotFound"));A.setAttribute("disabled","disabled");A.setAttribute("selected","selected");A.setAttribute("value","pageNotFound");u.appendChild(A);mxEvent.addListener(u,"change",function(){null==A.parentNode||A.selected||A.parentNode.removeChild(A)})}m.appendChild(u)}else p.setAttribute("value",
-e),m.appendChild(p),m.appendChild(q);l.appendChild(m);var z=mxUtils.button(d,function(){b.hideDialog();c(v.checked?"pageNotFound"!==u.value?u.value:e:p.value,LinkDialog.selectedDocs,x.checked?n:null)});z.style.verticalAlign="middle";z.className="geBtn gePrimaryBtn";this.init=function(){v.checked?u.focus():(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null));mxEvent.addListener(u,"focus",function(){t.removeAttribute("checked");v.setAttribute("checked",
+"data:page/id,"+b.pages[k].getId()),e==q.getAttribute("value")&&(q.setAttribute("selected","selected"),g=!0),u.appendChild(q);if(!g&&v.checked){var z=document.createElement("option");mxUtils.write(z,mxResources.get("pageNotFound"));z.setAttribute("disabled","disabled");z.setAttribute("selected","selected");z.setAttribute("value","pageNotFound");u.appendChild(z);mxEvent.addListener(u,"change",function(){null==z.parentNode||z.selected||z.parentNode.removeChild(z)})}m.appendChild(u)}else p.setAttribute("value",
+e),m.appendChild(p),m.appendChild(q);l.appendChild(m);var A=mxUtils.button(d,function(){b.hideDialog();c(v.checked?"pageNotFound"!==u.value?u.value:e:p.value,LinkDialog.selectedDocs,x.checked?n:null)});A.style.verticalAlign="middle";A.className="geBtn gePrimaryBtn";this.init=function(){v.checked?u.focus():(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null));mxEvent.addListener(u,"focus",function(){t.removeAttribute("checked");v.setAttribute("checked",
"checked");v.checked=!0});mxEvent.addListener(p,"focus",function(){v.removeAttribute("checked");t.setAttribute("checked","checked");t.checked=!0});if(Graph.fileSupport){var c=l.parentNode,f=null;mxEvent.addListener(c,"dragleave",function(b){null!=f&&(f.parentNode.removeChild(f),f=null);b.stopPropagation();b.preventDefault()});mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(d){null==f&&(!mxClient.IS_IE||10<document.documentMode)&&(f=b.highlightElement(c));d.stopPropagation();d.preventDefault()}));
-mxEvent.addListener(c,"drop",mxUtils.bind(this,function(b){null!=f&&(f.parentNode.removeChild(f),f=null);0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")&&(p.value=decodeURIComponent(b.dataTransfer.getData("text/uri-list")),t.setAttribute("checked","checked"),t.checked=!0,z.click());b.stopPropagation();b.preventDefault()}),!1)}};var B=document.createElement("div");B.style.marginTop="18px";B.style.textAlign="center";d=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://www.diagrams.net/doc/faq/custom-links")});
+mxEvent.addListener(c,"drop",mxUtils.bind(this,function(b){null!=f&&(f.parentNode.removeChild(f),f=null);0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")&&(p.value=decodeURIComponent(b.dataTransfer.getData("text/uri-list")),t.setAttribute("checked","checked"),t.checked=!0,A.click());b.stopPropagation();b.preventDefault()}),!1)}};var B=document.createElement("div");B.style.marginTop="18px";B.style.textAlign="center";d=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://www.diagrams.net/doc/faq/custom-links")});
d.style.verticalAlign="middle";d.className="geBtn";B.appendChild(d);b.isOffline()&&!mxClient.IS_CHROMEAPP&&(d.style.display="none");d=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});d.style.verticalAlign="middle";d.className="geBtn";b.editor.cancelFirst&&B.appendChild(d);LinkDialog.selectedDocs=null;LinkDialog.filePicked=function(b){if(b.action==google.picker.Action.PICKED){LinkDialog.selectedDocs=b.docs;var c=b.docs[0].url;"application/mxe"==b.docs[0].mimeType||null!=b.docs[0].mimeType&&
"application/vnd.jgraph."==b.docs[0].mimeType.substring(0,23)?c="https://www.draw.io/#G"+b.docs[0].id:"application/vnd.google-apps.folder"==b.docs[0].mimeType&&(c="https://drive.google.com/#folders/"+b.docs[0].id);p.value=c;p.focus()}else LinkDialog.selectedDocs=null;p.focus()};"undefined"!=typeof google&&"undefined"!=typeof google.picker&&null!=b.drive&&f(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googlePlus"),function(){b.spinner.spin(document.body,mxResources.get("authorizing"))&&b.drive.checkToken(mxUtils.bind(this,
function(){b.spinner.stop();if(null==b.linkPicker){var c=b.drive.createLinkPicker();b.linkPicker=c.setCallback(function(b){LinkDialog.filePicked(b)}).build()}b.linkPicker.setVisible(!0)}))});"undefined"!=typeof Dropbox&&"undefined"!=typeof Dropbox.choose&&f(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),function(){Dropbox.choose({linkType:"direct",cancel:function(){},success:function(b){p.value=b[0].link;p.focus()}})});null!=b.oneDrive&&f(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),
function(){b.oneDrive.pickFile(function(b,c){p.value=c.value[0].webUrl;p.focus()})});null!=b.gitHub&&f(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),function(){b.gitHub.pickFile(function(b){if(null!=b){b=b.split("/");var c=b[0],f=b[1],d=b[2];b=b.slice(3,b.length).join("/");p.value="https://github.com/"+c+"/"+f+"/blob/"+d+"/"+b;p.focus()}})});null!=b.gitLab&&f(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),function(){b.gitLab.pickFile(function(b){if(null!=b){b=b.split("/");var c=
-b[0],f=b[1],d=b[2];b=b.slice(3,b.length).join("/");p.value=DRAWIO_GITLAB_URL+"/"+c+"/"+f+"/blob/"+d+"/"+b;p.focus()}})});mxEvent.addListener(p,"keypress",function(f){13==f.keyCode&&(b.hideDialog(),c(v.checked?u.value:p.value,LinkDialog.selectedDocs))});B.appendChild(z);b.editor.cancelFirst||B.appendChild(d);l.appendChild(B);this.container=l},FeedbackDialog=function(b,e,d,c){var g=document.createElement("div"),k=document.createElement("div");mxUtils.write(k,mxResources.get("sendYourFeedback"));k.style.fontSize=
+b[0],f=b[1],d=b[2];b=b.slice(3,b.length).join("/");p.value=DRAWIO_GITLAB_URL+"/"+c+"/"+f+"/blob/"+d+"/"+b;p.focus()}})});mxEvent.addListener(p,"keypress",function(f){13==f.keyCode&&(b.hideDialog(),c(v.checked?u.value:p.value,LinkDialog.selectedDocs))});B.appendChild(A);b.editor.cancelFirst||B.appendChild(d);l.appendChild(B);this.container=l},FeedbackDialog=function(b,e,d,c){var g=document.createElement("div"),k=document.createElement("div");mxUtils.write(k,mxResources.get("sendYourFeedback"));k.style.fontSize=
"18px";k.style.marginBottom="18px";g.appendChild(k);k=document.createElement("div");mxUtils.write(k,mxResources.get("yourEmailAddress")+(d?"":" ("+mxResources.get("required")+")"));g.appendChild(k);var n=document.createElement("input");n.setAttribute("type","text");n.style.marginTop="6px";n.style.width="600px";var f=mxUtils.button(mxResources.get("sendMessage"),function(){var f=p.value+(m.checked?"\nDiagram:\n"+(null!=c?c:mxUtils.getXml(b.getXmlFileData())):"")+"\nuserAgent:\n"+navigator.userAgent+
"\nappVersion:\n"+navigator.appVersion+"\nappName:\n"+navigator.appName+"\nplatform:\n"+navigator.platform;f.length>FeedbackDialog.maxAttachmentSize?b.alert(mxResources.get("drawingTooLarge")):(b.hideDialog(),b.spinner.spin(document.body)&&mxUtils.post(null!=FeedbackDialog.feedbackUrl?FeedbackDialog.feedbackUrl:"/email","email="+encodeURIComponent(n.value)+"&version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&body="+encodeURIComponent((null!=e?e:"Feedback")+
":\n"+f),function(c){b.spinner.stop();200<=c.getStatus()&&299>=c.getStatus()?b.alert(mxResources.get("feedbackSent")):b.alert(mxResources.get("errorSendingFeedback"))},function(){b.spinner.stop();b.alert(mxResources.get("errorSendingFeedback"))}))});f.className="geBtn gePrimaryBtn";if(!d){f.setAttribute("disabled","disabled");var l=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;mxEvent.addListener(n,
@@ -10315,57 +10315,57 @@ g.appendChild(p);d=document.createElement("div");d.style.marginTop="26px";d.styl
var RevisionDialog=function(b,e,d){var c=document.createElement("div"),g=document.createElement("h3");g.style.marginTop="0px";mxUtils.write(g,mxResources.get("revisionHistory"));c.appendChild(g);g=document.createElement("div");g.style.position="absolute";g.style.overflow="auto";g.style.width="170px";g.style.height="378px";c.appendChild(g);var k=document.createElement("div");k.style.position="absolute";k.style.border="1px solid lightGray";k.style.left="199px";k.style.width="470px";k.style.height="376px";
k.style.overflow="hidden";var n=document.createElement("div");n.style.cssText="position:absolute;left:0;right:0;top:0;bottom:20px;text-align:center;transform:translate(0,50%);pointer-events:none;";k.appendChild(n);mxEvent.disableContextMenu(k);c.appendChild(k);var f=new Graph(k);f.setTooltips(!1);f.setEnabled(!1);f.setPanning(!0);f.panningHandler.ignoreCell=!0;f.panningHandler.useLeftButtonForPanning=!0;f.minFitScale=null;f.maxFitScale=null;f.centerZoom=!0;var l=0,m=null,p=0,q=f.getGlobalVariable;
f.getGlobalVariable=function(b){return"page"==b&&null!=m&&null!=m[p]?m[p].getAttribute("name"):"pagenumber"==b?p+1:"pagecount"==b?null!=m?m.length:1:q.apply(this,arguments)};f.getLinkForCell=function(){return null};Editor.MathJaxRender&&f.addListener(mxEvent.SIZE,mxUtils.bind(this,function(c,d){b.editor.graph.mathEnabled&&Editor.MathJaxRender(f.container)}));for(var t={lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:Editor.isDarkMode()?"#c0c0c0":"#000",speed:1.4,trail:60,
-shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"},v=new Spinner(t),u=b.getCurrentFile(),x=b.getXmlFileData(!0,!1,!0).getElementsByTagName("diagram"),A={},t=0;t<x.length;t++)A[x[t].getAttribute("id")]=x[t];var z=null,B=null,y=null,C=null,G=mxUtils.button("",function(){null!=y&&f.zoomIn()});G.className="geSprite geSprite-zoomin";G.setAttribute("title",mxResources.get("zoomIn"));G.style.outline="none";G.style.border="none";G.style.margin="2px";G.setAttribute("disabled","disabled");
-mxUtils.setOpacity(G,20);var D=mxUtils.button("",function(){null!=y&&f.zoomOut()});D.className="geSprite geSprite-zoomout";D.setAttribute("title",mxResources.get("zoomOut"));D.style.outline="none";D.style.border="none";D.style.margin="2px";D.setAttribute("disabled","disabled");mxUtils.setOpacity(D,20);var E=mxUtils.button("",function(){null!=y&&(f.maxFitScale=8,f.fit(8),f.center())});E.className="geSprite geSprite-fit";E.setAttribute("title",mxResources.get("fit"));E.style.outline="none";E.style.border=
-"none";E.style.margin="2px";E.setAttribute("disabled","disabled");mxUtils.setOpacity(E,20);var F=mxUtils.button("",function(){null!=y&&(f.zoomActual(),f.center())});F.className="geSprite geSprite-actualsize";F.setAttribute("title",mxResources.get("actualSize"));F.style.outline="none";F.style.border="none";F.style.margin="2px";F.setAttribute("disabled","disabled");mxUtils.setOpacity(F,20);var J=mxUtils.button("",function(){});J.className="geSprite geSprite-middle";J.setAttribute("title",mxResources.get("compare"));
-J.style.outline="none";J.style.border="none";J.style.margin="2px";mxUtils.setOpacity(J,60);var K=k.cloneNode(!1);K.style.pointerEvent="none";k.parentNode.appendChild(K);var H=new Graph(K);H.setTooltips(!1);H.setEnabled(!1);H.setPanning(!0);H.panningHandler.ignoreCell=!0;H.panningHandler.useLeftButtonForPanning=!0;H.minFitScale=null;H.maxFitScale=null;H.centerZoom=!0;mxEvent.addGestureListeners(J,function(b){b=A[m[l].getAttribute("id")];mxUtils.setOpacity(J,20);n.innerHTML="";null==b?mxUtils.write(n,
-mxResources.get("pageNotFound")):(I.style.display="none",k.style.display="none",K.style.display="",K.style.backgroundColor=k.style.backgroundColor,b=Editor.parseDiagramNode(b),(new mxCodec(b.ownerDocument)).decode(b,H.getModel()),H.view.scaleAndTranslate(f.view.scale,f.view.translate.x,f.view.translate.y))},null,function(){mxUtils.setOpacity(J,60);n.innerHTML="";"none"==k.style.display&&(I.style.display="",k.style.display="",K.style.display="none")});var I=document.createElement("div");I.style.position=
-"absolute";I.style.textAlign="right";I.style.color="gray";I.style.marginTop="10px";I.style.backgroundColor="transparent";I.style.top="440px";I.style.right="32px";I.style.maxWidth="380px";I.style.cursor="default";var S=mxUtils.button(mxResources.get("download"),function(){if(null!=y){var c=mxUtils.getXml(y.documentElement),f=b.getBaseFilename()+".drawio";b.isLocalFileSave()?b.saveLocalFile(c,f,"text/xml"):(c="undefined"===typeof pako?"&xml="+encodeURIComponent(c):"&data="+encodeURIComponent(Graph.compress(c)),
-(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(f)+"&format=xml"+c)).simulate(document,"_blank"))}});S.className="geBtn";S.setAttribute("disabled","disabled");var P=mxUtils.button(mxResources.get("restore"),function(c){null!=y&&null!=C&&(mxEvent.isShiftDown(c)?null!=y&&(c=b.getPagesForNode(y.documentElement),c=b.diffPages(b.pages,c),c=new TextareaDialog(b,mxResources.get("compare"),JSON.stringify(c,null,2),function(c){if(0<c.length)try{b.confirm(mxResources.get("areYouSure"),function(){u.patch([JSON.parse(c)],
-null,!0);b.hideDialog();b.hideDialog()})}catch(la){b.handleError(la)}},null,null,null,null,null,!0,null,mxResources.get("merge")),b.showDialog(c.container,620,460,!0,!0),c.init()):b.confirm(mxResources.get("areYouSure"),function(){null!=d?d(C):b.spinner.spin(document.body,mxResources.get("restoring"))&&u.save(!0,function(c){b.spinner.stop();b.replaceFileData(C);b.hideDialog()},function(c){b.spinner.stop();b.editor.setStatus("");b.handleError(c,null!=c?mxResources.get("errorSavingFile"):null)})}))});
-P.className="geBtn";P.setAttribute("disabled","disabled");P.setAttribute("title","Shift+Click for Diff");var M=document.createElement("select");M.setAttribute("disabled","disabled");M.style.maxWidth="80px";M.style.position="relative";M.style.top="-2px";M.style.verticalAlign="bottom";M.style.marginRight="6px";M.style.display="none";var W=null;mxEvent.addListener(M,"change",function(b){null!=W&&(W(b),mxEvent.consume(b))});var X=mxUtils.button(mxResources.get("edit"),function(){null!=y&&(window.openFile=
-new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(y.documentElement)),b.openLink(b.getUrl(),null,!0))});X.className="geBtn";X.setAttribute("disabled","disabled");null!=d&&(X.style.display="none");var L=mxUtils.button(mxResources.get("show"),function(){null!=B&&b.openLink(B.getUrl(M.selectedIndex))});L.className="geBtn gePrimaryBtn";L.setAttribute("disabled","disabled");null!=d&&(L.style.display="none",P.className="geBtn gePrimaryBtn");x=document.createElement("div");
-x.style.position="absolute";x.style.top="482px";x.style.width="640px";x.style.textAlign="right";var Q=document.createElement("div");Q.className="geToolbarContainer";Q.style.backgroundColor="transparent";Q.style.padding="2px";Q.style.border="none";Q.style.left="199px";Q.style.top="442px";var T=null;if(null!=e&&0<e.length){k.style.cursor="move";var da=document.createElement("table");da.style.border="1px solid lightGray";da.style.borderCollapse="collapse";da.style.borderSpacing="0px";da.style.width=
-"100%";var oa=document.createElement("tbody"),ea=(new Date).toDateString();null!=b.currentPage&&null!=b.pages&&(l=mxUtils.indexOf(b.pages,b.currentPage));for(t=e.length-1;0<=t;t--){var N=function(c){var d=new Date(c.modifiedDate),g=null;if(0<=d.getTime()){var q=function(e){v.stop();n.innerHTML="";var q=mxUtils.parseXml(e),t=b.editor.extractGraphModel(q.documentElement,!0);if(null!=t){var x=function(b){null!=b&&(b=A(Editor.parseDiagramNode(b)));return b},A=function(b){var c=b.getAttribute("background");
+shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"},v=new Spinner(t),u=b.getCurrentFile(),x=b.getXmlFileData(!0,!1,!0).getElementsByTagName("diagram"),z={},t=0;t<x.length;t++)z[x[t].getAttribute("id")]=x[t];var A=null,B=null,y=null,C=null,E=mxUtils.button("",function(){null!=y&&f.zoomIn()});E.className="geSprite geSprite-zoomin";E.setAttribute("title",mxResources.get("zoomIn"));E.style.outline="none";E.style.border="none";E.style.margin="2px";E.setAttribute("disabled","disabled");
+mxUtils.setOpacity(E,20);var D=mxUtils.button("",function(){null!=y&&f.zoomOut()});D.className="geSprite geSprite-zoomout";D.setAttribute("title",mxResources.get("zoomOut"));D.style.outline="none";D.style.border="none";D.style.margin="2px";D.setAttribute("disabled","disabled");mxUtils.setOpacity(D,20);var F=mxUtils.button("",function(){null!=y&&(f.maxFitScale=8,f.fit(8),f.center())});F.className="geSprite geSprite-fit";F.setAttribute("title",mxResources.get("fit"));F.style.outline="none";F.style.border=
+"none";F.style.margin="2px";F.setAttribute("disabled","disabled");mxUtils.setOpacity(F,20);var G=mxUtils.button("",function(){null!=y&&(f.zoomActual(),f.center())});G.className="geSprite geSprite-actualsize";G.setAttribute("title",mxResources.get("actualSize"));G.style.outline="none";G.style.border="none";G.style.margin="2px";G.setAttribute("disabled","disabled");mxUtils.setOpacity(G,20);var I=mxUtils.button("",function(){});I.className="geSprite geSprite-middle";I.setAttribute("title",mxResources.get("compare"));
+I.style.outline="none";I.style.border="none";I.style.margin="2px";mxUtils.setOpacity(I,60);var J=k.cloneNode(!1);J.style.pointerEvent="none";k.parentNode.appendChild(J);var H=new Graph(J);H.setTooltips(!1);H.setEnabled(!1);H.setPanning(!0);H.panningHandler.ignoreCell=!0;H.panningHandler.useLeftButtonForPanning=!0;H.minFitScale=null;H.maxFitScale=null;H.centerZoom=!0;mxEvent.addGestureListeners(I,function(b){b=z[m[l].getAttribute("id")];mxUtils.setOpacity(I,20);n.innerHTML="";null==b?mxUtils.write(n,
+mxResources.get("pageNotFound")):(K.style.display="none",k.style.display="none",J.style.display="",J.style.backgroundColor=k.style.backgroundColor,b=Editor.parseDiagramNode(b),(new mxCodec(b.ownerDocument)).decode(b,H.getModel()),H.view.scaleAndTranslate(f.view.scale,f.view.translate.x,f.view.translate.y))},null,function(){mxUtils.setOpacity(I,60);n.innerHTML="";"none"==k.style.display&&(K.style.display="",k.style.display="",J.style.display="none")});var K=document.createElement("div");K.style.position=
+"absolute";K.style.textAlign="right";K.style.color="gray";K.style.marginTop="10px";K.style.backgroundColor="transparent";K.style.top="440px";K.style.right="32px";K.style.maxWidth="380px";K.style.cursor="default";var R=mxUtils.button(mxResources.get("download"),function(){if(null!=y){var c=mxUtils.getXml(y.documentElement),f=b.getBaseFilename()+".drawio";b.isLocalFileSave()?b.saveLocalFile(c,f,"text/xml"):(c="undefined"===typeof pako?"&xml="+encodeURIComponent(c):"&data="+encodeURIComponent(Graph.compress(c)),
+(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(f)+"&format=xml"+c)).simulate(document,"_blank"))}});R.className="geBtn";R.setAttribute("disabled","disabled");var O=mxUtils.button(mxResources.get("restore"),function(c){null!=y&&null!=C&&(mxEvent.isShiftDown(c)?null!=y&&(c=b.getPagesForNode(y.documentElement),c=b.diffPages(b.pages,c),c=new TextareaDialog(b,mxResources.get("compare"),JSON.stringify(c,null,2),function(c){if(0<c.length)try{b.confirm(mxResources.get("areYouSure"),function(){u.patch([JSON.parse(c)],
+null,!0);b.hideDialog();b.hideDialog()})}catch(ka){b.handleError(ka)}},null,null,null,null,null,!0,null,mxResources.get("merge")),b.showDialog(c.container,620,460,!0,!0),c.init()):b.confirm(mxResources.get("areYouSure"),function(){null!=d?d(C):b.spinner.spin(document.body,mxResources.get("restoring"))&&u.save(!0,function(c){b.spinner.stop();b.replaceFileData(C);b.hideDialog()},function(c){b.spinner.stop();b.editor.setStatus("");b.handleError(c,null!=c?mxResources.get("errorSavingFile"):null)})}))});
+O.className="geBtn";O.setAttribute("disabled","disabled");O.setAttribute("title","Shift+Click for Diff");var M=document.createElement("select");M.setAttribute("disabled","disabled");M.style.maxWidth="80px";M.style.position="relative";M.style.top="-2px";M.style.verticalAlign="bottom";M.style.marginRight="6px";M.style.display="none";var V=null;mxEvent.addListener(M,"change",function(b){null!=V&&(V(b),mxEvent.consume(b))});var W=mxUtils.button(mxResources.get("edit"),function(){null!=y&&(window.openFile=
+new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(y.documentElement)),b.openLink(b.getUrl(),null,!0))});W.className="geBtn";W.setAttribute("disabled","disabled");null!=d&&(W.style.display="none");var L=mxUtils.button(mxResources.get("show"),function(){null!=B&&b.openLink(B.getUrl(M.selectedIndex))});L.className="geBtn gePrimaryBtn";L.setAttribute("disabled","disabled");null!=d&&(L.style.display="none",O.className="geBtn gePrimaryBtn");x=document.createElement("div");
+x.style.position="absolute";x.style.top="482px";x.style.width="640px";x.style.textAlign="right";var P=document.createElement("div");P.className="geToolbarContainer";P.style.backgroundColor="transparent";P.style.padding="2px";P.style.border="none";P.style.left="199px";P.style.top="442px";var X=null;if(null!=e&&0<e.length){k.style.cursor="move";var da=document.createElement("table");da.style.border="1px solid lightGray";da.style.borderCollapse="collapse";da.style.borderSpacing="0px";da.style.width=
+"100%";var na=document.createElement("tbody"),ea=(new Date).toDateString();null!=b.currentPage&&null!=b.pages&&(l=mxUtils.indexOf(b.pages,b.currentPage));for(t=e.length-1;0<=t;t--){var T=function(c){var d=new Date(c.modifiedDate),g=null;if(0<=d.getTime()){var q=function(e){v.stop();n.innerHTML="";var q=mxUtils.parseXml(e),t=b.editor.extractGraphModel(q.documentElement,!0);if(null!=t){var x=function(b){null!=b&&(b=z(Editor.parseDiagramNode(b)));return b},z=function(b){var c=b.getAttribute("background");
if(null==c||""==c||c==mxConstants.NONE)c=f.defaultPageBackgroundColor;k.style.backgroundColor=c;(new mxCodec(b.ownerDocument)).decode(b,f.getModel());f.maxFitScale=1;f.fit(8);f.center();return b};M.style.display="none";M.innerHTML="";y=q;C=e;m=parseSelectFunction=null;p=0;if("mxfile"==t.nodeName){q=t.getElementsByTagName("diagram");m=[];for(e=0;e<q.length;e++)m.push(q[e]);p=Math.min(l,m.length-1);0<m.length&&x(m[p]);if(1<m.length)for(M.removeAttribute("disabled"),M.style.display="",e=0;e<m.length;e++)q=
-document.createElement("option"),mxUtils.write(q,m[e].getAttribute("name")||mxResources.get("pageWithNumber",[e+1])),q.setAttribute("value",e),e==p&&q.setAttribute("selected","selected"),M.appendChild(q);W=function(){try{var c=parseInt(M.value);p=l=c;x(m[c])}catch(ra){M.value=l,b.handleError(ra)}}}else A(t);e=c.lastModifyingUserName;null!=e&&20<e.length&&(e=e.substring(0,20)+"...");I.innerHTML="";mxUtils.write(I,(null!=e?e+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());I.setAttribute("title",
-g.getAttribute("title"));G.removeAttribute("disabled");D.removeAttribute("disabled");E.removeAttribute("disabled");F.removeAttribute("disabled");J.removeAttribute("disabled");null!=u&&u.isRestricted()||(b.editor.graph.isEnabled()&&P.removeAttribute("disabled"),S.removeAttribute("disabled"),L.removeAttribute("disabled"),X.removeAttribute("disabled"));mxUtils.setOpacity(G,60);mxUtils.setOpacity(D,60);mxUtils.setOpacity(E,60);mxUtils.setOpacity(F,60);mxUtils.setOpacity(J,60)}else M.style.display="none",
-M.innerHTML="",I.innerHTML="",mxUtils.write(I,mxResources.get("errorLoadingFile")),mxUtils.write(n,mxResources.get("errorLoadingFile"))},g=document.createElement("tr");g.style.borderBottom="1px solid lightGray";g.style.fontSize="12px";g.style.cursor="pointer";var t=document.createElement("td");t.style.padding="6px";t.style.whiteSpace="nowrap";c==e[e.length-1]?mxUtils.write(t,mxResources.get("current")):d.toDateString()===ea?mxUtils.write(t,d.toLocaleTimeString()):mxUtils.write(t,d.toLocaleDateString()+
-" "+d.toLocaleTimeString());g.appendChild(t);g.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString()+(null!=c.fileSize?" "+b.formatFileSize(parseInt(c.fileSize)):"")+(null!=c.lastModifyingUserName?" "+c.lastModifyingUserName:""));mxEvent.addListener(g,"click",function(b){B!=c&&(v.stop(),null!=z&&(z.style.backgroundColor=""),B=c,z=g,z.style.backgroundColor=Editor.isDarkMode()?"#000000":"#ebf2f9",C=y=null,I.removeAttribute("title"),I.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+
-"..."),k.style.backgroundColor=f.defaultPageBackgroundColor,n.innerHTML="",f.getModel().clear(),P.setAttribute("disabled","disabled"),S.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"),X.setAttribute("disabled","disabled"),L.setAttribute("disabled","disabled"),M.setAttribute("disabled","disabled"),mxUtils.setOpacity(G,20),
-mxUtils.setOpacity(D,20),mxUtils.setOpacity(E,20),mxUtils.setOpacity(F,20),mxUtils.setOpacity(J,20),v.spin(k),c.getXml(function(b){if(B==c)try{q(b)}catch(fa){I.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+fa.message)}},function(b){v.stop();M.style.display="none";M.innerHTML="";I.innerHTML="";mxUtils.write(I,mxResources.get("errorLoadingFile"));mxUtils.write(n,mxResources.get("errorLoadingFile"))}),mxEvent.consume(b))});mxEvent.addListener(g,"dblclick",function(b){L.click();window.getSelection?
-window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(b)},!1);oa.appendChild(g)}return g}(e[t]);null!=N&&t==e.length-1&&(T=N)}da.appendChild(oa);g.appendChild(da)}else null==u||null==b.drive&&u.constructor==window.DriveFile||null==b.dropbox&&u.constructor==window.DropboxFile?(k.style.display="none",Q.style.display="none",mxUtils.write(g,mxResources.get("notAvailable"))):(k.style.display="none",Q.style.display="none",mxUtils.write(g,mxResources.get("noRevisions")));
-this.init=function(){null!=T&&T.click()};g=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});g.className="geBtn";Q.appendChild(M);Q.appendChild(G);Q.appendChild(D);Q.appendChild(F);Q.appendChild(E);Q.appendChild(J);b.editor.cancelFirst?(x.appendChild(g),x.appendChild(S),x.appendChild(X),x.appendChild(P),x.appendChild(L)):(x.appendChild(S),x.appendChild(X),x.appendChild(P),x.appendChild(L),x.appendChild(g));c.appendChild(x);c.appendChild(Q);c.appendChild(I);this.container=c},DraftDialog=
+document.createElement("option"),mxUtils.write(q,m[e].getAttribute("name")||mxResources.get("pageWithNumber",[e+1])),q.setAttribute("value",e),e==p&&q.setAttribute("selected","selected"),M.appendChild(q);V=function(){try{var c=parseInt(M.value);p=l=c;x(m[c])}catch(qa){M.value=l,b.handleError(qa)}}}else z(t);e=c.lastModifyingUserName;null!=e&&20<e.length&&(e=e.substring(0,20)+"...");K.innerHTML="";mxUtils.write(K,(null!=e?e+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());K.setAttribute("title",
+g.getAttribute("title"));E.removeAttribute("disabled");D.removeAttribute("disabled");F.removeAttribute("disabled");G.removeAttribute("disabled");I.removeAttribute("disabled");null!=u&&u.isRestricted()||(b.editor.graph.isEnabled()&&O.removeAttribute("disabled"),R.removeAttribute("disabled"),L.removeAttribute("disabled"),W.removeAttribute("disabled"));mxUtils.setOpacity(E,60);mxUtils.setOpacity(D,60);mxUtils.setOpacity(F,60);mxUtils.setOpacity(G,60);mxUtils.setOpacity(I,60)}else M.style.display="none",
+M.innerHTML="",K.innerHTML="",mxUtils.write(K,mxResources.get("errorLoadingFile")),mxUtils.write(n,mxResources.get("errorLoadingFile"))},g=document.createElement("tr");g.style.borderBottom="1px solid lightGray";g.style.fontSize="12px";g.style.cursor="pointer";var t=document.createElement("td");t.style.padding="6px";t.style.whiteSpace="nowrap";c==e[e.length-1]?mxUtils.write(t,mxResources.get("current")):d.toDateString()===ea?mxUtils.write(t,d.toLocaleTimeString()):mxUtils.write(t,d.toLocaleDateString()+
+" "+d.toLocaleTimeString());g.appendChild(t);g.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString()+(null!=c.fileSize?" "+b.formatFileSize(parseInt(c.fileSize)):"")+(null!=c.lastModifyingUserName?" "+c.lastModifyingUserName:""));mxEvent.addListener(g,"click",function(b){B!=c&&(v.stop(),null!=A&&(A.style.backgroundColor=""),B=c,A=g,A.style.backgroundColor=Editor.isDarkMode()?"#000000":"#ebf2f9",C=y=null,K.removeAttribute("title"),K.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+
+"..."),k.style.backgroundColor=f.defaultPageBackgroundColor,n.innerHTML="",f.getModel().clear(),O.setAttribute("disabled","disabled"),R.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),I.setAttribute("disabled","disabled"),W.setAttribute("disabled","disabled"),L.setAttribute("disabled","disabled"),M.setAttribute("disabled","disabled"),mxUtils.setOpacity(E,20),
+mxUtils.setOpacity(D,20),mxUtils.setOpacity(F,20),mxUtils.setOpacity(G,20),mxUtils.setOpacity(I,20),v.spin(k),c.getXml(function(b){if(B==c)try{q(b)}catch(fa){K.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+fa.message)}},function(b){v.stop();M.style.display="none";M.innerHTML="";K.innerHTML="";mxUtils.write(K,mxResources.get("errorLoadingFile"));mxUtils.write(n,mxResources.get("errorLoadingFile"))}),mxEvent.consume(b))});mxEvent.addListener(g,"dblclick",function(b){L.click();window.getSelection?
+window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(b)},!1);na.appendChild(g)}return g}(e[t]);null!=T&&t==e.length-1&&(X=T)}da.appendChild(na);g.appendChild(da)}else null==u||null==b.drive&&u.constructor==window.DriveFile||null==b.dropbox&&u.constructor==window.DropboxFile?(k.style.display="none",P.style.display="none",mxUtils.write(g,mxResources.get("notAvailable"))):(k.style.display="none",P.style.display="none",mxUtils.write(g,mxResources.get("noRevisions")));
+this.init=function(){null!=X&&X.click()};g=mxUtils.button(mxResources.get("close"),function(){b.hideDialog()});g.className="geBtn";P.appendChild(M);P.appendChild(E);P.appendChild(D);P.appendChild(G);P.appendChild(F);P.appendChild(I);b.editor.cancelFirst?(x.appendChild(g),x.appendChild(R),x.appendChild(W),x.appendChild(O),x.appendChild(L)):(x.appendChild(R),x.appendChild(W),x.appendChild(O),x.appendChild(L),x.appendChild(g));c.appendChild(x);c.appendChild(P);c.appendChild(K);this.container=c},DraftDialog=
function(b,e,d,c,g,k,n,f,l){var m=document.createElement("div"),p=document.createElement("div");p.style.marginTop="0px";p.style.whiteSpace="nowrap";p.style.overflow="auto";p.style.lineHeight="normal";mxUtils.write(p,e);m.appendChild(p);var q=document.createElement("select"),t=mxUtils.bind(this,function(){B=mxUtils.parseXml(l[q.value].data);y=b.editor.extractGraphModel(B.documentElement,!0);C=0;this.init()});if(null!=l){q.style.marginLeft="4px";for(e=0;e<l.length;e++){var v=document.createElement("option");
-v.setAttribute("value",e);var u=new Date(l[e].created),x=new Date(l[e].modified);mxUtils.write(v,u.toLocaleDateString()+" "+u.toLocaleTimeString()+" - "+(u.toDateString(),x.toDateString(),x.toLocaleDateString())+" "+x.toLocaleTimeString());q.appendChild(v)}p.appendChild(q);mxEvent.addListener(q,"change",t)}null==d&&(d=l[0].data);var A=document.createElement("div");A.style.position="absolute";A.style.border="1px solid lightGray";A.style.marginTop="10px";A.style.left="40px";A.style.right="40px";A.style.top=
-"46px";A.style.bottom="74px";A.style.overflow="hidden";mxEvent.disableContextMenu(A);m.appendChild(A);var z=new Graph(A);z.setEnabled(!1);z.setPanning(!0);z.panningHandler.ignoreCell=!0;z.panningHandler.useLeftButtonForPanning=!0;z.minFitScale=null;z.maxFitScale=null;z.centerZoom=!0;var B=mxUtils.parseXml(d),y=b.editor.extractGraphModel(B.documentElement,!0),C=0,G=null,D=z.getGlobalVariable;z.getGlobalVariable=function(b){return"page"==b&&null!=G&&null!=G[C]?G[C].getAttribute("name"):"pagenumber"==
-b?C+1:"pagecount"==b?null!=G?G.length:1:D.apply(this,arguments)};z.getLinkForCell=function(){return null};d=mxUtils.button("",function(){z.zoomIn()});d.className="geSprite geSprite-zoomin";d.setAttribute("title",mxResources.get("zoomIn"));d.style.outline="none";d.style.border="none";d.style.margin="2px";mxUtils.setOpacity(d,60);p=mxUtils.button("",function(){z.zoomOut()});p.className="geSprite geSprite-zoomout";p.setAttribute("title",mxResources.get("zoomOut"));p.style.outline="none";p.style.border=
-"none";p.style.margin="2px";mxUtils.setOpacity(p,60);e=mxUtils.button("",function(){z.maxFitScale=8;z.fit(8);z.center()});e.className="geSprite geSprite-fit";e.setAttribute("title",mxResources.get("fit"));e.style.outline="none";e.style.border="none";e.style.margin="2px";mxUtils.setOpacity(e,60);v=mxUtils.button("",function(){z.zoomActual();z.center()});v.className="geSprite geSprite-actualsize";v.setAttribute("title",mxResources.get("actualSize"));v.style.outline="none";v.style.border="none";v.style.margin=
-"2px";mxUtils.setOpacity(v,60);n=mxUtils.button(n||mxResources.get("discard"),function(){g.apply(this,[q.value,mxUtils.bind(this,function(){null!=q.parentNode&&(q.options[q.selectedIndex].parentNode.removeChild(q.options[q.selectedIndex]),0<q.options.length?(q.value=q.options[0].value,t()):b.hideDialog(!0))})])});n.className="geBtn";var E=document.createElement("select");E.style.maxWidth="80px";E.style.position="relative";E.style.top="-2px";E.style.verticalAlign="bottom";E.style.marginRight="6px";
-E.style.display="none";k=mxUtils.button(k||mxResources.get("edit"),function(){c.apply(this,[q.value])});k.className="geBtn gePrimaryBtn";u=document.createElement("div");u.style.position="absolute";u.style.bottom="30px";u.style.right="40px";u.style.textAlign="right";x=document.createElement("div");x.className="geToolbarContainer";x.style.cssText="box-shadow:none !important;background-color:transparent;padding:2px;border-style:none !important;bottom:30px;";this.init=function(){function b(b){if(null!=
-b){var c=b.getAttribute("background");if(null==c||""==c||c==mxConstants.NONE)c=Editor.isDarkMode()?"transparent":"#ffffff";A.style.backgroundColor=c;(new mxCodec(b.ownerDocument)).decode(b,z.getModel());z.maxFitScale=1;z.fit(8);z.center()}return b}function c(c){null!=c&&(c=b(Editor.parseDiagramNode(c)));return c}mxEvent.addListener(E,"change",function(b){C=parseInt(E.value);c(G[C]);mxEvent.consume(b)});if("mxfile"==y.nodeName){var f=y.getElementsByTagName("diagram");G=[];for(var d=0;d<f.length;d++)G.push(f[d]);
-0<G.length&&c(G[C]);E.innerHTML="";if(1<G.length)for(E.style.display="",d=0;d<G.length;d++)f=document.createElement("option"),mxUtils.write(f,G[d].getAttribute("name")||mxResources.get("pageWithNumber",[d+1])),f.setAttribute("value",d),d==C&&f.setAttribute("selected","selected"),E.appendChild(f);else E.style.display="none"}else b(y)};x.appendChild(E);x.appendChild(d);x.appendChild(p);x.appendChild(v);x.appendChild(e);d=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(!0)});d.className=
+v.setAttribute("value",e);var u=new Date(l[e].created),x=new Date(l[e].modified);mxUtils.write(v,u.toLocaleDateString()+" "+u.toLocaleTimeString()+" - "+(u.toDateString(),x.toDateString(),x.toLocaleDateString())+" "+x.toLocaleTimeString());q.appendChild(v)}p.appendChild(q);mxEvent.addListener(q,"change",t)}null==d&&(d=l[0].data);var z=document.createElement("div");z.style.position="absolute";z.style.border="1px solid lightGray";z.style.marginTop="10px";z.style.left="40px";z.style.right="40px";z.style.top=
+"46px";z.style.bottom="74px";z.style.overflow="hidden";mxEvent.disableContextMenu(z);m.appendChild(z);var A=new Graph(z);A.setEnabled(!1);A.setPanning(!0);A.panningHandler.ignoreCell=!0;A.panningHandler.useLeftButtonForPanning=!0;A.minFitScale=null;A.maxFitScale=null;A.centerZoom=!0;var B=mxUtils.parseXml(d),y=b.editor.extractGraphModel(B.documentElement,!0),C=0,E=null,D=A.getGlobalVariable;A.getGlobalVariable=function(b){return"page"==b&&null!=E&&null!=E[C]?E[C].getAttribute("name"):"pagenumber"==
+b?C+1:"pagecount"==b?null!=E?E.length:1:D.apply(this,arguments)};A.getLinkForCell=function(){return null};d=mxUtils.button("",function(){A.zoomIn()});d.className="geSprite geSprite-zoomin";d.setAttribute("title",mxResources.get("zoomIn"));d.style.outline="none";d.style.border="none";d.style.margin="2px";mxUtils.setOpacity(d,60);p=mxUtils.button("",function(){A.zoomOut()});p.className="geSprite geSprite-zoomout";p.setAttribute("title",mxResources.get("zoomOut"));p.style.outline="none";p.style.border=
+"none";p.style.margin="2px";mxUtils.setOpacity(p,60);e=mxUtils.button("",function(){A.maxFitScale=8;A.fit(8);A.center()});e.className="geSprite geSprite-fit";e.setAttribute("title",mxResources.get("fit"));e.style.outline="none";e.style.border="none";e.style.margin="2px";mxUtils.setOpacity(e,60);v=mxUtils.button("",function(){A.zoomActual();A.center()});v.className="geSprite geSprite-actualsize";v.setAttribute("title",mxResources.get("actualSize"));v.style.outline="none";v.style.border="none";v.style.margin=
+"2px";mxUtils.setOpacity(v,60);n=mxUtils.button(n||mxResources.get("discard"),function(){g.apply(this,[q.value,mxUtils.bind(this,function(){null!=q.parentNode&&(q.options[q.selectedIndex].parentNode.removeChild(q.options[q.selectedIndex]),0<q.options.length?(q.value=q.options[0].value,t()):b.hideDialog(!0))})])});n.className="geBtn";var F=document.createElement("select");F.style.maxWidth="80px";F.style.position="relative";F.style.top="-2px";F.style.verticalAlign="bottom";F.style.marginRight="6px";
+F.style.display="none";k=mxUtils.button(k||mxResources.get("edit"),function(){c.apply(this,[q.value])});k.className="geBtn gePrimaryBtn";u=document.createElement("div");u.style.position="absolute";u.style.bottom="30px";u.style.right="40px";u.style.textAlign="right";x=document.createElement("div");x.className="geToolbarContainer";x.style.cssText="box-shadow:none !important;background-color:transparent;padding:2px;border-style:none !important;bottom:30px;";this.init=function(){function b(b){if(null!=
+b){var c=b.getAttribute("background");if(null==c||""==c||c==mxConstants.NONE)c=Editor.isDarkMode()?"transparent":"#ffffff";z.style.backgroundColor=c;(new mxCodec(b.ownerDocument)).decode(b,A.getModel());A.maxFitScale=1;A.fit(8);A.center()}return b}function c(c){null!=c&&(c=b(Editor.parseDiagramNode(c)));return c}mxEvent.addListener(F,"change",function(b){C=parseInt(F.value);c(E[C]);mxEvent.consume(b)});if("mxfile"==y.nodeName){var f=y.getElementsByTagName("diagram");E=[];for(var d=0;d<f.length;d++)E.push(f[d]);
+0<E.length&&c(E[C]);F.innerHTML="";if(1<E.length)for(F.style.display="",d=0;d<E.length;d++)f=document.createElement("option"),mxUtils.write(f,E[d].getAttribute("name")||mxResources.get("pageWithNumber",[d+1])),f.setAttribute("value",d),d==C&&f.setAttribute("selected","selected"),F.appendChild(f);else F.style.display="none"}else b(y)};x.appendChild(F);x.appendChild(d);x.appendChild(p);x.appendChild(v);x.appendChild(e);d=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(!0)});d.className=
"geBtn";f=null!=f?mxUtils.button(mxResources.get("ignore"),f):null;null!=f&&(f.className="geBtn");b.editor.cancelFirst?(u.appendChild(d),null!=f&&u.appendChild(f),u.appendChild(n),u.appendChild(k)):(u.appendChild(k),u.appendChild(n),null!=f&&u.appendChild(f),u.appendChild(d));m.appendChild(u);m.appendChild(x);this.container=m},FindWindow=function(b,e,d,c,g,k){function n(b,c,f,d){if("object"===typeof c.value&&null!=c.value.attributes){c=c.value.attributes;for(var e=0;e<c.length;e++)if("label"!=c[e].nodeName){var l=
-mxUtils.trim(c[e].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==b&&(d&&0<=l.indexOf(f)||!d&&l.substring(0,f.length)===f)||null!=b&&b.test(l))return!0}}return!1}function f(){v&&G.value?(S.removeAttribute("disabled"),P.removeAttribute("disabled")):(S.setAttribute("disabled","disabled"),P.setAttribute("disabled","disabled"));G.value&&C.value?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled")}function l(c,d,e){H.innerHTML="";var m=p.model.getDescendants(p.model.getRoot()),
-g=C.value.toLowerCase(),L=D.checked?new RegExp(g):null,y=null;x=null;q!=g&&(q=g,t=null,u=!1);var Q=null==t;if(0<g.length){if(u){u=!1;for(var z,I=0;I<b.pages.length;I++)if(b.currentPage==b.pages[I]){z=I;break}c=(z+1)%b.pages.length;t=null;do u=!1,m=b.pages[c],p=b.createTemporaryGraph(p.getStylesheet()),b.updatePageRoot(m),p.model.setRoot(m.root),c=(c+1)%b.pages.length;while(!l(!0,d,e)&&c!=z);t&&(t=null,e?b.editor.graph.model.execute(new SelectPage(b,m)):b.selectPage(m));u=!1;p=b.editor.graph;return l(!0,
-d,e)}for(I=0;I<m.length;I++){z=p.view.getState(m[I]);d&&null!=L&&(Q=Q||z==t);if(null!=z&&null!=z.cell.value&&(Q||null==y)&&(p.model.isVertex(z.cell)||p.model.isEdge(z.cell))){null!=z.style&&"1"==z.style.html?(F.innerHTML=p.sanitizeHtml(p.getLabel(z.cell)),label=mxUtils.extractTextWithWhitespace([F])):label=p.getLabel(z.cell);label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();var J=0;d&&k&&null!=L&&z==t&&(label=label.substr(A),J=A);var K=""==G.value,B=K;if(null==L&&(B&&
-0<=label.indexOf(g)||!B&&label.substring(0,g.length)===g||K&&n(L,z.cell,g,B))||null!=L&&(L.test(label)||K&&n(L,z.cell,g,B)))if(k&&(null!=L?(K=label.match(L),x=K[0].toLowerCase(),A=J+K.index+x.length):(x=g,A=x.length)),Q){y=z;break}else null==y&&(y=z)}Q=Q||z==t}}if(null!=y){if(I==m.length&&E.checked)return t=null,u=!0,l(!0,d,e);t=y;p.scrollCellToVisible(t.cell);p.isEnabled()&&!p.isCellLocked(t.cell)?e||p.getSelectionCell()==t.cell&&1==p.getSelectionCount()||p.setSelectionCell(t.cell):p.highlightCell(t.cell)}else{if(!c&&
-E.checked)return u=!0,l(!0,d,e);p.isEnabled()&&!e&&p.clearSelection()}v=null!=y;k&&!c&&f();return 0==g.length||null!=y}var m=b.actions.get("findReplace"),p=b.editor.graph,q=null,t=null,v=!1,u=!1,x=null,A=0,z=1,B=document.createElement("div");B.style.userSelect="none";B.style.overflow="hidden";B.style.padding="10px";B.style.height="100%";var y=k?"260px":"200px",C=document.createElement("input");C.setAttribute("placeholder",mxResources.get("find"));C.setAttribute("type","text");C.style.marginTop="4px";
-C.style.marginBottom="6px";C.style.width=y;C.style.fontSize="12px";C.style.borderRadius="4px";C.style.padding="6px";B.appendChild(C);mxUtils.br(B);var G;k&&(G=document.createElement("input"),G.setAttribute("placeholder",mxResources.get("replaceWith")),G.setAttribute("type","text"),G.style.marginTop="4px",G.style.marginBottom="6px",G.style.width=y,G.style.fontSize="12px",G.style.borderRadius="4px",G.style.padding="6px",B.appendChild(G),mxUtils.br(B),mxEvent.addListener(G,"input",f));var D=document.createElement("input");
-D.setAttribute("id","geFindWinRegExChck");D.setAttribute("type","checkbox");D.style.marginRight="4px";B.appendChild(D);y=document.createElement("label");y.setAttribute("for","geFindWinRegExChck");B.appendChild(y);mxUtils.write(y,mxResources.get("regularExpression"));B.appendChild(y);y=b.menus.createHelpLink("https://www.diagrams.net/doc/faq/find-shapes");y.style.position="relative";y.style.marginLeft="6px";y.style.top="-1px";B.appendChild(y);mxUtils.br(B);var E=document.createElement("input");E.setAttribute("id",
-"geFindWinAllPagesChck");E.setAttribute("type","checkbox");E.style.marginRight="4px";B.appendChild(E);y=document.createElement("label");y.setAttribute("for","geFindWinAllPagesChck");B.appendChild(y);mxUtils.write(y,mxResources.get("allPages"));B.appendChild(y);var F=document.createElement("div");mxUtils.br(B);y=document.createElement("div");y.style.left="0px";y.style.right="0px";y.style.marginTop="6px";y.style.padding="0 6px 0 6px";y.style.textAlign="center";B.appendChild(y);var J=mxUtils.button(mxResources.get("reset"),
-function(){H.innerHTML="";C.value="";C.style.backgroundColor="";k&&(G.value="",f());q=t=null;u=!1;C.focus()});J.setAttribute("title",mxResources.get("reset"));J.style["float"]="none";J.style.width="120px";J.style.marginTop="6px";J.style.marginLeft="8px";J.style.overflow="hidden";J.style.textOverflow="ellipsis";J.className="geBtn";k||y.appendChild(J);var K=mxUtils.button(mxResources.get("find"),function(){try{C.style.backgroundColor=l()?"":Editor.isDarkMode()?"#ff0000":"#ffcfcf"}catch(X){b.handleError(X)}});
-K.setAttribute("title",mxResources.get("find")+" (Enter)");K.style["float"]="none";K.style.width="120px";K.style.marginTop="6px";K.style.marginLeft="8px";K.style.overflow="hidden";K.style.textOverflow="ellipsis";K.className="geBtn gePrimaryBtn";y.appendChild(K);var H=document.createElement("div");H.style.marginTop="10px";if(k){var I=function(b,c,f,d,e){if(null==e||"1"!=e.html)return d=b.toLowerCase().indexOf(c,d),0>d?b:b.substr(0,d)+f+b.substr(d+c.length);var l=b;c=mxUtils.htmlEntities(c);e=[];var m=
--1;for(b=b.replace(/<br>/ig,"\n");-1<(m=b.indexOf("<",m+1));)e.push(m);m=b.match(/<[^>]*>/g);b=b.replace(/<[^>]*>/g,"");d=b.toLowerCase().indexOf(c,d);if(0>d)return l;l=d+c.length;f=mxUtils.htmlEntities(f);b=b.substr(0,d)+f+b.substr(l);for(var g=0,p=0;p<e.length;p++){if(e[p]-g<d)b=b.substr(0,e[p])+m[p]+b.substr(e[p]);else{var k=e[p]-g<l?d+g:e[p]+(f.length-c.length);b=b.substr(0,k)+m[p]+b.substr(k)}g+=m[p].length}return b.replace(/\n/g,"<br>")},S=mxUtils.button(mxResources.get("replFind"),function(){try{if(null!=
-x&&null!=t&&G.value){var c=t.cell,f=p.getLabel(c);p.isCellEditable(c)&&p.model.setValue(c,I(f,x,G.value,A-x.length,p.getCurrentCellStyle(c)));C.style.backgroundColor=l(!1,!0)?"":Editor.isDarkMode()?"#ff0000":"#ffcfcf"}}catch(Q){b.handleError(Q)}});S.setAttribute("title",mxResources.get("replFind"));S.style["float"]="none";S.style.width="120px";S.style.marginTop="6px";S.style.marginLeft="8px";S.style.overflow="hidden";S.style.textOverflow="ellipsis";S.className="geBtn gePrimaryBtn";S.setAttribute("disabled",
-"disabled");y.appendChild(S);mxUtils.br(y);var P=mxUtils.button(mxResources.get("replace"),function(){try{if(null!=x&&null!=t&&G.value){var c=t.cell,f=p.getLabel(c);p.model.setValue(c,I(f,x,G.value,A-x.length,p.getCurrentCellStyle(c)));S.setAttribute("disabled","disabled");P.setAttribute("disabled","disabled")}}catch(Q){b.handleError(Q)}});P.setAttribute("title",mxResources.get("replace"));P.style["float"]="none";P.style.width="120px";P.style.marginTop="6px";P.style.marginLeft="8px";P.style.overflow=
-"hidden";P.style.textOverflow="ellipsis";P.className="geBtn gePrimaryBtn";P.setAttribute("disabled","disabled");y.appendChild(P);var M=mxUtils.button(mxResources.get("replaceAll"),function(){H.innerHTML="";if(G.value){var c=b.currentPage,f=b.editor.graph.getSelectionCells();b.editor.graph.rendering=!1;p.getModel().beginUpdate();try{for(var d=0,e={};l(!1,!0,!0)&&100>d;){var m=t.cell,g=p.getLabel(m),k=e[m.id];if(k&&k.replAllMrk==z&&k.replAllPos>=A)break;e[m.id]={replAllMrk:z,replAllPos:A};p.isCellEditable(m)&&
-(p.model.setValue(m,I(g,x,G.value,A-x.length,p.getCurrentCellStyle(m))),d++)}c!=b.currentPage&&b.editor.graph.model.execute(new SelectPage(b,c));mxUtils.write(H,mxResources.get("matchesRepl",[d]))}catch(N){b.handleError(N)}finally{p.getModel().endUpdate(),b.editor.graph.setSelectionCells(f),b.editor.graph.rendering=!0}z++}});M.setAttribute("title",mxResources.get("replaceAll"));M.style["float"]="none";M.style.width="120px";M.style.marginTop="6px";M.style.marginLeft="8px";M.style.overflow="hidden";
-M.style.textOverflow="ellipsis";M.className="geBtn gePrimaryBtn";M.setAttribute("disabled","disabled");y.appendChild(M);mxUtils.br(y);y.appendChild(J);J=mxUtils.button(mxResources.get("close"),mxUtils.bind(this,function(){this.window.setVisible(!1)}));J.setAttribute("title",mxResources.get("close"));J.style["float"]="none";J.style.width="120px";J.style.marginTop="6px";J.style.marginLeft="8px";J.style.overflow="hidden";J.style.textOverflow="ellipsis";J.className="geBtn";y.appendChild(J);mxUtils.br(y);
-y.appendChild(H)}else J.style.width="90px",K.style.width="90px";mxEvent.addListener(C,"keyup",function(b){if(91==b.keyCode||93==b.keyCode||17==b.keyCode)mxEvent.consume(b);else if(27==b.keyCode)m.funct();else if(q!=C.value.toLowerCase()||13==b.keyCode)try{C.style.backgroundColor=l()?"":Editor.isDarkMode()?"#ff0000":"#ffcfcf"}catch(L){C.style.backgroundColor=Editor.isDarkMode()?"#ff0000":"#ffcfcf"}});mxEvent.addListener(B,"keydown",function(c){70==c.keyCode&&b.keyHandler.isControlDown(c)&&!mxEvent.isShiftDown(c)&&
+mxUtils.trim(c[e].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==b&&(d&&0<=l.indexOf(f)||!d&&l.substring(0,f.length)===f)||null!=b&&b.test(l))return!0}}return!1}function f(){v&&E.value?(R.removeAttribute("disabled"),O.removeAttribute("disabled")):(R.setAttribute("disabled","disabled"),O.setAttribute("disabled","disabled"));E.value&&C.value?M.removeAttribute("disabled"):M.setAttribute("disabled","disabled")}function l(c,d,e){H.innerHTML="";var m=p.model.getDescendants(p.model.getRoot()),
+g=C.value.toLowerCase(),L=D.checked?new RegExp(g):null,y=null;x=null;q!=g&&(q=g,t=null,u=!1);var P=null==t;if(0<g.length){if(u){u=!1;for(var K,A=0;A<b.pages.length;A++)if(b.currentPage==b.pages[A]){K=A;break}c=(K+1)%b.pages.length;t=null;do u=!1,m=b.pages[c],p=b.createTemporaryGraph(p.getStylesheet()),b.updatePageRoot(m),p.model.setRoot(m.root),c=(c+1)%b.pages.length;while(!l(!0,d,e)&&c!=K);t&&(t=null,e?b.editor.graph.model.execute(new SelectPage(b,m)):b.selectPage(m));u=!1;p=b.editor.graph;return l(!0,
+d,e)}for(A=0;A<m.length;A++){K=p.view.getState(m[A]);d&&null!=L&&(P=P||K==t);if(null!=K&&null!=K.cell.value&&(P||null==y)&&(p.model.isVertex(K.cell)||p.model.isEdge(K.cell))){null!=K.style&&"1"==K.style.html?(G.innerHTML=p.sanitizeHtml(p.getLabel(K.cell)),label=mxUtils.extractTextWithWhitespace([G])):label=p.getLabel(K.cell);label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();var I=0;d&&k&&null!=L&&K==t&&(label=label.substr(z),I=z);var J=""==E.value,M=J;if(null==L&&(M&&
+0<=label.indexOf(g)||!M&&label.substring(0,g.length)===g||J&&n(L,K.cell,g,M))||null!=L&&(L.test(label)||J&&n(L,K.cell,g,M)))if(k&&(null!=L?(J=label.match(L),x=J[0].toLowerCase(),z=I+J.index+x.length):(x=g,z=x.length)),P){y=K;break}else null==y&&(y=K)}P=P||K==t}}if(null!=y){if(A==m.length&&F.checked)return t=null,u=!0,l(!0,d,e);t=y;p.scrollCellToVisible(t.cell);p.isEnabled()&&!p.isCellLocked(t.cell)?e||p.getSelectionCell()==t.cell&&1==p.getSelectionCount()||p.setSelectionCell(t.cell):p.highlightCell(t.cell)}else{if(!c&&
+F.checked)return u=!0,l(!0,d,e);p.isEnabled()&&!e&&p.clearSelection()}v=null!=y;k&&!c&&f();return 0==g.length||null!=y}var m=b.actions.get("findReplace"),p=b.editor.graph,q=null,t=null,v=!1,u=!1,x=null,z=0,A=1,B=document.createElement("div");B.style.userSelect="none";B.style.overflow="hidden";B.style.padding="10px";B.style.height="100%";var y=k?"260px":"200px",C=document.createElement("input");C.setAttribute("placeholder",mxResources.get("find"));C.setAttribute("type","text");C.style.marginTop="4px";
+C.style.marginBottom="6px";C.style.width=y;C.style.fontSize="12px";C.style.borderRadius="4px";C.style.padding="6px";B.appendChild(C);mxUtils.br(B);var E;k&&(E=document.createElement("input"),E.setAttribute("placeholder",mxResources.get("replaceWith")),E.setAttribute("type","text"),E.style.marginTop="4px",E.style.marginBottom="6px",E.style.width=y,E.style.fontSize="12px",E.style.borderRadius="4px",E.style.padding="6px",B.appendChild(E),mxUtils.br(B),mxEvent.addListener(E,"input",f));var D=document.createElement("input");
+D.setAttribute("id","geFindWinRegExChck");D.setAttribute("type","checkbox");D.style.marginRight="4px";B.appendChild(D);y=document.createElement("label");y.setAttribute("for","geFindWinRegExChck");B.appendChild(y);mxUtils.write(y,mxResources.get("regularExpression"));B.appendChild(y);y=b.menus.createHelpLink("https://www.diagrams.net/doc/faq/find-shapes");y.style.position="relative";y.style.marginLeft="6px";y.style.top="-1px";B.appendChild(y);mxUtils.br(B);var F=document.createElement("input");F.setAttribute("id",
+"geFindWinAllPagesChck");F.setAttribute("type","checkbox");F.style.marginRight="4px";B.appendChild(F);y=document.createElement("label");y.setAttribute("for","geFindWinAllPagesChck");B.appendChild(y);mxUtils.write(y,mxResources.get("allPages"));B.appendChild(y);var G=document.createElement("div");mxUtils.br(B);y=document.createElement("div");y.style.left="0px";y.style.right="0px";y.style.marginTop="6px";y.style.padding="0 6px 0 6px";y.style.textAlign="center";B.appendChild(y);var I=mxUtils.button(mxResources.get("reset"),
+function(){H.innerHTML="";C.value="";C.style.backgroundColor="";k&&(E.value="",f());q=t=null;u=!1;C.focus()});I.setAttribute("title",mxResources.get("reset"));I.style["float"]="none";I.style.width="120px";I.style.marginTop="6px";I.style.marginLeft="8px";I.style.overflow="hidden";I.style.textOverflow="ellipsis";I.className="geBtn";k||y.appendChild(I);var J=mxUtils.button(mxResources.get("find"),function(){try{C.style.backgroundColor=l()?"":Editor.isDarkMode()?"#ff0000":"#ffcfcf"}catch(W){b.handleError(W)}});
+J.setAttribute("title",mxResources.get("find")+" (Enter)");J.style["float"]="none";J.style.width="120px";J.style.marginTop="6px";J.style.marginLeft="8px";J.style.overflow="hidden";J.style.textOverflow="ellipsis";J.className="geBtn gePrimaryBtn";y.appendChild(J);var H=document.createElement("div");H.style.marginTop="10px";if(k){var K=function(b,c,f,d,e){if(null==e||"1"!=e.html)return d=b.toLowerCase().indexOf(c,d),0>d?b:b.substr(0,d)+f+b.substr(d+c.length);var l=b;c=mxUtils.htmlEntities(c);e=[];var m=
+-1;for(b=b.replace(/<br>/ig,"\n");-1<(m=b.indexOf("<",m+1));)e.push(m);m=b.match(/<[^>]*>/g);b=b.replace(/<[^>]*>/g,"");d=b.toLowerCase().indexOf(c,d);if(0>d)return l;l=d+c.length;f=mxUtils.htmlEntities(f);b=b.substr(0,d)+f+b.substr(l);for(var g=0,p=0;p<e.length;p++){if(e[p]-g<d)b=b.substr(0,e[p])+m[p]+b.substr(e[p]);else{var k=e[p]-g<l?d+g:e[p]+(f.length-c.length);b=b.substr(0,k)+m[p]+b.substr(k)}g+=m[p].length}return b.replace(/\n/g,"<br>")},R=mxUtils.button(mxResources.get("replFind"),function(){try{if(null!=
+x&&null!=t&&E.value){var c=t.cell,f=p.getLabel(c);p.isCellEditable(c)&&p.model.setValue(c,K(f,x,E.value,z-x.length,p.getCurrentCellStyle(c)));C.style.backgroundColor=l(!1,!0)?"":Editor.isDarkMode()?"#ff0000":"#ffcfcf"}}catch(P){b.handleError(P)}});R.setAttribute("title",mxResources.get("replFind"));R.style["float"]="none";R.style.width="120px";R.style.marginTop="6px";R.style.marginLeft="8px";R.style.overflow="hidden";R.style.textOverflow="ellipsis";R.className="geBtn gePrimaryBtn";R.setAttribute("disabled",
+"disabled");y.appendChild(R);mxUtils.br(y);var O=mxUtils.button(mxResources.get("replace"),function(){try{if(null!=x&&null!=t&&E.value){var c=t.cell,f=p.getLabel(c);p.model.setValue(c,K(f,x,E.value,z-x.length,p.getCurrentCellStyle(c)));R.setAttribute("disabled","disabled");O.setAttribute("disabled","disabled")}}catch(P){b.handleError(P)}});O.setAttribute("title",mxResources.get("replace"));O.style["float"]="none";O.style.width="120px";O.style.marginTop="6px";O.style.marginLeft="8px";O.style.overflow=
+"hidden";O.style.textOverflow="ellipsis";O.className="geBtn gePrimaryBtn";O.setAttribute("disabled","disabled");y.appendChild(O);var M=mxUtils.button(mxResources.get("replaceAll"),function(){H.innerHTML="";if(E.value){var c=b.currentPage,f=b.editor.graph.getSelectionCells();b.editor.graph.rendering=!1;p.getModel().beginUpdate();try{for(var d=0,e={};l(!1,!0,!0)&&100>d;){var m=t.cell,g=p.getLabel(m),k=e[m.id];if(k&&k.replAllMrk==A&&k.replAllPos>=z)break;e[m.id]={replAllMrk:A,replAllPos:z};p.isCellEditable(m)&&
+(p.model.setValue(m,K(g,x,E.value,z-x.length,p.getCurrentCellStyle(m))),d++)}c!=b.currentPage&&b.editor.graph.model.execute(new SelectPage(b,c));mxUtils.write(H,mxResources.get("matchesRepl",[d]))}catch(T){b.handleError(T)}finally{p.getModel().endUpdate(),b.editor.graph.setSelectionCells(f),b.editor.graph.rendering=!0}A++}});M.setAttribute("title",mxResources.get("replaceAll"));M.style["float"]="none";M.style.width="120px";M.style.marginTop="6px";M.style.marginLeft="8px";M.style.overflow="hidden";
+M.style.textOverflow="ellipsis";M.className="geBtn gePrimaryBtn";M.setAttribute("disabled","disabled");y.appendChild(M);mxUtils.br(y);y.appendChild(I);I=mxUtils.button(mxResources.get("close"),mxUtils.bind(this,function(){this.window.setVisible(!1)}));I.setAttribute("title",mxResources.get("close"));I.style["float"]="none";I.style.width="120px";I.style.marginTop="6px";I.style.marginLeft="8px";I.style.overflow="hidden";I.style.textOverflow="ellipsis";I.className="geBtn";y.appendChild(I);mxUtils.br(y);
+y.appendChild(H)}else I.style.width="90px",J.style.width="90px";mxEvent.addListener(C,"keyup",function(b){if(91==b.keyCode||93==b.keyCode||17==b.keyCode)mxEvent.consume(b);else if(27==b.keyCode)m.funct();else if(q!=C.value.toLowerCase()||13==b.keyCode)try{C.style.backgroundColor=l()?"":Editor.isDarkMode()?"#ff0000":"#ffcfcf"}catch(L){C.style.backgroundColor=Editor.isDarkMode()?"#ff0000":"#ffcfcf"}});mxEvent.addListener(B,"keydown",function(c){70==c.keyCode&&b.keyHandler.isControlDown(c)&&!mxEvent.isShiftDown(c)&&
(m.funct(),mxEvent.consume(c))});this.window=new mxWindow(mxResources.get("find")+(k?"/"+mxResources.get("replace"):""),B,e,d,c,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.fit();this.window.isVisible()?(C.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?C.select():document.execCommand("selectAll",!1,null),null!=b.pages&&1<b.pages.length?
-E.removeAttribute("disabled"):(E.checked=!1,E.setAttribute("disabled","disabled"))):p.container.focus()}));this.window.setLocation=function(b,c){var f=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));c=Math.max(0,Math.min(c,f-this.table.clientHeight-("1"==urlParams.sketch?3:48)));this.getX()==b&&this.getY()==c||mxWindow.prototype.setLocation.apply(this,
-arguments)};var W=mxUtils.bind(this,function(){var b=this.window.getX(),c=this.window.getY();this.window.setLocation(b,c)});mxEvent.addListener(window,"resize",W);this.destroy=function(){mxEvent.removeListener(window,"resize",W);this.window.destroy()}},FreehandWindow=function(b,e,d,c,g){var k=b.editor.graph;b=document.createElement("div");b.style.textAlign="center";b.style.userSelect="none";b.style.overflow="hidden";b.style.height="100%";var n=mxUtils.button(mxResources.get("startDrawing"),function(){k.freehand.isDrawing()?
+F.removeAttribute("disabled"):(F.checked=!1,F.setAttribute("disabled","disabled"))):p.container.focus()}));this.window.setLocation=function(b,c){var f=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));c=Math.max(0,Math.min(c,f-this.table.clientHeight-("1"==urlParams.sketch?3:48)));this.getX()==b&&this.getY()==c||mxWindow.prototype.setLocation.apply(this,
+arguments)};var V=mxUtils.bind(this,function(){var b=this.window.getX(),c=this.window.getY();this.window.setLocation(b,c)});mxEvent.addListener(window,"resize",V);this.destroy=function(){mxEvent.removeListener(window,"resize",V);this.window.destroy()}},FreehandWindow=function(b,e,d,c,g){var k=b.editor.graph;b=document.createElement("div");b.style.textAlign="center";b.style.userSelect="none";b.style.overflow="hidden";b.style.height="100%";var n=mxUtils.button(mxResources.get("startDrawing"),function(){k.freehand.isDrawing()?
k.freehand.stopDrawing():k.freehand.startDrawing()});n.setAttribute("title",mxResources.get("startDrawing"));n.style.marginTop="10px";n.style.width="90%";n.style.boxSizing="border-box";n.style.overflow="hidden";n.style.textOverflow="ellipsis";n.style.textAlign="center";n.className="geBtn gePrimaryBtn";b.appendChild(n);this.window=new mxWindow(mxResources.get("freehand"),b,e,d,c,g,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);
k.addListener("freehandStateChanged",mxUtils.bind(this,function(){n.innerHTML="";mxUtils.write(n,mxResources.get(k.freehand.isDrawing()?"stopDrawing":"startDrawing"));n.setAttribute("title",mxResources.get(k.freehand.isDrawing()?"stopDrawing":"startDrawing"));n.className="geBtn"+(k.freehand.isDrawing()?"":" gePrimaryBtn")}));this.window.addListener("show",mxUtils.bind(this,function(){this.window.fit()}));this.window.addListener("hide",mxUtils.bind(this,function(){k.freehand.isDrawing()&&k.freehand.stopDrawing()}));
this.window.setLocation=function(b,c){var f=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));c=Math.max(0,Math.min(c,f-this.table.clientHeight-("1"==urlParams.sketch?3:48)));this.getX()==b&&this.getY()==c||mxWindow.prototype.setLocation.apply(this,arguments)};var f=mxUtils.bind(this,function(){var b=this.window.getX(),c=this.window.getY();
@@ -10383,59 +10383,59 @@ q.style.padding="0px";q.style.color="";q.innerHTML="";if(null!=c.desc){var f=doc
null!=t&&(t.style.backgroundColor="");t=d;t.style.backgroundColor=Editor.isDarkMode()?"#000000":"#ebf2f9";null!=b&&mxEvent.consume(b)}};mxEvent.addListener(d,"click",m);mxEvent.addListener(d,"dblclick",function(b){l.checked=!l.checked;mxEvent.consume(b)});v.push(function(){return l.checked?c.id:null});0==f&&0==e&&m()})(c.entries[e])})(c[f])});l=document.createElement("div");l.className="geDialogTitle";mxUtils.write(l,mxResources.get("shapes"));l.style.position="absolute";l.style.top="0px";l.style.left=
"0px";l.style.lineHeight="40px";l.style.height="40px";l.style.right="0px";var p=document.createElement("div"),q=document.createElement("div");p.style.position="absolute";p.style.top="40px";p.style.left="0px";p.style.width="202px";p.style.bottom="60px";p.style.overflow="auto";q.style.position="absolute";q.style.left="202px";q.style.right="0px";q.style.top="40px";q.style.bottom="60px";q.style.overflow="auto";q.style.borderLeft="1px solid rgb(211, 211, 211)";q.style.textAlign="center";var t=null,v=[],
u=document.createElement("div");u.style.position="relative";u.style.left="0px";u.style.right="0px";k(d);c.style.padding="30px";c.appendChild(l);c.appendChild(p);c.appendChild(q);d=document.createElement("div");d.className="geDialogFooter";d.style.position="absolute";d.style.paddingRight="16px";d.style.color="gray";d.style.left="0px";d.style.right="0px";d.style.bottom="0px";d.style.height="60px";d.style.lineHeight="52px";var x=document.createElement("input");x.setAttribute("type","checkbox");x.style.position=
-"relative";x.style.top="1px";x.checked=b.sidebar.sidebarTitles;x.defaultChecked=x.checked;d.appendChild(x);k=document.createElement("span");mxUtils.write(k," "+mxResources.get("labels"));k.style.paddingRight="20px";d.appendChild(k);mxEvent.addListener(k,"click",function(b){x.checked=!x.checked;mxEvent.consume(b)});var A=document.createElement("input");A.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)k=document.createElement("span"),k.style.paddingRight="20px",k.appendChild(A),
-mxUtils.write(k," "+mxResources.get("rememberThisSetting")),A.style.position="relative",A.style.top="1px",A.checked=!0,A.defaultChecked=!0,mxEvent.addListener(k,"click",function(b){mxEvent.getSource(b)!=A&&(A.checked=!A.checked,mxEvent.consume(b))}),d.appendChild(k);k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});k.className="geBtn";l=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();for(var c=[],f=0;f<v.length;f++){var d=v[f].apply(this,arguments);null!=d&&
-c.push(d)}"1"==urlParams.sketch&&b.isSettingsEnabled()&&(f=mxUtils.indexOf(c,".scratchpad"),null!=b.scratchpad!=(0<=f&&0<c.splice(f,1).length)&&b.toggleScratchpad(),f=mxUtils.indexOf(c,"search"),mxSettings.settings.search=0<=f&&0<c.splice(f,1).length,b.sidebar.showPalette("search",mxSettings.settings.search),A.checked&&mxSettings.save());b.sidebar.showEntries(c.join(";"),A.checked,!0);b.setSidebarTitles(x.checked,A.checked)});l.className="geBtn gePrimaryBtn"}else{var z=document.createElement("table"),
-k=document.createElement("tbody");c.style.height="100%";c.style.overflow="auto";l=document.createElement("tr");z.style.width="100%";e=document.createElement("td");var g=document.createElement("td"),n=document.createElement("td"),B=mxUtils.bind(this,function(c,f,d){var e=document.createElement("input");e.type="checkbox";z.appendChild(e);e.checked=b.sidebar.isEntryVisible(d);var l=document.createElement("span");mxUtils.write(l,f);f=document.createElement("div");f.style.display="block";f.appendChild(e);
-f.appendChild(l);mxEvent.addListener(l,"click",function(b){e.checked=!e.checked;mxEvent.consume(b)});c.appendChild(f);return function(){return e.checked?d:null}});l.appendChild(e);l.appendChild(g);l.appendChild(n);k.appendChild(l);z.appendChild(k);for(var v=[],y=0,k=0;k<d.length;k++)for(l=0;l<d[k].entries.length;l++)y++;for(var C=[e,g,n],G=0,k=0;k<d.length;k++)(function(b){for(var c=0;c<b.entries.length;c++){var f=b.entries[c];v.push(B(C[Math.floor(G/(y/3))],f.title,f.id));G++}})(d[k]);c.appendChild(z);
-d=document.createElement("div");d.style.marginTop="18px";d.style.textAlign="center";A=document.createElement("input");isLocalStorage&&(A.setAttribute("type","checkbox"),A.checked=!0,A.defaultChecked=!0,d.appendChild(A),k=document.createElement("span"),mxUtils.write(k," "+mxResources.get("rememberThisSetting")),d.appendChild(k),mxEvent.addListener(k,"click",function(b){A.checked=!A.checked;mxEvent.consume(b)}));c.appendChild(d);k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});
-k.className="geBtn";l=mxUtils.button(mxResources.get("apply"),function(){for(var c=["search"],f=0;f<v.length;f++){var d=v[f].apply(this,arguments);null!=d&&c.push(d)}b.sidebar.showEntries(0<c.length?c.join(";"):"",A.checked);b.hideDialog()});l.className="geBtn gePrimaryBtn";d=document.createElement("div");d.style.marginTop="26px";d.style.textAlign="right"}b.editor.cancelFirst?(d.appendChild(k),d.appendChild(l)):(d.appendChild(l),d.appendChild(k));c.appendChild(d);this.container=c},PluginsDialog=function(b,
+"relative";x.style.top="1px";x.checked=b.sidebar.sidebarTitles;x.defaultChecked=x.checked;d.appendChild(x);k=document.createElement("span");mxUtils.write(k," "+mxResources.get("labels"));k.style.paddingRight="20px";d.appendChild(k);mxEvent.addListener(k,"click",function(b){x.checked=!x.checked;mxEvent.consume(b)});var z=document.createElement("input");z.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)k=document.createElement("span"),k.style.paddingRight="20px",k.appendChild(z),
+mxUtils.write(k," "+mxResources.get("rememberThisSetting")),z.style.position="relative",z.style.top="1px",z.checked=!0,z.defaultChecked=!0,mxEvent.addListener(k,"click",function(b){mxEvent.getSource(b)!=z&&(z.checked=!z.checked,mxEvent.consume(b))}),d.appendChild(k);k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});k.className="geBtn";l=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();for(var c=[],f=0;f<v.length;f++){var d=v[f].apply(this,arguments);null!=d&&
+c.push(d)}"1"==urlParams.sketch&&b.isSettingsEnabled()&&(f=mxUtils.indexOf(c,".scratchpad"),null!=b.scratchpad!=(0<=f&&0<c.splice(f,1).length)&&b.toggleScratchpad(),f=mxUtils.indexOf(c,"search"),mxSettings.settings.search=0<=f&&0<c.splice(f,1).length,b.sidebar.showPalette("search",mxSettings.settings.search),z.checked&&mxSettings.save());b.sidebar.showEntries(c.join(";"),z.checked,!0);b.setSidebarTitles(x.checked,z.checked)});l.className="geBtn gePrimaryBtn"}else{var A=document.createElement("table"),
+k=document.createElement("tbody");c.style.height="100%";c.style.overflow="auto";l=document.createElement("tr");A.style.width="100%";e=document.createElement("td");var g=document.createElement("td"),n=document.createElement("td"),B=mxUtils.bind(this,function(c,f,d){var e=document.createElement("input");e.type="checkbox";A.appendChild(e);e.checked=b.sidebar.isEntryVisible(d);var l=document.createElement("span");mxUtils.write(l,f);f=document.createElement("div");f.style.display="block";f.appendChild(e);
+f.appendChild(l);mxEvent.addListener(l,"click",function(b){e.checked=!e.checked;mxEvent.consume(b)});c.appendChild(f);return function(){return e.checked?d:null}});l.appendChild(e);l.appendChild(g);l.appendChild(n);k.appendChild(l);A.appendChild(k);for(var v=[],y=0,k=0;k<d.length;k++)for(l=0;l<d[k].entries.length;l++)y++;for(var C=[e,g,n],E=0,k=0;k<d.length;k++)(function(b){for(var c=0;c<b.entries.length;c++){var f=b.entries[c];v.push(B(C[Math.floor(E/(y/3))],f.title,f.id));E++}})(d[k]);c.appendChild(A);
+d=document.createElement("div");d.style.marginTop="18px";d.style.textAlign="center";z=document.createElement("input");isLocalStorage&&(z.setAttribute("type","checkbox"),z.checked=!0,z.defaultChecked=!0,d.appendChild(z),k=document.createElement("span"),mxUtils.write(k," "+mxResources.get("rememberThisSetting")),d.appendChild(k),mxEvent.addListener(k,"click",function(b){z.checked=!z.checked;mxEvent.consume(b)}));c.appendChild(d);k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});
+k.className="geBtn";l=mxUtils.button(mxResources.get("apply"),function(){for(var c=["search"],f=0;f<v.length;f++){var d=v[f].apply(this,arguments);null!=d&&c.push(d)}b.sidebar.showEntries(0<c.length?c.join(";"):"",z.checked);b.hideDialog()});l.className="geBtn gePrimaryBtn";d=document.createElement("div");d.style.marginTop="26px";d.style.textAlign="right"}b.editor.cancelFirst?(d.appendChild(k),d.appendChild(l)):(d.appendChild(l),d.appendChild(k));c.appendChild(d);this.container=c},PluginsDialog=function(b,
e,d){function c(){f=!0;if(0==n.length)k.innerHTML=mxUtils.htmlEntities(mxResources.get("noPlugins"));else{k.innerHTML="";for(var e=0;e<n.length;e++){var l=document.createElement("span");l.style.whiteSpace="nowrap";var m=document.createElement("span");m.className="geSprite geSprite-delete";m.style.position="relative";m.style.cursor="pointer";m.style.top="5px";m.style.marginRight="4px";m.style.display="inline-block";l.appendChild(m);mxUtils.write(l,n[e]);k.appendChild(l);mxUtils.br(k);mxEvent.addListener(m,
"click",function(f){return function(){b.confirm(mxResources.get("delete")+' "'+n[f]+'"?',function(){null!=d&&d(n[f]);n.splice(f,1);c()})}}(e))}}}var g=document.createElement("div"),k=document.createElement("div");k.style.height="180px";k.style.overflow="auto";var n=mxSettings.getPlugins().slice(),f=!1;g.appendChild(k);c();var f=!1,l=mxUtils.button(mxResources.get("add"),null!=e?function(){e(function(b){b&&0>mxUtils.indexOf(n,b)&&n.push(b);c()})}:function(){var f=document.createElement("div"),d=document.createElement("span");
d.style.marginTop="6px";mxUtils.write(d,mxResources.get("builtinPlugins")+": ");f.appendChild(d);var e=document.createElement("select");e.style.width="150px";for(d=0;d<App.publicPlugin.length;d++){var l=document.createElement("option");mxUtils.write(l,App.publicPlugin[d]);l.value=App.publicPlugin[d];e.appendChild(l)}f.appendChild(e);mxUtils.br(f);mxUtils.br(f);d=mxUtils.button(mxResources.get("custom")+"...",function(){var f=new FilenameDialog(b,"",mxResources.get("add"),function(f){b.hideDialog();
if(null!=f&&0<f.length){f=f.split(";");for(var d=0;d<f.length;d++){var e=f[d],l=App.pluginRegistry[e];null!=l&&(e=l);0<e.length&&0>mxUtils.indexOf(n,e)&&n.push(e)}c()}},mxResources.get("enterValue")+" ("+mxResources.get("url")+")");b.showDialog(f.container,300,80,!0,!0);f.init()});d.className="geBtn";f=new CustomDialog(b,f,mxUtils.bind(this,function(){var b=App.pluginRegistry[e.value];0>mxUtils.indexOf(n,b)&&(n.push(b),c())}),null,null,null,d);b.showDialog(f.container,300,100,!0,!0)});l.className=
"geBtn";var m=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});m.className="geBtn";var p=mxUtils.button(mxResources.get("apply"),function(){f?(mxSettings.setPlugins(n),mxSettings.save(),b.hideDialog(),b.alert(mxResources.get("restartForChangeRequired"))):b.hideDialog()});p.className="geBtn gePrimaryBtn";var q=document.createElement("div");q.style.marginTop="14px";q.style.textAlign="right";var t=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://www.diagrams.net/doc/faq/plugins")});
-t.className="geBtn";b.isOffline()&&!mxClient.IS_CHROMEAPP&&(t.style.display="none");q.appendChild(t);b.editor.cancelFirst?(q.appendChild(m),q.appendChild(l),q.appendChild(p)):(q.appendChild(l),q.appendChild(p),q.appendChild(m));g.appendChild(q);this.container=g},CropImageDialog=function(b,e,d,c){function g(){var b=A.checked,c=z.checked,f=v.geometry,d=l.width,e=l.height,m=(300-d)/2,g=(300-e)/2,p;f.x<m?(f.width-=m-f.x,f.x=m):f.x+f.width>m+d&&(f.width=m+d-f.x,f.x=Math.min(f.x,m+d));f.y<g?(f.height-=
-g-f.y,f.y=g):f.y+f.height>g+e&&(f.height=g+e-f.y,f.y=Math.min(f.y,g+e));p=(f.x-m)/d*100;d=100-(f.x+f.width-m)/d*100;m=(f.y-g)/e*100;f=100-(f.y+f.height-g)/e*100;return"inset("+mxUtils.format(m)+"% "+mxUtils.format(d)+"% "+mxUtils.format(f)+"% "+mxUtils.format(p)+"%"+(b?" round "+t+"%":c?" round 50%":"")+")"}function k(b){null!=p&&(!0!==b&&(p.model.setGeometry(v,q.clone()),t=5,y.value=t),p.model.setStyle(v,u+g()),p.selectAll(),B.style.visibility=A.checked?"visible":"hidden")}var n=document.createElement("div"),
+t.className="geBtn";b.isOffline()&&!mxClient.IS_CHROMEAPP&&(t.style.display="none");q.appendChild(t);b.editor.cancelFirst?(q.appendChild(m),q.appendChild(l),q.appendChild(p)):(q.appendChild(l),q.appendChild(p),q.appendChild(m));g.appendChild(q);this.container=g},CropImageDialog=function(b,e,d,c){function g(){var b=z.checked,c=A.checked,f=v.geometry,d=l.width,e=l.height,m=(300-d)/2,g=(300-e)/2,p;f.x<m?(f.width-=m-f.x,f.x=m):f.x+f.width>m+d&&(f.width=m+d-f.x,f.x=Math.min(f.x,m+d));f.y<g?(f.height-=
+g-f.y,f.y=g):f.y+f.height>g+e&&(f.height=g+e-f.y,f.y=Math.min(f.y,g+e));p=(f.x-m)/d*100;d=100-(f.x+f.width-m)/d*100;m=(f.y-g)/e*100;f=100-(f.y+f.height-g)/e*100;return"inset("+mxUtils.format(m)+"% "+mxUtils.format(d)+"% "+mxUtils.format(f)+"% "+mxUtils.format(p)+"%"+(b?" round "+t+"%":c?" round 50%":"")+")"}function k(b){null!=p&&(!0!==b&&(p.model.setGeometry(v,q.clone()),t=5,y.value=t),p.model.setStyle(v,u+g()),p.selectAll(),B.style.visibility=z.checked?"visible":"hidden")}var n=document.createElement("div"),
f=document.createElement("div");f.style.height="300px";f.style.width="300px";f.style.display="inline-flex";f.style.justifyContent="center";f.style.alignItems="center";f.style.position="absolute";var l=document.createElement("img");l.onload=function(){function b(){p.model.setStyle(v,u+g())}p=new Graph(m);p.autoExtend=!1;p.autoScroll=!1;p.setGridEnabled(!1);p.setEnabled(!0);p.setPanning(!1);p.setConnectable(!1);p.getRubberband().setEnabled(!1);p.graphHandler.allowLivePreview=!1;var c=p.createVertexHandler;
-p.createVertexHandler=function(){var b=c.apply(this,arguments);b.livePreview=!1;return b};if(null!=d)try{if("inset"==d.substring(0,5)){var f=v.geometry,e=l.width,k=l.height,q=(300-e)/2,n=(300-k)/2,C=d.match(/\(([^)]+)\)/)[1].split(/[ ,]+/),G=parseFloat(C[0]),M=parseFloat(C[1]),W=parseFloat(C[2]),X=parseFloat(C[3]);isFinite(G)&&isFinite(M)&&isFinite(W)&&isFinite(X)?(f.x=X/100*e+q,f.y=G/100*k+n,f.width=(100-M)/100*e+q-f.x,f.height=(100-W)/100*k+n-f.y,"round"==C[4]?"50%"==C[5]?z.setAttribute("checked",
-"checked"):(t=parseInt(C[5]),y.value=t,A.setAttribute("checked","checked"),B.style.visibility="visible"):x.setAttribute("checked","checked")):d=null}else d=null}catch(da){}v.style=u+(d?d:g());v.vertex=!0;p.addCell(v,null,null,null,null);p.selectAll();p.addListener(mxEvent.CELLS_MOVED,b);p.addListener(mxEvent.CELLS_RESIZED,b);var L=p.graphHandler.mouseUp,Q=p.graphHandler.mouseDown;p.graphHandler.mouseUp=function(){L.apply(this,arguments);m.style.backgroundColor="#fff9"};p.graphHandler.mouseDown=function(){Q.apply(this,
-arguments);m.style.backgroundColor=""};p.dblClick=function(){};var T=p.getSelectionModel().changeSelection;p.getSelectionModel().changeSelection=function(){T.call(this,[v],[v])}};l.onerror=function(){l.onload=null;l.src=Editor.errorImage};l.setAttribute("src",e);l.style.maxWidth="300px";l.style.maxHeight="300px";f.appendChild(l);n.appendChild(f);var m=document.createElement("div");m.style.width="300px";m.style.height="300px";m.style.overflow="hidden";m.style.backgroundColor="#fff9";n.appendChild(m);
+p.createVertexHandler=function(){var b=c.apply(this,arguments);b.livePreview=!1;return b};if(null!=d)try{if("inset"==d.substring(0,5)){var f=v.geometry,e=l.width,k=l.height,q=(300-e)/2,n=(300-k)/2,C=d.match(/\(([^)]+)\)/)[1].split(/[ ,]+/),E=parseFloat(C[0]),M=parseFloat(C[1]),V=parseFloat(C[2]),W=parseFloat(C[3]);isFinite(E)&&isFinite(M)&&isFinite(V)&&isFinite(W)?(f.x=W/100*e+q,f.y=E/100*k+n,f.width=(100-M)/100*e+q-f.x,f.height=(100-V)/100*k+n-f.y,"round"==C[4]?"50%"==C[5]?A.setAttribute("checked",
+"checked"):(t=parseInt(C[5]),y.value=t,z.setAttribute("checked","checked"),B.style.visibility="visible"):x.setAttribute("checked","checked")):d=null}else d=null}catch(da){}v.style=u+(d?d:g());v.vertex=!0;p.addCell(v,null,null,null,null);p.selectAll();p.addListener(mxEvent.CELLS_MOVED,b);p.addListener(mxEvent.CELLS_RESIZED,b);var L=p.graphHandler.mouseUp,P=p.graphHandler.mouseDown;p.graphHandler.mouseUp=function(){L.apply(this,arguments);m.style.backgroundColor="#fff9"};p.graphHandler.mouseDown=function(){P.apply(this,
+arguments);m.style.backgroundColor=""};p.dblClick=function(){};var X=p.getSelectionModel().changeSelection;p.getSelectionModel().changeSelection=function(){X.call(this,[v],[v])}};l.onerror=function(){l.onload=null;l.src=Editor.errorImage};l.setAttribute("src",e);l.style.maxWidth="300px";l.style.maxHeight="300px";f.appendChild(l);n.appendChild(f);var m=document.createElement("div");m.style.width="300px";m.style.height="300px";m.style.overflow="hidden";m.style.backgroundColor="#fff9";n.appendChild(m);
var p=null,q=new mxGeometry(100,100,100,100),t=5,v=new mxCell("",q.clone(),""),u="shape=image;fillColor=none;rotatable=0;cloneable=0;deletable=0;image="+e.replace(";base64","")+";clipPath=",x=document.createElement("input");x.setAttribute("type","radio");x.setAttribute("id","croppingRect");x.setAttribute("name","croppingShape");x.setAttribute("checked","checked");x.style.margin="5px";n.appendChild(x);e=document.createElement("label");e.setAttribute("for","croppingRect");mxUtils.write(e,mxResources.get("rectangle"));
-n.appendChild(e);var A=document.createElement("input");A.setAttribute("type","radio");A.setAttribute("id","croppingRounded");A.setAttribute("name","croppingShape");A.style.margin="5px";n.appendChild(A);e=document.createElement("label");e.setAttribute("for","croppingRounded");mxUtils.write(e,mxResources.get("rounded"));n.appendChild(e);var z=document.createElement("input");z.setAttribute("type","radio");z.setAttribute("id","croppingEllipse");z.setAttribute("name","croppingShape");z.style.margin="5px";
-n.appendChild(z);e=document.createElement("label");e.setAttribute("for","croppingEllipse");mxUtils.write(e,mxResources.get("ellipse"));n.appendChild(e);mxEvent.addListener(x,"change",k);mxEvent.addListener(A,"change",k);mxEvent.addListener(z,"change",k);var B=document.createElement("div");B.style.textAlign="center";B.style.visibility="hidden";var y=document.createElement("input");y.setAttribute("type","range");y.setAttribute("min","1");y.setAttribute("max","49");y.setAttribute("value",t);y.setAttribute("title",
-mxResources.get("arcSize"));B.appendChild(y);n.appendChild(B);mxEvent.addListener(y,"change",function(){t=this.value;k(!0)});e=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});e.className="geBtn";f=mxUtils.button(mxResources.get("apply"),function(){c(g(),v.geometry.width,v.geometry.height);b.hideDialog()});f.className="geBtn gePrimaryBtn";var C=mxUtils.button(mxResources.get("reset"),function(){c(null,l.width,l.height);b.hideDialog()});C.className="geBtn";var G=document.createElement("div");
-G.style.marginTop="10px";G.style.textAlign="right";b.editor.cancelFirst?(G.appendChild(e),G.appendChild(C),G.appendChild(f)):(G.appendChild(C),G.appendChild(f),G.appendChild(e));n.appendChild(G);this.container=n},EditGeometryDialog=function(b,e){var d=b.editor.graph,c=1==e.length?d.getCellGeometry(e[0]):null,g=document.createElement("div"),k=document.createElement("table"),n=document.createElement("tbody"),f=document.createElement("tr"),l=document.createElement("td"),m=document.createElement("td");
+n.appendChild(e);var z=document.createElement("input");z.setAttribute("type","radio");z.setAttribute("id","croppingRounded");z.setAttribute("name","croppingShape");z.style.margin="5px";n.appendChild(z);e=document.createElement("label");e.setAttribute("for","croppingRounded");mxUtils.write(e,mxResources.get("rounded"));n.appendChild(e);var A=document.createElement("input");A.setAttribute("type","radio");A.setAttribute("id","croppingEllipse");A.setAttribute("name","croppingShape");A.style.margin="5px";
+n.appendChild(A);e=document.createElement("label");e.setAttribute("for","croppingEllipse");mxUtils.write(e,mxResources.get("ellipse"));n.appendChild(e);mxEvent.addListener(x,"change",k);mxEvent.addListener(z,"change",k);mxEvent.addListener(A,"change",k);var B=document.createElement("div");B.style.textAlign="center";B.style.visibility="hidden";var y=document.createElement("input");y.setAttribute("type","range");y.setAttribute("min","1");y.setAttribute("max","49");y.setAttribute("value",t);y.setAttribute("title",
+mxResources.get("arcSize"));B.appendChild(y);n.appendChild(B);mxEvent.addListener(y,"change",function(){t=this.value;k(!0)});e=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});e.className="geBtn";f=mxUtils.button(mxResources.get("apply"),function(){c(g(),v.geometry.width,v.geometry.height);b.hideDialog()});f.className="geBtn gePrimaryBtn";var C=mxUtils.button(mxResources.get("reset"),function(){c(null,l.width,l.height);b.hideDialog()});C.className="geBtn";var E=document.createElement("div");
+E.style.marginTop="10px";E.style.textAlign="right";b.editor.cancelFirst?(E.appendChild(e),E.appendChild(C),E.appendChild(f)):(E.appendChild(C),E.appendChild(f),E.appendChild(e));n.appendChild(E);this.container=n},EditGeometryDialog=function(b,e){var d=b.editor.graph,c=1==e.length?d.getCellGeometry(e[0]):null,g=document.createElement("div"),k=document.createElement("table"),n=document.createElement("tbody"),f=document.createElement("tr"),l=document.createElement("td"),m=document.createElement("td");
k.style.paddingLeft="6px";mxUtils.write(l,mxResources.get("relative")+":");var p=document.createElement("input");p.setAttribute("type","checkbox");null!=c&&c.relative&&(p.setAttribute("checked","checked"),p.defaultChecked=!0);this.init=function(){p.focus()};m.appendChild(p);f.appendChild(l);f.appendChild(m);n.appendChild(f);f=document.createElement("tr");l=document.createElement("td");m=document.createElement("td");mxUtils.write(l,mxResources.get("left")+":");var q=document.createElement("input");
q.setAttribute("type","text");q.style.width="100px";q.value=null!=c?c.x:"";m.appendChild(q);f.appendChild(l);f.appendChild(m);n.appendChild(f);f=document.createElement("tr");l=document.createElement("td");m=document.createElement("td");mxUtils.write(l,mxResources.get("top")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width="100px";t.value=null!=c?c.y:"";m.appendChild(t);f.appendChild(l);f.appendChild(m);n.appendChild(f);f=document.createElement("tr");l=document.createElement("td");
m=document.createElement("td");mxUtils.write(l,mxResources.get("dx")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value=null!=c&&null!=c.offset?c.offset.x:"";m.appendChild(v);f.appendChild(l);f.appendChild(m);n.appendChild(f);f=document.createElement("tr");l=document.createElement("td");m=document.createElement("td");mxUtils.write(l,mxResources.get("dy")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.width="100px";
u.value=null!=c&&null!=c.offset?c.offset.y:"";m.appendChild(u);f.appendChild(l);f.appendChild(m);n.appendChild(f);f=document.createElement("tr");l=document.createElement("td");m=document.createElement("td");mxUtils.write(l,mxResources.get("width")+":");var x=document.createElement("input");x.setAttribute("type","text");x.style.width="100px";x.value=null!=c?c.width:"";m.appendChild(x);f.appendChild(l);f.appendChild(m);n.appendChild(f);f=document.createElement("tr");l=document.createElement("td");m=
-document.createElement("td");mxUtils.write(l,mxResources.get("height")+":");var A=document.createElement("input");A.setAttribute("type","text");A.style.width="100px";A.value=null!=c?c.height:"";m.appendChild(A);f.appendChild(l);f.appendChild(m);n.appendChild(f);f=document.createElement("tr");l=document.createElement("td");m=document.createElement("td");mxUtils.write(l,mxResources.get("rotation")+":");var z=document.createElement("input");z.setAttribute("type","text");z.style.width="100px";z.value=
-1==e.length?mxUtils.getValue(d.getCellStyle(e[0]),mxConstants.STYLE_ROTATION,0):"";m.appendChild(z);f.appendChild(l);f.appendChild(m);n.appendChild(f);k.appendChild(n);g.appendChild(k);c=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});c.className="geBtn";var B=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();d.getModel().beginUpdate();try{for(var c=0;c<e.length;c++){var f=d.getCellGeometry(e[c]);null!=f&&(f=f.clone(),d.isCellMovable(e[c])&&(f.relative=p.checked,
-0<mxUtils.trim(q.value).length&&(f.x=Number(q.value)),0<mxUtils.trim(t.value).length&&(f.y=Number(t.value)),0<mxUtils.trim(v.value).length&&(null==f.offset&&(f.offset=new mxPoint),f.offset.x=Number(v.value)),0<mxUtils.trim(u.value).length&&(null==f.offset&&(f.offset=new mxPoint),f.offset.y=Number(u.value))),d.isCellResizable(e[c])&&(0<mxUtils.trim(x.value).length&&(f.width=Number(x.value)),0<mxUtils.trim(A.value).length&&(f.height=Number(A.value))),d.getModel().setGeometry(e[c],f));0<mxUtils.trim(z.value).length&&
-d.setCellStyles(mxConstants.STYLE_ROTATION,Number(z.value),[e[c]])}}finally{d.getModel().endUpdate()}});B.className="geBtn gePrimaryBtn";mxEvent.addListener(g,"keypress",function(b){13==b.keyCode&&B.click()});k=document.createElement("div");k.style.marginTop="20px";k.style.textAlign="right";b.editor.cancelFirst?(k.appendChild(c),k.appendChild(B)):(k.appendChild(B),k.appendChild(c));g.appendChild(k);this.container=g},LibraryDialog=function(b,e,d,c,g,k){function n(b){for(b=document.elementFromPoint(b.clientX,
-b.clientY);null!=b&&b.parentNode!=v;)b=b.parentNode;var c=null;if(null!=b)for(var f=v.firstChild,c=0;null!=f&&f!=b;)f=f.nextSibling,c++;return c}function f(c,d,e,l,m,g,k,q,t){try{if(b.spinner.stop(),null==d||"image/"==d.substring(0,6))if(null==c&&null!=k||null==x[c]){var D=function(){N.innerHTML="";N.style.cursor="pointer";N.style.whiteSpace="nowrap";N.style.textOverflow="ellipsis";mxUtils.write(N,null!=I.title&&0<I.title.length?I.title:mxResources.get("untitled"));N.style.color=null==I.title||0==
-I.title.length?"#d0d0d0":""};v.style.backgroundImage="";u.style.display="none";var E=m,L=g;if(m>b.maxImageSize||g>b.maxImageSize){var Q=Math.min(1,Math.min(b.maxImageSize/Math.max(1,m)),b.maxImageSize/Math.max(1,g));m*=Q;g*=Q}E>L?(L=Math.round(100*L/E),E=100):(E=Math.round(100*E/L),L=100);var T=document.createElement("div");T.setAttribute("draggable","true");T.style.display="inline-block";T.style.position="relative";T.style.padding="0 12px";T.style.cursor="move";mxUtils.setPrefixedStyle(T.style,"transition",
-"transform .1s ease-in-out");if(null!=c){var H=document.createElement("img");H.setAttribute("src",y.convert(c));H.style.width=E+"px";H.style.height=L+"px";H.style.margin="10px";H.style.paddingBottom=Math.floor((100-L)/2)+"px";H.style.paddingLeft=Math.floor((100-E)/2)+"px";T.appendChild(H)}else if(null!=k){var z=b.stringToCells(Graph.decompress(k.xml));0<z.length&&(b.sidebar.createThumb(z,100,100,T,null,!0,!1),T.firstChild.style.display="inline-block",T.firstChild.style.cursor="")}var F=document.createElement("img");
-F.setAttribute("src",Editor.closeBlackImage);F.setAttribute("border","0");F.setAttribute("title",mxResources.get("delete"));F.setAttribute("align","top");F.style.paddingTop="4px";F.style.position="absolute";F.style.marginLeft="-12px";F.style.zIndex="1";F.style.cursor="pointer";mxEvent.addListener(F,"dragstart",function(b){mxEvent.consume(b)});(function(b,c,f){mxEvent.addListener(F,"click",function(d){x[c]=null;for(var e=0;e<p.length;e++)if(null!=p[e].data&&p[e].data==c||null!=p[e].xml&&null!=f&&p[e].xml==
-f.xml){p.splice(e,1);break}T.parentNode.removeChild(b);0==p.length&&(v.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",u.style.display="");mxEvent.consume(d)});mxEvent.addListener(F,"dblclick",function(b){mxEvent.consume(b)})})(T,c,k);T.appendChild(F);T.style.marginBottom="30px";var N=document.createElement("div");N.style.position="absolute";N.style.boxSizing="border-box";N.style.bottom="-18px";N.style.left="10px";N.style.right="10px";N.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:
-"#ffffff";N.style.overflow="hidden";N.style.textAlign="center";var I=null;null!=c?(I={data:c,w:m,h:g,title:t},null!=q&&(I.aspect=q),x[c]=H,p.push(I)):null!=k&&(k.aspect="fixed",p.push(k),I=k);mxEvent.addListener(N,"keydown",function(b){13==b.keyCode&&null!=B&&(B(),B=null,mxEvent.consume(b))});D();T.appendChild(N);mxEvent.addListener(N,"mousedown",function(b){"true"!=N.getAttribute("contentEditable")&&mxEvent.consume(b)});z=function(c){if(mxClient.IS_IOS||mxClient.IS_FF||!(null==document.documentMode||
-9<document.documentMode)){var f=new FilenameDialog(b,I.title||"",mxResources.get("ok"),function(b){null!=b&&(I.title=b,D())},mxResources.get("enterValue"));b.showDialog(f.container,300,80,!0,!0);f.init();mxEvent.consume(c)}else if("true"!=N.getAttribute("contentEditable")){null!=B&&(B(),B=null);if(null==I.title||0==I.title.length)N.innerHTML="";N.style.textOverflow="";N.style.whiteSpace="";N.style.cursor="text";N.style.color="";N.setAttribute("contentEditable","true");mxUtils.setPrefixedStyle(N.style,
-"user-select","text");N.focus();document.execCommand("selectAll",!1,null);B=function(){N.removeAttribute("contentEditable");N.style.cursor="pointer";I.title=N.innerHTML;D()};mxEvent.consume(c)}};mxEvent.addListener(N,"click",z);mxEvent.addListener(T,"dblclick",z);v.appendChild(T);mxEvent.addListener(T,"dragstart",function(b){null==c&&null!=k&&(F.style.visibility="hidden",N.style.visibility="hidden");mxClient.IS_FF&&null!=k.xml&&b.dataTransfer.setData("Text",k.xml);A=n(b);mxClient.IS_GC&&(T.style.opacity=
-"0.9");window.setTimeout(function(){mxUtils.setPrefixedStyle(T.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(T,30);F.style.visibility="";N.style.visibility=""},0)});mxEvent.addListener(T,"dragend",function(b){"hidden"==F.style.visibility&&(F.style.visibility="",N.style.visibility="");A=null;mxUtils.setOpacity(T,100);mxUtils.setPrefixedStyle(T.style,"transform",null)})}else C||(C=!0,b.handleError({message:mxResources.get("fileExists")}));else{m=!1;try{if(E=mxUtils.parseXml(c),"mxlibrary"==
-E.documentElement.nodeName){L=JSON.parse(mxUtils.getTextContent(E.documentElement));if(null!=L&&0<L.length)for(var G=0;G<L.length;G++)null!=L[G].xml?f(null,null,0,0,0,0,L[G]):f(L[G].data,null,0,0,L[G].w,L[G].h,null,"fixed",L[G].title);m=!0}else if("mxfile"==E.documentElement.nodeName){for(var K=E.documentElement.getElementsByTagName("diagram"),G=0;G<K.length;G++){var L=mxUtils.getTextContent(K[G]),z=b.stringToCells(Graph.decompress(L)),J=b.editor.graph.getBoundingBoxFromGeometry(z);f(null,null,0,
-0,0,0,{xml:L,w:J.width,h:J.height})}m=!0}}catch(V){}m||(b.spinner.stop(),b.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(V){}return null}function l(b){b.dataTransfer.dropEffect=null!=A?"move":"copy";b.stopPropagation();b.preventDefault()}function m(c){c.stopPropagation();c.preventDefault();C=!1;z=n(c);if(null!=A)null!=z&&z<v.children.length?(p.splice(z>A?z-1:z,0,p.splice(A,1)[0]),v.insertBefore(v.children[A],v.children[z])):(p.push(p.splice(A,1)[0]),v.appendChild(v.children[A]));
-else if(0<c.dataTransfer.files.length)b.importFiles(c.dataTransfer.files,0,0,b.maxImageSize,G(c));else if(0<=mxUtils.indexOf(c.dataTransfer.types,"text/uri-list")){var d=decodeURIComponent(c.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(d)||/(\.png)($|\?)/i.test(d)||/(\.gif)($|\?)/i.test(d)||/(\.svg)($|\?)/i.test(d))&&b.loadImage(d,function(b){f(d,null,0,0,b.width,b.height);v.scrollTop=v.scrollHeight})}c.stopPropagation();c.preventDefault()}var p=[];d=document.createElement("div");
+document.createElement("td");mxUtils.write(l,mxResources.get("height")+":");var z=document.createElement("input");z.setAttribute("type","text");z.style.width="100px";z.value=null!=c?c.height:"";m.appendChild(z);f.appendChild(l);f.appendChild(m);n.appendChild(f);f=document.createElement("tr");l=document.createElement("td");m=document.createElement("td");mxUtils.write(l,mxResources.get("rotation")+":");var A=document.createElement("input");A.setAttribute("type","text");A.style.width="100px";A.value=
+1==e.length?mxUtils.getValue(d.getCellStyle(e[0]),mxConstants.STYLE_ROTATION,0):"";m.appendChild(A);f.appendChild(l);f.appendChild(m);n.appendChild(f);k.appendChild(n);g.appendChild(k);c=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});c.className="geBtn";var B=mxUtils.button(mxResources.get("apply"),function(){b.hideDialog();d.getModel().beginUpdate();try{for(var c=0;c<e.length;c++){var f=d.getCellGeometry(e[c]);null!=f&&(f=f.clone(),d.isCellMovable(e[c])&&(f.relative=p.checked,
+0<mxUtils.trim(q.value).length&&(f.x=Number(q.value)),0<mxUtils.trim(t.value).length&&(f.y=Number(t.value)),0<mxUtils.trim(v.value).length&&(null==f.offset&&(f.offset=new mxPoint),f.offset.x=Number(v.value)),0<mxUtils.trim(u.value).length&&(null==f.offset&&(f.offset=new mxPoint),f.offset.y=Number(u.value))),d.isCellResizable(e[c])&&(0<mxUtils.trim(x.value).length&&(f.width=Number(x.value)),0<mxUtils.trim(z.value).length&&(f.height=Number(z.value))),d.getModel().setGeometry(e[c],f));0<mxUtils.trim(A.value).length&&
+d.setCellStyles(mxConstants.STYLE_ROTATION,Number(A.value),[e[c]])}}finally{d.getModel().endUpdate()}});B.className="geBtn gePrimaryBtn";mxEvent.addListener(g,"keypress",function(b){13==b.keyCode&&B.click()});k=document.createElement("div");k.style.marginTop="20px";k.style.textAlign="right";b.editor.cancelFirst?(k.appendChild(c),k.appendChild(B)):(k.appendChild(B),k.appendChild(c));g.appendChild(k);this.container=g},LibraryDialog=function(b,e,d,c,g,k){function n(b){for(b=document.elementFromPoint(b.clientX,
+b.clientY);null!=b&&b.parentNode!=v;)b=b.parentNode;var c=null;if(null!=b)for(var f=v.firstChild,c=0;null!=f&&f!=b;)f=f.nextSibling,c++;return c}function f(c,d,e,l,m,g,k,q,t){try{if(b.spinner.stop(),null==d||"image/"==d.substring(0,6))if(null==c&&null!=k||null==x[c]){var D=function(){E.innerHTML="";E.style.cursor="pointer";E.style.whiteSpace="nowrap";E.style.textOverflow="ellipsis";mxUtils.write(E,null!=J.title&&0<J.title.length?J.title:mxResources.get("untitled"));E.style.color=null==J.title||0==
+J.title.length?"#d0d0d0":""};v.style.backgroundImage="";u.style.display="none";var F=m,L=g;if(m>b.maxImageSize||g>b.maxImageSize){var P=Math.min(1,Math.min(b.maxImageSize/Math.max(1,m)),b.maxImageSize/Math.max(1,g));m*=P;g*=P}F>L?(L=Math.round(100*L/F),F=100):(F=Math.round(100*F/L),L=100);var H=document.createElement("div");H.setAttribute("draggable","true");H.style.display="inline-block";H.style.position="relative";H.style.padding="0 12px";H.style.cursor="move";mxUtils.setPrefixedStyle(H.style,"transition",
+"transform .1s ease-in-out");if(null!=c){var A=document.createElement("img");A.setAttribute("src",y.convert(c));A.style.width=F+"px";A.style.height=L+"px";A.style.margin="10px";A.style.paddingBottom=Math.floor((100-L)/2)+"px";A.style.paddingLeft=Math.floor((100-F)/2)+"px";H.appendChild(A)}else if(null!=k){var K=b.stringToCells(Graph.decompress(k.xml));0<K.length&&(b.sidebar.createThumb(K,100,100,H,null,!0,!1),H.firstChild.style.display="inline-block",H.firstChild.style.cursor="")}var G=document.createElement("img");
+G.setAttribute("src",Editor.closeBlackImage);G.setAttribute("border","0");G.setAttribute("title",mxResources.get("delete"));G.setAttribute("align","top");G.style.paddingTop="4px";G.style.position="absolute";G.style.marginLeft="-12px";G.style.zIndex="1";G.style.cursor="pointer";mxEvent.addListener(G,"dragstart",function(b){mxEvent.consume(b)});(function(b,c,f){mxEvent.addListener(G,"click",function(d){x[c]=null;for(var e=0;e<p.length;e++)if(null!=p[e].data&&p[e].data==c||null!=p[e].xml&&null!=f&&p[e].xml==
+f.xml){p.splice(e,1);break}H.parentNode.removeChild(b);0==p.length&&(v.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",u.style.display="");mxEvent.consume(d)});mxEvent.addListener(G,"dblclick",function(b){mxEvent.consume(b)})})(H,c,k);H.appendChild(G);H.style.marginBottom="30px";var E=document.createElement("div");E.style.position="absolute";E.style.boxSizing="border-box";E.style.bottom="-18px";E.style.left="10px";E.style.right="10px";E.style.backgroundColor=Editor.isDarkMode()?Editor.darkColor:
+"#ffffff";E.style.overflow="hidden";E.style.textAlign="center";var J=null;null!=c?(J={data:c,w:m,h:g,title:t},null!=q&&(J.aspect=q),x[c]=A,p.push(J)):null!=k&&(k.aspect="fixed",p.push(k),J=k);mxEvent.addListener(E,"keydown",function(b){13==b.keyCode&&null!=B&&(B(),B=null,mxEvent.consume(b))});D();H.appendChild(E);mxEvent.addListener(E,"mousedown",function(b){"true"!=E.getAttribute("contentEditable")&&mxEvent.consume(b)});K=function(c){if(mxClient.IS_IOS||mxClient.IS_FF||!(null==document.documentMode||
+9<document.documentMode)){var f=new FilenameDialog(b,J.title||"",mxResources.get("ok"),function(b){null!=b&&(J.title=b,D())},mxResources.get("enterValue"));b.showDialog(f.container,300,80,!0,!0);f.init();mxEvent.consume(c)}else if("true"!=E.getAttribute("contentEditable")){null!=B&&(B(),B=null);if(null==J.title||0==J.title.length)E.innerHTML="";E.style.textOverflow="";E.style.whiteSpace="";E.style.cursor="text";E.style.color="";E.setAttribute("contentEditable","true");mxUtils.setPrefixedStyle(E.style,
+"user-select","text");E.focus();document.execCommand("selectAll",!1,null);B=function(){E.removeAttribute("contentEditable");E.style.cursor="pointer";J.title=E.innerHTML;D()};mxEvent.consume(c)}};mxEvent.addListener(E,"click",K);mxEvent.addListener(H,"dblclick",K);v.appendChild(H);mxEvent.addListener(H,"dragstart",function(b){null==c&&null!=k&&(G.style.visibility="hidden",E.style.visibility="hidden");mxClient.IS_FF&&null!=k.xml&&b.dataTransfer.setData("Text",k.xml);z=n(b);mxClient.IS_GC&&(H.style.opacity=
+"0.9");window.setTimeout(function(){mxUtils.setPrefixedStyle(H.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(H,30);G.style.visibility="";E.style.visibility=""},0)});mxEvent.addListener(H,"dragend",function(b){"hidden"==G.style.visibility&&(G.style.visibility="",E.style.visibility="");z=null;mxUtils.setOpacity(H,100);mxUtils.setPrefixedStyle(H.style,"transform",null)})}else C||(C=!0,b.handleError({message:mxResources.get("fileExists")}));else{m=!1;try{if(F=mxUtils.parseXml(c),"mxlibrary"==
+F.documentElement.nodeName){L=JSON.parse(mxUtils.getTextContent(F.documentElement));if(null!=L&&0<L.length)for(var I=0;I<L.length;I++)null!=L[I].xml?f(null,null,0,0,0,0,L[I]):f(L[I].data,null,0,0,L[I].w,L[I].h,null,"fixed",L[I].title);m=!0}else if("mxfile"==F.documentElement.nodeName){for(var M=F.documentElement.getElementsByTagName("diagram"),I=0;I<M.length;I++){var L=mxUtils.getTextContent(M[I]),K=b.stringToCells(Graph.decompress(L)),O=b.editor.graph.getBoundingBoxFromGeometry(K);f(null,null,0,
+0,0,0,{xml:L,w:O.width,h:O.height})}m=!0}}catch(U){}m||(b.spinner.stop(),b.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(U){}return null}function l(b){b.dataTransfer.dropEffect=null!=z?"move":"copy";b.stopPropagation();b.preventDefault()}function m(c){c.stopPropagation();c.preventDefault();C=!1;A=n(c);if(null!=z)null!=A&&A<v.children.length?(p.splice(A>z?A-1:A,0,p.splice(z,1)[0]),v.insertBefore(v.children[z],v.children[A])):(p.push(p.splice(z,1)[0]),v.appendChild(v.children[z]));
+else if(0<c.dataTransfer.files.length)b.importFiles(c.dataTransfer.files,0,0,b.maxImageSize,E(c));else if(0<=mxUtils.indexOf(c.dataTransfer.types,"text/uri-list")){var d=decodeURIComponent(c.dataTransfer.getData("text/uri-list"));(/(\.jpg)($|\?)/i.test(d)||/(\.png)($|\?)/i.test(d)||/(\.gif)($|\?)/i.test(d)||/(\.svg)($|\?)/i.test(d))&&b.loadImage(d,function(b){f(d,null,0,0,b.width,b.height);v.scrollTop=v.scrollHeight})}c.stopPropagation();c.preventDefault()}var p=[];d=document.createElement("div");
d.style.height="100%";var q=document.createElement("div");q.style.whiteSpace="nowrap";q.style.height="40px";d.appendChild(q);mxUtils.write(q,mxResources.get("filename")+":");null==e&&(e=b.defaultLibraryName+".xml");var t=document.createElement("input");t.setAttribute("value",e);t.style.marginRight="20px";t.style.marginLeft="10px";t.style.width="500px";null==g||g.isRenamable()||t.setAttribute("disabled","true");this.init=function(){if(null==g||g.isRenamable())t.focus(),mxClient.IS_GC||mxClient.IS_FF||
5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null)};q.appendChild(t);var v=document.createElement("div");v.style.borderWidth="1px 0px 1px 0px";v.style.borderColor="#d3d3d3";v.style.borderStyle="solid";v.style.marginTop="6px";v.style.overflow="auto";v.style.height="340px";v.style.backgroundPosition="center center";v.style.backgroundRepeat="no-repeat";0==p.length&&Graph.fileSupport&&(v.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var u=document.createElement("div");
-u.style.position="absolute";u.style.width="640px";u.style.top="260px";u.style.textAlign="center";u.style.fontSize="22px";u.style.color="#a0c3ff";mxUtils.write(u,mxResources.get("dragImagesHere"));d.appendChild(u);var x={},A=null,z=null,B=null;e=function(b){"true"!=mxEvent.getSource(b).getAttribute("contentEditable")&&null!=B&&(B(),B=null,mxEvent.consume(b))};mxEvent.addListener(v,"mousedown",e);mxEvent.addListener(v,"pointerdown",e);mxEvent.addListener(v,"touchstart",e);var y=new mxUrlConverter,C=
-!1;if(null!=c)for(e=0;e<c.length;e++)q=c[e],f(q.data,null,0,0,q.w,q.h,q,q.aspect,q.title);mxEvent.addListener(v,"dragleave",function(b){u.style.cursor="";for(var c=mxEvent.getSource(b);null!=c;){if(c==v||c==u){b.stopPropagation();b.preventDefault();break}c=c.parentNode}});var G=function(c){return function(d,e,l,m,g,p,k,q,t){null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t.name)||/(\.vs(x|sx?))($|\?)/i.test(t.name))?b.importVisio(t,mxUtils.bind(this,function(b){f(b,e,l,m,g,p,k,"fixed",mxEvent.isAltDown(c)?
+u.style.position="absolute";u.style.width="640px";u.style.top="260px";u.style.textAlign="center";u.style.fontSize="22px";u.style.color="#a0c3ff";mxUtils.write(u,mxResources.get("dragImagesHere"));d.appendChild(u);var x={},z=null,A=null,B=null;e=function(b){"true"!=mxEvent.getSource(b).getAttribute("contentEditable")&&null!=B&&(B(),B=null,mxEvent.consume(b))};mxEvent.addListener(v,"mousedown",e);mxEvent.addListener(v,"pointerdown",e);mxEvent.addListener(v,"touchstart",e);var y=new mxUrlConverter,C=
+!1;if(null!=c)for(e=0;e<c.length;e++)q=c[e],f(q.data,null,0,0,q.w,q.h,q,q.aspect,q.title);mxEvent.addListener(v,"dragleave",function(b){u.style.cursor="";for(var c=mxEvent.getSource(b);null!=c;){if(c==v||c==u){b.stopPropagation();b.preventDefault();break}c=c.parentNode}});var E=function(c){return function(d,e,l,m,g,p,k,q,t){null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t.name)||/(\.vs(x|sx?))($|\?)/i.test(t.name))?b.importVisio(t,mxUtils.bind(this,function(b){f(b,e,l,m,g,p,k,"fixed",mxEvent.isAltDown(c)?
null:k.substring(0,k.lastIndexOf(".")).replace(/_/g," "))})):null!=t&&!b.isOffline()&&(new XMLHttpRequest).upload&&b.isRemoteFileFormat(d,t.name)?b.parseFile(t,mxUtils.bind(this,function(d){4==d.readyState&&(b.spinner.stop(),200<=d.status&&299>=d.status&&(f(d.responseText,e,l,m,g,p,k,"fixed",mxEvent.isAltDown(c)?null:k.substring(0,k.lastIndexOf(".")).replace(/_/g," ")),v.scrollTop=v.scrollHeight))})):(f(d,e,l,m,g,p,k,"fixed",mxEvent.isAltDown(c)?null:k.substring(0,k.lastIndexOf(".")).replace(/_/g,
" ")),v.scrollTop=v.scrollHeight)}};mxEvent.addListener(v,"dragover",l);mxEvent.addListener(v,"drop",m);mxEvent.addListener(u,"dragover",l);mxEvent.addListener(u,"drop",m);d.appendChild(v);c=document.createElement("div");c.style.textAlign="right";c.style.marginTop="20px";e=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog(!0)});e.setAttribute("id","btnCancel");e.className="geBtn";b.editor.cancelFirst&&c.appendChild(e);"draw.io"!=b.getServiceName()||null==g||g.constructor!=DriveLibrary&&
g.constructor!=GitHubLibrary||(q=mxUtils.button(mxResources.get("link"),function(){b.spinner.spin(document.body,mxResources.get("loading"))&&g.getPublicUrl(function(c){b.spinner.stop();if(null!=c){var f=b.getSearch("create title mode url drive splash state clibs ui".split(" ")),f=f+((0==f.length?"?":"&")+"splash=0&clibs=U"+encodeURIComponent(c));c=new EmbedDialog(b,window.location.protocol+"//"+window.location.host+"/"+f,null,null,null,null,"Check out the library I made using @drawio");b.showDialog(c.container,
450,240,!0);c.init()}else g.constructor==DriveLibrary?b.showError(mxResources.get("error"),mxResources.get("diagramIsNotPublic"),mxResources.get("share"),mxUtils.bind(this,function(){b.drive.showPermissions(g.getId())}),null,mxResources.get("ok"),mxUtils.bind(this,function(){})):b.handleError({message:mxResources.get("diagramIsNotPublic")})})}),q.className="geBtn",c.appendChild(q));q=mxUtils.button(mxResources.get("export"),function(){var c=b.createLibraryDataFromImages(p),f=t.value;/(\.xml)$/i.test(f)||
(f+=".xml");b.isLocalFileSave()?b.saveLocalFile(c,f,"text/xml",null,null,!0,null,"xml"):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(f)+"&format=xml&xml="+encodeURIComponent(c))).simulate(document,"_blank")});q.setAttribute("id","btnDownload");q.className="geBtn";c.appendChild(q);if(Graph.fileSupport){if(null==b.libDlgFileInputElt){var D=document.createElement("input");D.setAttribute("multiple","multiple");D.setAttribute("type","file");mxEvent.addListener(D,"change",function(c){C=!1;
-b.importFiles(D.files,0,0,b.maxImageSize,function(b,f,d,e,l,m,g,p,k){null!=D.files&&(G(c)(b,f,d,e,l,m,g,p,k),D.type="",D.type="file",D.value="")});v.scrollTop=v.scrollHeight});D.style.display="none";document.body.appendChild(D);b.libDlgFileInputElt=D}q=mxUtils.button(mxResources.get("import"),function(){null!=B&&(B(),B=null);b.libDlgFileInputElt.click()});q.setAttribute("id","btnAddImage");q.className="geBtn";c.appendChild(q)}q=mxUtils.button(mxResources.get("addImages"),function(){null!=B&&(B(),
+b.importFiles(D.files,0,0,b.maxImageSize,function(b,f,d,e,l,m,g,p,k){null!=D.files&&(E(c)(b,f,d,e,l,m,g,p,k),D.type="",D.type="file",D.value="")});v.scrollTop=v.scrollHeight});D.style.display="none";document.body.appendChild(D);b.libDlgFileInputElt=D}q=mxUtils.button(mxResources.get("import"),function(){null!=B&&(B(),B=null);b.libDlgFileInputElt.click()});q.setAttribute("id","btnAddImage");q.className="geBtn";c.appendChild(q)}q=mxUtils.button(mxResources.get("addImages"),function(){null!=B&&(B(),
B=null);b.showImageDialog(mxResources.get("addImageUrl"),"",function(b,c,d){C=!1;if(null!=b){if("data:image/"==b.substring(0,11)){var e=b.indexOf(",");0<e&&(b=b.substring(0,e)+";base64,"+b.substring(e+1))}f(b,null,0,0,c,d);v.scrollTop=v.scrollHeight}})});q.setAttribute("id","btnAddImageUrl");q.className="geBtn";c.appendChild(q);this.saveBtnClickHandler=function(c,f,d,e){b.saveLibrary(c,f,d,e)};q=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=B&&(B(),B=null);this.saveBtnClickHandler(t.value,
p,g,k)}));q.setAttribute("id","btnSave");q.className="geBtn gePrimaryBtn";c.appendChild(q);b.editor.cancelFirst||c.appendChild(e);d.appendChild(c);this.container=d},EditShapeDialog=function(b,e,d,c,g){c=null!=c?c:300;g=null!=g?g:120;var k,n,f=document.createElement("table"),l=document.createElement("tbody");f.style.cellPadding="4px";k=document.createElement("tr");n=document.createElement("td");n.setAttribute("colspan","2");n.style.fontSize="10pt";mxUtils.write(n,d);k.appendChild(n);l.appendChild(k);
k=document.createElement("tr");n=document.createElement("td");var m=document.createElement("textarea");m.style.outline="none";m.style.resize="none";m.style.width=c-200+"px";m.style.height=g+"px";this.textarea=m;this.init=function(){m.focus();m.scrollTop=0};n.appendChild(m);k.appendChild(n);n=document.createElement("td");d=document.createElement("div");d.style.position="relative";d.style.border="1px solid gray";d.style.top="6px";d.style.width="200px";d.style.height=g+4+"px";d.style.overflow="hidden";
@@ -10445,44 +10445,44 @@ l=l.documentElement.getElementsByTagName("parsererror");if(null!=l&&0<l.length)b
(c.setSelectionCell(f),c.scrollCellToVisible(f))}};d=mxUtils.button(mxResources.get("preview"),function(){v(p,q,!1)});d.className="geBtn";n.appendChild(d);d=mxUtils.button(mxResources.get("apply"),function(){v(b.editor.graph,e,!0)});d.className="geBtn gePrimaryBtn";n.appendChild(d);b.editor.cancelFirst||n.appendChild(g);k.appendChild(n);l.appendChild(k);f.appendChild(l);this.container=f},CustomDialog=function(b,e,d,c,g,k,n,f,l,m,p){var q=document.createElement("div");q.appendChild(e);var t=document.createElement("div");
t.style.marginTop="30px";t.style.textAlign="center";null!=n&&t.appendChild(n);b.isOffline()||null==k||(e=mxUtils.button(mxResources.get("help"),function(){b.openLink(k)}),e.className="geBtn",t.appendChild(e));l=mxUtils.button(l||mxResources.get("cancel"),function(){b.hideDialog();null!=c&&c()});l.className="geBtn";f&&(l.style.display="none");b.editor.cancelFirst&&t.appendChild(l);g=mxUtils.button(g||mxResources.get("ok"),mxUtils.bind(this,function(){m||b.hideDialog(null,null,this.container);if(null!=
d){var c=d();if("string"===typeof c){b.showError(mxResources.get("error"),c);return}}m&&b.hideDialog(null,null,this.container)}));t.appendChild(g);g.className="geBtn gePrimaryBtn";b.editor.cancelFirst||t.appendChild(l);if(null!=p)for(f=0;f<p.length;f++)(function(b,c,f){b=mxUtils.button(b,function(b){c(b)});null!=f&&b.setAttribute("title",f);b.className="geBtn";t.appendChild(b)})(p[f][0],p[f][1],p[f][2]);q.appendChild(t);this.cancelBtn=l;this.okButton=g;this.container=q},TemplatesDialog=function(b,
-e,d,c,g,k,n,f,l,m,p,q,t,v,u){function x(b){ta.innerHTML=mxUtils.htmlEntities(b);ta.style.display="block";setTimeout(function(){ta.style.display="none"},4E3)}function A(){null!=L&&(L.style.fontWeight="normal",L.style.textDecoration="none",Q=L,L=null)}function z(b,c,f,d,e,l,m){if(-1<b.className.indexOf("geTempDlgRadioBtnActive"))return!1;b.className+=" geTempDlgRadioBtnActive";M.querySelector(".geTempDlgRadioBtn[data-id="+d+"]").className="geTempDlgRadioBtn "+(m?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");
+e,d,c,g,k,n,f,l,m,p,q,t,v,u){function x(b){ta.innerHTML=mxUtils.htmlEntities(b);ta.style.display="block";setTimeout(function(){ta.style.display="none"},4E3)}function z(){null!=L&&(L.style.fontWeight="normal",L.style.textDecoration="none",P=L,L=null)}function A(b,c,f,d,e,l,m){if(-1<b.className.indexOf("geTempDlgRadioBtnActive"))return!1;b.className+=" geTempDlgRadioBtnActive";M.querySelector(".geTempDlgRadioBtn[data-id="+d+"]").className="geTempDlgRadioBtn "+(m?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");
M.querySelector("."+c).src="/images/"+f+"-sel.svg";M.querySelector("."+e).src="/images/"+l+".svg";return!0}function B(c,f,d,e){function m(c,f){if(null==p){var d=c,d=/^https?:\/\//.test(d)&&!b.editor.isCorsEnabledForUrl(d)?PROXY_URL+"?url="+encodeURIComponent(d):TEMPLATE_PATH+"/"+d;mxUtils.get(d,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(p=b.getText());f(p)}))}else f(p)}function g(d,e,l){if(null!=d&&mxUtils.isAncestorNode(document.body,f)&&(d=mxUtils.parseXml(d),d=Editor.extractGraphModel(d.documentElement,
!0),null!=d)){"mxfile"==d.nodeName&&(d=Editor.parseDiagramNode(d.getElementsByTagName("diagram")[0]));var m=new mxCodec(d.ownerDocument),g=new mxGraphModel;m.decode(d,g);d=g.root.getChildAt(0).children||[];b.sidebar.createTooltip(f,d,Math.min((window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)-80,1E3),Math.min((window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)-80,800),null!=c.title?mxResources.get(c.title,null,c.title):null,!0,
-new mxPoint(e,l),!0,null,!0);var p=document.createElement("div");p.className="geTempDlgDialogMask";M.appendChild(p);var k=b.sidebar.hideTooltip;b.sidebar.hideTooltip=function(){p&&(M.removeChild(p),p=null,k.apply(this,arguments),b.sidebar.hideTooltip=k)};mxEvent.addListener(p,"click",function(){b.sidebar.hideTooltip()})}}var p=null;if(qa||b.sidebar.currentElt==f)b.sidebar.hideTooltip();else{var k=function(c){qa&&b.sidebar.currentElt==f&&g(c,mxEvent.getClientX(e),mxEvent.getClientY(e));qa=!1;d.src=
-"/images/icon-search.svg"};b.sidebar.hideTooltip();b.sidebar.currentElt=f;qa=!0;d.src="/images/aui-wait.gif";c.isExt?l(c,k,function(){x(mxResources.get("cantLoadPrev"));qa=!1;d.src="/images/icon-search.svg"}):m(c.url,k)}}function y(b,c,f){if(null!=T){for(var d=T.className.split(" "),e=0;e<d.length;e++)if(-1<d[e].indexOf("Active")){d.splice(e,1);break}T.className=d.join(" ")}null!=b?(T=b,T.className+=" "+c,da=f,na.className="geTempDlgCreateBtn"):(da=T=null,na.className="geTempDlgCreateBtn geTempDlgBtnDisabled")}
-function C(c,f){if(null!=da){var d=function(c){t.isExternal?l(t,function(b){g(b,c)},p):t.url?mxUtils.get(TEMPLATE_PATH+"/"+t.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?g(b.getText(),c):p()})):g(b.emptyDiagramXml,c)},g=function(c,d){u||b.hideDialog(!0);e(c,d,t,f)},p=function(){x(mxResources.get("cannotLoad"));k()},k=function(){da=t;na.className="geTempDlgCreateBtn";f&&(ga.className="geTempDlgOpenBtn")},t=da;da=null;"boolean"!==typeof f&&(f=t.isExternal&&q);if(1==c)m(t.url,
-t);else if(f)ga.className="geTempDlgOpenBtn geTempDlgBtnDisabled geTempDlgBtnBusy",d();else{na.className="geTempDlgCreateBtn geTempDlgBtnDisabled geTempDlgBtnBusy";var n=null==b.mode||b.mode==App.MODE_GOOGLE||b.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"),n=new FilenameDialog(b,b.defaultFilename+".drawio",mxResources.get("ok"),d,n,function(b){var c=null!=b&&0<b.length;return c&&u?(d(b),!1):c},null,null,null,k,v?null:[]);b.showDialog(n.container,350,80,!0,!0);n.init()}}}
-function G(b){na.innerHTML=mxUtils.htmlEntities(mxResources.get(V||b?"create":"copy"));b=b?"none":"";q&&(ga.style.display=b);for(var c=M.querySelectorAll(".geTempDlgLinkToDiagram"),f=0;f<c.length;f++)c[f].style.display=b}function D(c,f,d,e,l){l||(O.innerHTML="",y(),ha=c,sa=e);var m=null;if(d){m=document.createElement("table");m.className="geTempDlgDiagramsListGrid";var g=document.createElement("tr"),p=document.createElement("th");p.style.width="50%";p.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram"));
-g.appendChild(p);p=document.createElement("th");p.style.width="25%";p.innerHTML=mxUtils.htmlEntities(mxResources.get("changedBy"));g.appendChild(p);p=document.createElement("th");p.style.width="25%";p.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn"));g.appendChild(p);m.appendChild(g);O.appendChild(m)}for(g=0;g<c.length;g++){c[g].isExternal=!f;var k=c[g].url,q=(p=mxUtils.htmlEntities(f?mxResources.get(c[g].title,null,c[g].title):c[g].title))||c[g].url,t=c[g].imgUrl,n=mxUtils.htmlEntities(c[g].changedBy||
+new mxPoint(e,l),!0,null,!0);var p=document.createElement("div");p.className="geTempDlgDialogMask";M.appendChild(p);var k=b.sidebar.hideTooltip;b.sidebar.hideTooltip=function(){p&&(M.removeChild(p),p=null,k.apply(this,arguments),b.sidebar.hideTooltip=k)};mxEvent.addListener(p,"click",function(){b.sidebar.hideTooltip()})}}var p=null;if(pa||b.sidebar.currentElt==f)b.sidebar.hideTooltip();else{var k=function(c){pa&&b.sidebar.currentElt==f&&g(c,mxEvent.getClientX(e),mxEvent.getClientY(e));pa=!1;d.src=
+"/images/icon-search.svg"};b.sidebar.hideTooltip();b.sidebar.currentElt=f;pa=!0;d.src="/images/aui-wait.gif";c.isExt?l(c,k,function(){x(mxResources.get("cantLoadPrev"));pa=!1;d.src="/images/icon-search.svg"}):m(c.url,k)}}function y(b,c,f){if(null!=X){for(var d=X.className.split(" "),e=0;e<d.length;e++)if(-1<d[e].indexOf("Active")){d.splice(e,1);break}X.className=d.join(" ")}null!=b?(X=b,X.className+=" "+c,da=f,ma.className="geTempDlgCreateBtn"):(da=X=null,ma.className="geTempDlgCreateBtn geTempDlgBtnDisabled")}
+function C(c,f){if(null!=da){var d=function(c){t.isExternal?l(t,function(b){g(b,c)},p):t.url?mxUtils.get(TEMPLATE_PATH+"/"+t.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?g(b.getText(),c):p()})):g(b.emptyDiagramXml,c)},g=function(c,d){u||b.hideDialog(!0);e(c,d,t,f)},p=function(){x(mxResources.get("cannotLoad"));k()},k=function(){da=t;ma.className="geTempDlgCreateBtn";f&&(ga.className="geTempDlgOpenBtn")},t=da;da=null;"boolean"!==typeof f&&(f=t.isExternal&&q);if(1==c)m(t.url,
+t);else if(f)ga.className="geTempDlgOpenBtn geTempDlgBtnDisabled geTempDlgBtnBusy",d();else{ma.className="geTempDlgCreateBtn geTempDlgBtnDisabled geTempDlgBtnBusy";var n=null==b.mode||b.mode==App.MODE_GOOGLE||b.mode==App.MODE_BROWSER?mxResources.get("diagramName"):mxResources.get("filename"),n=new FilenameDialog(b,b.defaultFilename+".drawio",mxResources.get("ok"),d,n,function(b){var c=null!=b&&0<b.length;return c&&u?(d(b),!1):c},null,null,null,k,v?null:[]);b.showDialog(n.container,350,80,!0,!0);n.init()}}}
+function E(b){ma.innerHTML=mxUtils.htmlEntities(mxResources.get(U||b?"create":"copy"));b=b?"none":"";q&&(ga.style.display=b);for(var c=M.querySelectorAll(".geTempDlgLinkToDiagram"),f=0;f<c.length;f++)c[f].style.display=b}function D(c,f,d,e,l){l||(N.innerHTML="",y(),ha=c,ra=e);var m=null;if(d){m=document.createElement("table");m.className="geTempDlgDiagramsListGrid";var g=document.createElement("tr"),p=document.createElement("th");p.style.width="50%";p.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram"));
+g.appendChild(p);p=document.createElement("th");p.style.width="25%";p.innerHTML=mxUtils.htmlEntities(mxResources.get("changedBy"));g.appendChild(p);p=document.createElement("th");p.style.width="25%";p.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn"));g.appendChild(p);m.appendChild(g);N.appendChild(m)}for(g=0;g<c.length;g++){c[g].isExternal=!f;var k=c[g].url,q=(p=mxUtils.htmlEntities(f?mxResources.get(c[g].title,null,c[g].title):c[g].title))||c[g].url,t=c[g].imgUrl,n=mxUtils.htmlEntities(c[g].changedBy||
""),L="";c[g].lastModifiedOn&&(L=b.timeSince(new Date(c[g].lastModifiedOn)),null==L&&(L=mxResources.get("lessThanAMinute")),L=mxUtils.htmlEntities(mxResources.get("timeAgo",[L],"{1} ago")));t||(t=TEMPLATE_PATH+"/"+k.substring(0,k.length-4)+".png");k=d?50:15;null!=p&&p.length>k&&(p=p.substring(0,k)+"&hellip;");if(d){var v=document.createElement("tr"),t=document.createElement("td"),u=document.createElement("img");u.src="/images/icon-search.svg";u.className="geTempDlgDiagramListPreviewBtn";u.setAttribute("title",
-mxResources.get("preview"));l||t.appendChild(u);q=document.createElement("span");q.className="geTempDlgDiagramTitle";q.innerHTML=p;t.appendChild(q);v.appendChild(t);t=document.createElement("td");t.innerHTML=n;v.appendChild(t);t=document.createElement("td");t.innerHTML=L;v.appendChild(t);m.appendChild(v);null==T&&(G(f),y(v,"geTempDlgDiagramsListGridActive",c[g]));(function(b,c,d){mxEvent.addListener(v,"click",function(){T!=c&&(G(f),y(c,"geTempDlgDiagramsListGridActive",b))});mxEvent.addListener(v,
-"dblclick",C);mxEvent.addListener(u,"click",function(f){B(b,c,d,f)})})(c[g],v,u)}else{var x=document.createElement("div");x.className="geTempDlgDiagramTile";x.setAttribute("title",q);null==T&&(G(f),y(x,"geTempDlgDiagramTileActive",c[g]));n=document.createElement("div");n.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var A=document.createElement("img");A.style.display="none";(function(b,c,f){A.onload=function(){c.className="geTempDlgDiagramTileImg";b.style.display=""};A.onerror=
-function(){this.src!=f?this.src=f:c.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(A,n,t?t.replace(".drawio.xml","").replace(".drawio","").replace(".xml",""):"");A.src=t;n.appendChild(A);x.appendChild(n);n=document.createElement("div");n.className="geTempDlgDiagramTileLbl";n.innerHTML=null!=p?p:"";x.appendChild(n);u=document.createElement("img");u.src="/images/icon-search.svg";u.className="geTempDlgDiagramPreviewBtn";u.setAttribute("title",mxResources.get("preview"));l||x.appendChild(u);
-(function(b,c,d){mxEvent.addListener(x,"click",function(){T!=c&&(G(f),y(c,"geTempDlgDiagramTileActive",b))});mxEvent.addListener(x,"dblclick",C);mxEvent.addListener(u,"click",function(f){B(b,c,d,f)})})(c[g],x,u);O.appendChild(x)}}for(var Q in e)c=e[Q],0<c.length&&(l=document.createElement("div"),l.className="geTempDlgImportCat",l.innerHTML=mxResources.get(Q,null,Q),O.appendChild(l),D(c,f,d,null,!0))}function E(b,c){U.innerHTML="";y();for(var f=Math.floor(U.offsetWidth/150)-1,d=!c&&b.length>f?f:b.length,
-e=0;e<d;e++){var l=b[e];l.isCategory=!0;var m=document.createElement("div"),g=mxResources.get(l.title);null==g&&(g=l.title.substring(0,1).toUpperCase()+l.title.substring(1));m.className="geTempDlgNewDiagramCatItem";m.setAttribute("title",g);g=mxUtils.htmlEntities(g);15<g.length&&(g=g.substring(0,15)+"&hellip;");null==T&&(G(!0),y(m,"geTempDlgNewDiagramCatItemActive",l));var p=document.createElement("div");p.className="geTempDlgNewDiagramCatItemImg";var k=document.createElement("img");k.src=NEW_DIAGRAM_CATS_PATH+
-"/"+l.img;p.appendChild(k);m.appendChild(p);p=document.createElement("div");p.className="geTempDlgNewDiagramCatItemLbl";p.innerHTML=g;m.appendChild(p);U.appendChild(m);(function(b,c){mxEvent.addListener(m,"click",function(){T!=c&&(G(!0),y(c,"geTempDlgNewDiagramCatItemActive",b))});mxEvent.addListener(m,"dblclick",C)})(l,m)}m=document.createElement("div");m.className="geTempDlgNewDiagramCatItem";g=mxResources.get("showAllTemps");m.setAttribute("title",g);p=document.createElement("div");p.className=
-"geTempDlgNewDiagramCatItemImg";p.innerHTML="...";p.style.fontSize="32px";m.appendChild(p);p=document.createElement("div");p.className="geTempDlgNewDiagramCatItemLbl";p.innerHTML=g;m.appendChild(p);U.appendChild(m);mxEvent.addListener(m,"click",function(){function b(){var f=c.querySelector(".geTemplateDrawioCatLink");null!=f?f.click():setTimeout(b,200)}V=!0;var c=M.querySelector(".geTemplatesList");c.style.display="block";ca.style.width="";ba.style.display="";ba.value="";la=null;b()});Z.style.display=
-b.length<=f?"none":""}function F(b,c,f){function d(b,c){var f=mxResources.get(b);null==f&&(f=b.substring(0,1).toUpperCase()+b.substring(1));var d=f+" ("+c.length+")",e=f=mxUtils.htmlEntities(f);15<f.length&&(f=f.substring(0,15)+"&hellip;");return{lbl:f+" ("+c.length+")",fullLbl:d,lblOnly:e}}function e(f,d,e,l,m){mxEvent.addListener(e,"click",function(){L!=e&&(null!=L?(L.style.fontWeight="normal",L.style.textDecoration="none"):(ra.style.display="none",pa.style.minHeight="100%"),L=e,L.style.fontWeight=
-"bold",L.style.textDecoration="underline",ca.scrollTop=0,W&&(X=!0),fa.innerHTML=d,Y.style.display="none",D(m?c[f]:l?R[f][l]:b[f],m?!1:!0))})}var l=M.querySelector(".geTemplatesList");if(0<f){f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;margin-top: 10px;";mxUtils.write(f,mxResources.get("custom"));l.appendChild(f);for(var m in c){f=document.createElement("div");var g=c[m],g=d(m,g);f.className="geTemplateCatLink";f.setAttribute("title",
-g.fullLbl);f.innerHTML=g.lbl;l.appendChild(f);e(m,g.lblOnly,f,null,!0)}f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;margin-top: 10px;";mxUtils.write(f,"draw.io");l.appendChild(f)}for(m in b){var p=R[m],k=f=document.createElement(p?"ul":"div"),g=b[m],g=d(m,g);if(null!=p){var q=document.createElement("li"),t=document.createElement("div");t.className="geTempTreeCaret geTemplateCatLink geTemplateDrawioCatLink";t.style.padding=
+mxResources.get("preview"));l||t.appendChild(u);q=document.createElement("span");q.className="geTempDlgDiagramTitle";q.innerHTML=p;t.appendChild(q);v.appendChild(t);t=document.createElement("td");t.innerHTML=n;v.appendChild(t);t=document.createElement("td");t.innerHTML=L;v.appendChild(t);m.appendChild(v);null==X&&(E(f),y(v,"geTempDlgDiagramsListGridActive",c[g]));(function(b,c,d){mxEvent.addListener(v,"click",function(){X!=c&&(E(f),y(c,"geTempDlgDiagramsListGridActive",b))});mxEvent.addListener(v,
+"dblclick",C);mxEvent.addListener(u,"click",function(f){B(b,c,d,f)})})(c[g],v,u)}else{var x=document.createElement("div");x.className="geTempDlgDiagramTile";x.setAttribute("title",q);null==X&&(E(f),y(x,"geTempDlgDiagramTileActive",c[g]));n=document.createElement("div");n.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var z=document.createElement("img");z.style.display="none";(function(b,c,f){z.onload=function(){c.className="geTempDlgDiagramTileImg";b.style.display=""};z.onerror=
+function(){this.src!=f?this.src=f:c.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(z,n,t?t.replace(".drawio.xml","").replace(".drawio","").replace(".xml",""):"");z.src=t;n.appendChild(z);x.appendChild(n);n=document.createElement("div");n.className="geTempDlgDiagramTileLbl";n.innerHTML=null!=p?p:"";x.appendChild(n);u=document.createElement("img");u.src="/images/icon-search.svg";u.className="geTempDlgDiagramPreviewBtn";u.setAttribute("title",mxResources.get("preview"));l||x.appendChild(u);
+(function(b,c,d){mxEvent.addListener(x,"click",function(){X!=c&&(E(f),y(c,"geTempDlgDiagramTileActive",b))});mxEvent.addListener(x,"dblclick",C);mxEvent.addListener(u,"click",function(f){B(b,c,d,f)})})(c[g],x,u);N.appendChild(x)}}for(var P in e)c=e[P],0<c.length&&(l=document.createElement("div"),l.className="geTempDlgImportCat",l.innerHTML=mxResources.get(P,null,P),N.appendChild(l),D(c,f,d,null,!0))}function F(b,c){S.innerHTML="";y();for(var f=Math.floor(S.offsetWidth/150)-1,d=!c&&b.length>f?f:b.length,
+e=0;e<d;e++){var l=b[e];l.isCategory=!0;var m=document.createElement("div"),g=mxResources.get(l.title);null==g&&(g=l.title.substring(0,1).toUpperCase()+l.title.substring(1));m.className="geTempDlgNewDiagramCatItem";m.setAttribute("title",g);g=mxUtils.htmlEntities(g);15<g.length&&(g=g.substring(0,15)+"&hellip;");null==X&&(E(!0),y(m,"geTempDlgNewDiagramCatItemActive",l));var p=document.createElement("div");p.className="geTempDlgNewDiagramCatItemImg";var k=document.createElement("img");k.src=NEW_DIAGRAM_CATS_PATH+
+"/"+l.img;p.appendChild(k);m.appendChild(p);p=document.createElement("div");p.className="geTempDlgNewDiagramCatItemLbl";p.innerHTML=g;m.appendChild(p);S.appendChild(m);(function(b,c){mxEvent.addListener(m,"click",function(){X!=c&&(E(!0),y(c,"geTempDlgNewDiagramCatItemActive",b))});mxEvent.addListener(m,"dblclick",C)})(l,m)}m=document.createElement("div");m.className="geTempDlgNewDiagramCatItem";g=mxResources.get("showAllTemps");m.setAttribute("title",g);p=document.createElement("div");p.className=
+"geTempDlgNewDiagramCatItemImg";p.innerHTML="...";p.style.fontSize="32px";m.appendChild(p);p=document.createElement("div");p.className="geTempDlgNewDiagramCatItemLbl";p.innerHTML=g;m.appendChild(p);S.appendChild(m);mxEvent.addListener(m,"click",function(){function b(){var f=c.querySelector(".geTemplateDrawioCatLink");null!=f?f.click():setTimeout(b,200)}U=!0;var c=M.querySelector(".geTemplatesList");c.style.display="block";ca.style.width="";ba.style.display="";ba.value="";ka=null;b()});Z.style.display=
+b.length<=f?"none":""}function G(b,c,f){function d(b,c){var f=mxResources.get(b);null==f&&(f=b.substring(0,1).toUpperCase()+b.substring(1));var d=f+" ("+c.length+")",e=f=mxUtils.htmlEntities(f);15<f.length&&(f=f.substring(0,15)+"&hellip;");return{lbl:f+" ("+c.length+")",fullLbl:d,lblOnly:e}}function e(f,d,e,l,m){mxEvent.addListener(e,"click",function(){L!=e&&(null!=L?(L.style.fontWeight="normal",L.style.textDecoration="none"):(qa.style.display="none",oa.style.minHeight="100%"),L=e,L.style.fontWeight=
+"bold",L.style.textDecoration="underline",ca.scrollTop=0,V&&(W=!0),fa.innerHTML=d,Y.style.display="none",D(m?c[f]:l?Q[f][l]:b[f],m?!1:!0))})}var l=M.querySelector(".geTemplatesList");if(0<f){f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;margin-top: 10px;";mxUtils.write(f,mxResources.get("custom"));l.appendChild(f);for(var m in c){f=document.createElement("div");var g=c[m],g=d(m,g);f.className="geTemplateCatLink";f.setAttribute("title",
+g.fullLbl);f.innerHTML=g.lbl;l.appendChild(f);e(m,g.lblOnly,f,null,!0)}f=document.createElement("div");f.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;margin-top: 10px;";mxUtils.write(f,"draw.io");l.appendChild(f)}for(m in b){var p=Q[m],k=f=document.createElement(p?"ul":"div"),g=b[m],g=d(m,g);if(null!=p){var q=document.createElement("li"),t=document.createElement("div");t.className="geTempTreeCaret geTemplateCatLink geTemplateDrawioCatLink";t.style.padding=
"0";t.setAttribute("title",g.fullLbl);t.innerHTML=g.lbl;k=t;q.appendChild(t);var n=document.createElement("ul");n.className="geTempTreeNested";n.style.visibility="hidden";for(var v in p){var y=document.createElement("li"),u=d(v,p[v]);y.setAttribute("title",u.fullLbl);y.innerHTML=u.lbl;y.className="geTemplateCatLink";y.style.padding="0";y.style.margin="0";e(m,u.lblOnly,y,v);n.appendChild(y)}q.appendChild(n);f.className="geTempTree";f.appendChild(q);(function(b,c){mxEvent.addListener(c,"click",function(){for(var f=
-b.querySelectorAll("li"),d=0;d<f.length;d++)f[d].style.margin="";b.style.visibility="visible";b.classList.toggle("geTempTreeActive");b.classList.toggle("geTempTreeNested")&&setTimeout(function(){for(var c=0;c<f.length;c++)f[c].style.margin="0";b.style.visibility="hidden"},250);c.classList.toggle("geTempTreeCaret-down")})})(n,t)}else f.className="geTemplateCatLink geTemplateDrawioCatLink",f.setAttribute("title",g.fullLbl),f.innerHTML=g.lbl;l.appendChild(f);e(m,g.lblOnly,k)}}function J(){mxUtils.get(c,
-function(b){if(!ma){ma=!0;b=b.getXml().documentElement.firstChild;for(var c={};null!=b;){if("undefined"!==typeof b.getAttribute)if("clibs"==b.nodeName){for(var f=b.getAttribute("name"),d=b.getElementsByTagName("add"),e=[],l=0;l<d.length;l++)e.push(encodeURIComponent(mxUtils.getTextContent(d[l])));null!=f&&0<e.length&&(c[f]=e.join(";"))}else if(e=b.getAttribute("url"),null!=e){d=b.getAttribute("section");f=b.getAttribute("subsection");if(null==d&&(l=e.indexOf("/"),d=e.substring(0,l),null==f)){var m=
-e.indexOf("/",l+1);-1<m&&(f=e.substring(l+1,m))}l=aa[d];null==l&&(ua++,l=[],aa[d]=l);e=b.getAttribute("clibs");null!=c[e]&&(e=c[e]);e={url:b.getAttribute("url"),libs:b.getAttribute("libs"),title:b.getAttribute("title")||b.getAttribute("name"),preview:b.getAttribute("preview"),clibs:e,tags:b.getAttribute("tags")};l.push(e);null!=f&&(l=R[d],null==l&&(l={},R[d]=l),d=l[f],null==d&&(d=[],l[f]=d),d.push(e))}b=b.nextSibling}F(aa,za,va)}})}function K(b){n&&(ca.scrollTop=0,O.innerHTML="",ja.spin(O),X=!1,W=
-!0,fa.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag")),la=null,n(xa,function(){x(mxResources.get("cannotLoad"));xa([])},b?null:k))}function H(b){if(""==b)null!=Q&&(Q.click(),Q=null);else{if(null==TemplatesDialog.tagsList[c]){var f={},d;for(d in aa)for(var e=aa[d],l=0;l<e.length;l++){var m=e[l];if(null!=m.tags)for(var g=m.tags.toLowerCase().split(";"),p=0;p<g.length;p++)null==f[g[p]]&&(f[g[p]]=[]),f[g[p]].push(m)}TemplatesDialog.tagsList[c]=f}var k=b.toLowerCase().split(" "),f=TemplatesDialog.tagsList[c];
-if(0<va&&null==f.__tagsList__){for(d in za)for(e=za[d],l=0;l<e.length;l++)for(m=e[l],g=m.title.split(" "),g.push(d),p=0;p<g.length;p++){var t=g[p].toLowerCase();null==f[t]&&(f[t]=[]);f[t].push(m)}f.__tagsList__=!0}d=[];e={};for(l=g=0;l<k.length;l++)if(0<k[l].length){var t=f[k[l]],q={};d=[];if(null!=t)for(p=0;p<t.length;p++)m=t[p],0==g==(null==e[m.url])&&(q[m.url]=!0,d.push(m));e=q;g++}0==d.length?fa.innerHTML=mxResources.get("noResultsFor",[b]):D(d,!0)}}function I(b){if(la!=b||ea!=ka)A(),ca.scrollTop=
-0,O.innerHTML="",fa.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults"))+' "'+mxUtils.htmlEntities(b)+'"',wa=null,V?H(b):f&&(b?(ja.spin(O),X=!1,W=!0,f(b,xa,function(){x(mxResources.get("searchFailed"));xa([])},ea?null:k)):K(ea)),la=b,ka=ea}function S(b){null!=wa&&clearTimeout(wa);13==b.keyCode?I(ba.value):wa=setTimeout(function(){I(ba.value)},1E3)}var P='<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" '+
+b.querySelectorAll("li"),d=0;d<f.length;d++)f[d].style.margin="";b.style.visibility="visible";b.classList.toggle("geTempTreeActive");b.classList.toggle("geTempTreeNested")&&setTimeout(function(){for(var c=0;c<f.length;c++)f[c].style.margin="0";b.style.visibility="hidden"},250);c.classList.toggle("geTempTreeCaret-down")})})(n,t)}else f.className="geTemplateCatLink geTemplateDrawioCatLink",f.setAttribute("title",g.fullLbl),f.innerHTML=g.lbl;l.appendChild(f);e(m,g.lblOnly,k)}}function I(){mxUtils.get(c,
+function(b){if(!la){la=!0;b=b.getXml().documentElement.firstChild;for(var c={};null!=b;){if("undefined"!==typeof b.getAttribute)if("clibs"==b.nodeName){for(var f=b.getAttribute("name"),d=b.getElementsByTagName("add"),e=[],l=0;l<d.length;l++)e.push(encodeURIComponent(mxUtils.getTextContent(d[l])));null!=f&&0<e.length&&(c[f]=e.join(";"))}else if(e=b.getAttribute("url"),null!=e){d=b.getAttribute("section");f=b.getAttribute("subsection");if(null==d&&(l=e.indexOf("/"),d=e.substring(0,l),null==f)){var m=
+e.indexOf("/",l+1);-1<m&&(f=e.substring(l+1,m))}l=aa[d];null==l&&(ua++,l=[],aa[d]=l);e=b.getAttribute("clibs");null!=c[e]&&(e=c[e]);e={url:b.getAttribute("url"),libs:b.getAttribute("libs"),title:b.getAttribute("title")||b.getAttribute("name"),preview:b.getAttribute("preview"),clibs:e,tags:b.getAttribute("tags")};l.push(e);null!=f&&(l=Q[d],null==l&&(l={},Q[d]=l),d=l[f],null==d&&(d=[],l[f]=d),d.push(e))}b=b.nextSibling}G(aa,za,va)}})}function J(b){n&&(ca.scrollTop=0,N.innerHTML="",ia.spin(N),W=!1,V=
+!0,fa.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag")),ka=null,n(xa,function(){x(mxResources.get("cannotLoad"));xa([])},b?null:k))}function H(b){if(""==b)null!=P&&(P.click(),P=null);else{if(null==TemplatesDialog.tagsList[c]){var f={},d;for(d in aa)for(var e=aa[d],l=0;l<e.length;l++){var m=e[l];if(null!=m.tags)for(var g=m.tags.toLowerCase().split(";"),p=0;p<g.length;p++)null==f[g[p]]&&(f[g[p]]=[]),f[g[p]].push(m)}TemplatesDialog.tagsList[c]=f}var k=b.toLowerCase().split(" "),f=TemplatesDialog.tagsList[c];
+if(0<va&&null==f.__tagsList__){for(d in za)for(e=za[d],l=0;l<e.length;l++)for(m=e[l],g=m.title.split(" "),g.push(d),p=0;p<g.length;p++){var q=g[p].toLowerCase();null==f[q]&&(f[q]=[]);f[q].push(m)}f.__tagsList__=!0}d=[];e={};for(l=g=0;l<k.length;l++)if(0<k[l].length){var q=f[k[l]],t={};d=[];if(null!=q)for(p=0;p<q.length;p++)m=q[p],0==g==(null==e[m.url])&&(t[m.url]=!0,d.push(m));e=t;g++}0==d.length?fa.innerHTML=mxResources.get("noResultsFor",[b]):D(d,!0)}}function K(b){if(ka!=b||ea!=ja)z(),ca.scrollTop=
+0,N.innerHTML="",fa.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults"))+' "'+mxUtils.htmlEntities(b)+'"',wa=null,U?H(b):f&&(b?(ia.spin(N),W=!1,V=!0,f(b,xa,function(){x(mxResources.get("searchFailed"));xa([])},ea?null:k)):J(ea)),ka=b,ja=ea}function R(b){null!=wa&&clearTimeout(wa);13==b.keyCode?K(ba.value):wa=setTimeout(function(){K(ba.value)},1E3)}var O='<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" '+
(f?"":'style="display: none"')+' placeholder="'+mxResources.get("search")+'"></div><div class="geTemplatesList" style="display: none"><div class="geTempDlgBack">&lt; '+mxResources.get("back")+'</div><div class="geTempDlgHLine"></div><div class="geTemplatesLbl">'+mxResources.get("templates")+'</div></div><div class="geTempDlgContent" style="width: 100%"><div class="geTempDlgNewDiagramCat"><div class="geTempDlgNewDiagramCatLbl">'+mxResources.get("newDiagram")+'</div><div class="geTempDlgNewDiagramCatList"></div><div class="geTempDlgNewDiagramCatFooter"><div class="geTempDlgShowAllBtn">'+
mxResources.get("showMore")+'</div></div></div><div class="geTempDlgDiagramsList"><div class="geTempDlgDiagramsListHeader"><div class="geTempDlgDiagramsListTitle"></div><div class="geTempDlgDiagramsListBtns"><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge" data-id="myDiagramsBtn"><img src="/images/my-diagrams.svg" class="geTempDlgMyDiagramsBtnImg"> <span>'+mxResources.get("myDiagrams")+'</span></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnLarge geTempDlgRadioBtnActive" data-id="allDiagramsBtn"><img src="/images/all-diagrams-sel.svg" class="geTempDlgAllDiagramsBtnImg"> <span>'+
mxResources.get("allDiagrams")+'</span></div><div class="geTempDlgSpacer"> </div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall geTempDlgRadioBtnActive" data-id="tilesBtn"><img src="/images/tiles-sel.svg" class="geTempDlgTilesBtnImg"></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall" data-id="listBtn"><img src="/images/list.svg" class="geTempDlgListBtnImg"></div></div></div><div class="geTempDlgDiagramsTiles"></div></div></div><br style="clear:both;"/><div class="geTempDlgFooter"><div class="geTempDlgErrMsg"></div>'+
-(t?'<span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">'+mxResources.get("linkToDiagramHint")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram")+"</button>":"")+(q?'<div class="geTempDlgOpenBtn">'+mxResources.get("open")+"</div>":"")+'<div class="geTempDlgCreateBtn">'+mxResources.get("create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel")+"</div></div>",M=document.createElement("div");M.innerHTML=P;M.className=
-"geTemplateDlg";this.container=M;c=null!=c?c:TEMPLATE_PATH+"/index.xml";g=null!=g?g:NEW_DIAGRAM_CATS_PATH+"/index.xml";var W=!1,X=!1,L=null,Q=null,T=null,da=null,oa=!1,ea=!0,N=!1,ha=[],sa=null,la,ka,V=!1,Z=M.querySelector(".geTempDlgShowAllBtn"),O=M.querySelector(".geTempDlgDiagramsTiles"),fa=M.querySelector(".geTempDlgDiagramsListTitle"),Y=M.querySelector(".geTempDlgDiagramsListBtns"),ca=M.querySelector(".geTempDlgContent"),pa=M.querySelector(".geTempDlgDiagramsList"),ra=M.querySelector(".geTempDlgNewDiagramCat"),
-U=M.querySelector(".geTempDlgNewDiagramCatList"),na=M.querySelector(".geTempDlgCreateBtn"),ga=M.querySelector(".geTempDlgOpenBtn"),ba=M.querySelector(".geTempDlgSearchBox"),ta=M.querySelector(".geTempDlgErrMsg"),ja=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(M.querySelector(".geTempDlgBack"),"click",function(){A();V=!1;M.querySelector(".geTemplatesList").style.display="none";ca.style.width=
-"100%";ra.style.display="";pa.style.minHeight="calc(100% - 280px)";ba.style.display=f?"":"none";ba.value="";la=null;K(ea)});mxEvent.addListener(M.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){z(this,"geTempDlgAllDiagramsBtnImg","all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(ea=!0,null==la?K(ea):I(la))});mxEvent.addListener(M.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){z(this,"geTempDlgMyDiagramsBtnImg",
-"my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(ea=!1,null==la?K(ea):I(la))});mxEvent.addListener(M.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){z(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg","tiles",!1)&&(N=!0,D(ha,!1,N,sa))});mxEvent.addListener(M.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){z(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(N=!1,D(ha,!1,
-N,sa))});var qa=!1;mxEvent.addListener(Z,"click",function(){oa?(ra.style.height="280px",U.style.height="190px",Z.innerHTML=mxUtils.htmlEntities(mxResources.get("showMore")),E(ya)):(ra.style.height="440px",U.style.height="355px",Z.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess")),E(ya,!0));oa=!oa});var ma=!1,ia=!1,aa={},R={},za={},ya=[],ua=1,va=0;null!=p?p(function(b,c){za=b;va=c;J()},J):J();mxUtils.get(g,function(b){if(!ia){ia=!0;for(b=b.getXml().documentElement.firstChild;null!=b;)"undefined"!==
-typeof b.getAttribute&&null!=b.getAttribute("title")&&ya.push({img:b.getAttribute("img"),libs:b.getAttribute("libs"),clibs:b.getAttribute("clibs"),title:b.getAttribute("title")}),b=b.nextSibling;E(ya)}});var xa=function(b,c,f){Y.style.display="";ja.stop();W=!1;if(X)X=!1;else if(c)O.innerHTML=c;else{f=f||{};c=0;for(var d in f)c+=f[d].length;0==b.length&&0==c?O.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams")):D(b,!1,N,0==c?null:f)}};K(ea);var wa=null;mxEvent.addListener(ba,"keyup",S);mxEvent.addListener(ba,
-"search",S);mxEvent.addListener(ba,"input",S);mxEvent.addListener(na,"click",function(b){C(!1,!1)});q&&mxEvent.addListener(ga,"click",function(b){C(!1,!0)});t&&mxEvent.addListener(M.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(b){C(!0)});mxEvent.addListener(M.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=d&&d();u||b.hideDialog(!0)})};TemplatesDialog.tagsList={};
+(t?'<span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">'+mxResources.get("linkToDiagramHint")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram")+"</button>":"")+(q?'<div class="geTempDlgOpenBtn">'+mxResources.get("open")+"</div>":"")+'<div class="geTempDlgCreateBtn">'+mxResources.get("create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel")+"</div></div>",M=document.createElement("div");M.innerHTML=O;M.className=
+"geTemplateDlg";this.container=M;c=null!=c?c:TEMPLATE_PATH+"/index.xml";g=null!=g?g:NEW_DIAGRAM_CATS_PATH+"/index.xml";var V=!1,W=!1,L=null,P=null,X=null,da=null,na=!1,ea=!0,T=!1,ha=[],ra=null,ka,ja,U=!1,Z=M.querySelector(".geTempDlgShowAllBtn"),N=M.querySelector(".geTempDlgDiagramsTiles"),fa=M.querySelector(".geTempDlgDiagramsListTitle"),Y=M.querySelector(".geTempDlgDiagramsListBtns"),ca=M.querySelector(".geTempDlgContent"),oa=M.querySelector(".geTempDlgDiagramsList"),qa=M.querySelector(".geTempDlgNewDiagramCat"),
+S=M.querySelector(".geTempDlgNewDiagramCatList"),ma=M.querySelector(".geTempDlgCreateBtn"),ga=M.querySelector(".geTempDlgOpenBtn"),ba=M.querySelector(".geTempDlgSearchBox"),ta=M.querySelector(".geTempDlgErrMsg"),ia=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(M.querySelector(".geTempDlgBack"),"click",function(){z();U=!1;M.querySelector(".geTemplatesList").style.display="none";ca.style.width=
+"100%";qa.style.display="";oa.style.minHeight="calc(100% - 280px)";ba.style.display=f?"":"none";ba.value="";ka=null;J(ea)});mxEvent.addListener(M.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){A(this,"geTempDlgAllDiagramsBtnImg","all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(ea=!0,null==ka?J(ea):K(ka))});mxEvent.addListener(M.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){A(this,"geTempDlgMyDiagramsBtnImg",
+"my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(ea=!1,null==ka?J(ea):K(ka))});mxEvent.addListener(M.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){A(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg","tiles",!1)&&(T=!0,D(ha,!1,T,ra))});mxEvent.addListener(M.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){A(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(T=!1,D(ha,!1,
+T,ra))});var pa=!1;mxEvent.addListener(Z,"click",function(){na?(qa.style.height="280px",S.style.height="190px",Z.innerHTML=mxUtils.htmlEntities(mxResources.get("showMore")),F(ya)):(qa.style.height="440px",S.style.height="355px",Z.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess")),F(ya,!0));na=!na});var la=!1,sa=!1,aa={},Q={},za={},ya=[],ua=1,va=0;null!=p?p(function(b,c){za=b;va=c;I()},I):I();mxUtils.get(g,function(b){if(!sa){sa=!0;for(b=b.getXml().documentElement.firstChild;null!=b;)"undefined"!==
+typeof b.getAttribute&&null!=b.getAttribute("title")&&ya.push({img:b.getAttribute("img"),libs:b.getAttribute("libs"),clibs:b.getAttribute("clibs"),title:b.getAttribute("title")}),b=b.nextSibling;F(ya)}});var xa=function(b,c,f){Y.style.display="";ia.stop();V=!1;if(W)W=!1;else if(c)N.innerHTML=c;else{f=f||{};c=0;for(var d in f)c+=f[d].length;0==b.length&&0==c?N.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams")):D(b,!1,T,0==c?null:f)}};J(ea);var wa=null;mxEvent.addListener(ba,"keyup",R);mxEvent.addListener(ba,
+"search",R);mxEvent.addListener(ba,"input",R);mxEvent.addListener(ma,"click",function(b){C(!1,!1)});q&&mxEvent.addListener(ga,"click",function(b){C(!1,!0)});t&&mxEvent.addListener(M.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(b){C(!0)});mxEvent.addListener(M.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=d&&d();u||b.hideDialog(!0)})};TemplatesDialog.tagsList={};
var BtnDialog=function(b,e,d,c){var g=document.createElement("div");g.style.textAlign="center";var k=document.createElement("p");k.style.fontSize="16pt";k.style.padding="0px";k.style.margin="0px";k.style.color="gray";mxUtils.write(k,mxResources.get("done"));var n="Unknown",f=document.createElement("img");f.setAttribute("border","0");f.setAttribute("align","absmiddle");f.style.marginRight="10px";e==b.drive?(n=mxResources.get("googleDrive"),f.src=IMAGE_PATH+"/google-drive-logo-white.svg"):e==b.dropbox?
(n=mxResources.get("dropbox"),f.src=IMAGE_PATH+"/dropbox-logo-white.svg"):e==b.oneDrive?(n=mxResources.get("oneDrive"),f.src=IMAGE_PATH+"/onedrive-logo-white.svg"):e==b.gitHub?(n=mxResources.get("github"),f.src=IMAGE_PATH+"/github-logo-white.svg"):e==b.gitLab?(n=mxResources.get("gitlab"),f.src=IMAGE_PATH+"/gitlab-logo.svg"):e==b.notion?(n=mxResources.get("notion"),f.src=IMAGE_PATH+"/notion-logo.svg"):e==b.trello&&(n=mxResources.get("trello"),f.src=IMAGE_PATH+"/trello-logo-white.svg");b=document.createElement("p");
mxUtils.write(b,mxResources.get("authorizedIn",[n],"You are now authorized in {1}"));d=mxUtils.button(d,c);d.insertBefore(f,d.firstChild);d.style.marginTop="6px";d.className="geBigButton";d.style.fontSize="18px";d.style.padding="14px";g.appendChild(k);g.appendChild(b);g.appendChild(d);this.container=g},FontDialog=function(b,e,d,c,g){function k(b){this.style.border="";13==b.keyCode&&B.click()}var n,f,l,m=document.createElement("table"),p=document.createElement("tbody");m.style.marginTop="8px";n=document.createElement("tr");
@@ -10492,12 +10492,12 @@ n.appendChild(f);p.appendChild(n);n=document.createElement("tr");f=document.crea
"fontdialog-googlefonts");mxUtils.write(l,mxResources.get("googleFonts",null,"Google Fonts"));f.appendChild(l);mxClient.IS_CHROMEAPP||b.isOffline()&&!EditorUi.isElectronApp||(l=b.menus.createHelpLink("https://fonts.google.com/"),l.getElementsByTagName("img")[0].setAttribute("valign","middle"),f.appendChild(l));n.appendChild(f);p.appendChild(n);n=document.createElement("tr");f=document.createElement("td");f.style.whiteSpace="nowrap";f.style.fontSize="10pt";f.style.width="120px";f.style.paddingLeft=
"15px";mxUtils.write(f,mxResources.get("fontname",null,"Font Name")+":");n.appendChild(f);var u=document.createElement("input");"g"==c&&u.setAttribute("value",e);u.style.marginLeft="4px";u.style.width="250px";u.className="dlg_fontName_g";f=document.createElement("td");f.appendChild(u);n.appendChild(f);p.appendChild(n);n=document.createElement("tr");f=document.createElement("td");f.colSpan=2;f.style.whiteSpace="nowrap";f.style.fontSize="10pt";f.style.fontWeight="bold";var x=document.createElement("input");
x.style.cssText="margin-right:8px;margin-bottom:8px;";x.setAttribute("value","webfonts");x.setAttribute("type","radio");x.setAttribute("name","current-fontdialog");x.setAttribute("id","fontdialog-webfonts");f.appendChild(x);l=document.createElement("label");l.setAttribute("for","fontdialog-webfonts");mxUtils.write(l,mxResources.get("webfonts",null,"Web Fonts"));f.appendChild(l);n.appendChild(f);Editor.enableWebFonts&&p.appendChild(n);n=document.createElement("tr");f=document.createElement("td");f.style.whiteSpace=
-"nowrap";f.style.fontSize="10pt";f.style.width="120px";f.style.paddingLeft="15px";mxUtils.write(f,mxResources.get("fontname",null,"Font Name")+":");n.appendChild(f);var A=document.createElement("input");"w"==c&&(Editor.enableWebFonts?A.setAttribute("value",e):t.setAttribute("value",e));A.style.marginLeft="4px";A.style.width="250px";A.className="dlg_fontName_w";f=document.createElement("td");f.appendChild(A);n.appendChild(f);Editor.enableWebFonts&&p.appendChild(n);n=document.createElement("tr");f=
-document.createElement("td");f.style.whiteSpace="nowrap";f.style.fontSize="10pt";f.style.width="120px";f.style.paddingLeft="15px";mxUtils.write(f,mxResources.get("fontUrl",null,"Font URL")+":");n.appendChild(f);var z=document.createElement("input");z.setAttribute("value",d||"");z.style.marginLeft="4px";z.style.width="250px";z.className="dlg_fontUrl";f=document.createElement("td");f.appendChild(z);n.appendChild(f);Editor.enableWebFonts&&p.appendChild(n);this.init=function(){var b=t;"g"==c?b=u:"w"==
-c&&Editor.enableWebFonts&&(b=A);b.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?b.select():document.execCommand("selectAll",!1,null)};n=document.createElement("tr");f=document.createElement("td");f.colSpan=2;f.style.paddingTop="20px";f.style.whiteSpace="nowrap";f.setAttribute("align","right");b.isOffline()||(e=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://www.diagrams.net/blog/external-fonts")}),e.className="geBtn",f.appendChild(e));e=mxUtils.button(mxResources.get("cancel"),
-function(){b.hideDialog();g()});e.className="geBtn";b.editor.cancelFirst&&f.appendChild(e);var B=mxUtils.button(mxResources.get("apply"),function(){var c,f,d;q.checked?(c=t.value,d="s"):v.checked?(c=u.value,f=Editor.GOOGLE_FONTS+encodeURIComponent(c).replace(/%20/g,"+"),d="g"):x.checked&&(c=A.value,f=z.value,d="w");var e;e=f;var l=d,p=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;null==c||0==c.length?(m.querySelector(".dlg_fontName_"+l).style.border="1px solid red",
-e=!1):"w"!=l||p.test(e)?e=!0:(m.querySelector(".dlg_fontUrl").style.border="1px solid red",e=!1);e&&(g(c,f,d),b.hideDialog())});B.className="geBtn gePrimaryBtn";mxEvent.addListener(t,"keypress",k);mxEvent.addListener(u,"keypress",k);mxEvent.addListener(A,"keypress",k);mxEvent.addListener(z,"keypress",k);mxEvent.addListener(t,"focus",function(){q.setAttribute("checked","checked");q.checked=!0});mxEvent.addListener(u,"focus",function(){v.setAttribute("checked","checked");v.checked=!0});mxEvent.addListener(A,
-"focus",function(){x.setAttribute("checked","checked");x.checked=!0});mxEvent.addListener(z,"focus",function(){x.setAttribute("checked","checked");x.checked=!0});f.appendChild(B);b.editor.cancelFirst||f.appendChild(e);n.appendChild(f);p.appendChild(n);m.appendChild(p);this.container=m};
+"nowrap";f.style.fontSize="10pt";f.style.width="120px";f.style.paddingLeft="15px";mxUtils.write(f,mxResources.get("fontname",null,"Font Name")+":");n.appendChild(f);var z=document.createElement("input");"w"==c&&(Editor.enableWebFonts?z.setAttribute("value",e):t.setAttribute("value",e));z.style.marginLeft="4px";z.style.width="250px";z.className="dlg_fontName_w";f=document.createElement("td");f.appendChild(z);n.appendChild(f);Editor.enableWebFonts&&p.appendChild(n);n=document.createElement("tr");f=
+document.createElement("td");f.style.whiteSpace="nowrap";f.style.fontSize="10pt";f.style.width="120px";f.style.paddingLeft="15px";mxUtils.write(f,mxResources.get("fontUrl",null,"Font URL")+":");n.appendChild(f);var A=document.createElement("input");A.setAttribute("value",d||"");A.style.marginLeft="4px";A.style.width="250px";A.className="dlg_fontUrl";f=document.createElement("td");f.appendChild(A);n.appendChild(f);Editor.enableWebFonts&&p.appendChild(n);this.init=function(){var b=t;"g"==c?b=u:"w"==
+c&&Editor.enableWebFonts&&(b=z);b.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?b.select():document.execCommand("selectAll",!1,null)};n=document.createElement("tr");f=document.createElement("td");f.colSpan=2;f.style.paddingTop="20px";f.style.whiteSpace="nowrap";f.setAttribute("align","right");b.isOffline()||(e=mxUtils.button(mxResources.get("help"),function(){b.openLink("https://www.diagrams.net/blog/external-fonts")}),e.className="geBtn",f.appendChild(e));e=mxUtils.button(mxResources.get("cancel"),
+function(){b.hideDialog();g()});e.className="geBtn";b.editor.cancelFirst&&f.appendChild(e);var B=mxUtils.button(mxResources.get("apply"),function(){var c,f,d;q.checked?(c=t.value,d="s"):v.checked?(c=u.value,f=Editor.GOOGLE_FONTS+encodeURIComponent(c).replace(/%20/g,"+"),d="g"):x.checked&&(c=z.value,f=A.value,d="w");var e;e=f;var l=d,p=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;null==c||0==c.length?(m.querySelector(".dlg_fontName_"+l).style.border="1px solid red",
+e=!1):"w"!=l||p.test(e)?e=!0:(m.querySelector(".dlg_fontUrl").style.border="1px solid red",e=!1);e&&(g(c,f,d),b.hideDialog())});B.className="geBtn gePrimaryBtn";mxEvent.addListener(t,"keypress",k);mxEvent.addListener(u,"keypress",k);mxEvent.addListener(z,"keypress",k);mxEvent.addListener(A,"keypress",k);mxEvent.addListener(t,"focus",function(){q.setAttribute("checked","checked");q.checked=!0});mxEvent.addListener(u,"focus",function(){v.setAttribute("checked","checked");v.checked=!0});mxEvent.addListener(z,
+"focus",function(){x.setAttribute("checked","checked");x.checked=!0});mxEvent.addListener(A,"focus",function(){x.setAttribute("checked","checked");x.checked=!0});f.appendChild(B);b.editor.cancelFirst||f.appendChild(e);n.appendChild(f);p.appendChild(n);m.appendChild(p);this.container=m};
function AspectDialog(b,e,d,c,g){this.aspect={pageId:e||(b.pages?b.pages[0].getId():null),layerIds:d||[]};e=document.createElement("div");var k=document.createElement("h5");k.style.margin="0 0 10px";mxUtils.write(k,mxResources.get("pages"));e.appendChild(k);d=document.createElement("div");d.className="geAspectDlgList";e.appendChild(d);k=document.createElement("h5");k.style.margin="0 0 10px";mxUtils.write(k,mxResources.get("layers"));e.appendChild(k);k=document.createElement("div");k.className="geAspectDlgList";
e.appendChild(k);this.pagesContainer=d;this.layersContainer=k;this.ui=b;d=document.createElement("div");d.style.marginTop="16px";d.style.textAlign="center";k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog();null!=g&&g()});k.className="geBtn";b.editor.cancelFirst&&d.appendChild(k);var n=mxUtils.button(mxResources.get("ok"),mxUtils.bind(this,function(){b.hideDialog();c({pageId:this.selectedPage,layerIds:Object.keys(this.selectedLayers)})}));d.appendChild(n);n.className="geBtn gePrimaryBtn";
b.editor.cancelFirst||d.appendChild(k);n.setAttribute("disabled","disabled");this.okBtn=n;e.appendChild(d);this.container=e}AspectDialog.prototype.init=function(){var b=this.ui.getFileData(!0);if(this.ui.pages)for(b=0;b<this.ui.pages.length;b++){var e=this.ui.updatePageRoot(this.ui.pages[b]);this.createPageItem(e.getId(),e.getName(),e.node)}else this.createPageItem("1","Page-1",mxUtils.parseXml(b).documentElement)};
@@ -10512,12 +10512,22 @@ d.style.whiteSpace="nowrap";d.style.fontSize="10pt";d.style.width="120px";mxUtil
mxUtils.write(d,mxResources.get("borderWidth")+":");e.appendChild(d);var m=document.createElement("input");m.setAttribute("value",f);m.style.marginLeft="4px";m.style.width="180px";d=document.createElement("td");d.style.whiteSpace="nowrap";d.appendChild(m);e.appendChild(d);g.appendChild(e);this.init=function(){l.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?l.select():document.execCommand("selectAll",!1,null)};d=function(){null!=b.fileNode&&(b.fileNode.setAttribute("scale",Math.max(0,
parseInt(l.value)/100)),b.fileNode.setAttribute("border",Math.max(0,parseInt(m.value))),null!=k&&k.fileChanged());b.hideDialog()}}else{n=null!=k?k.isCompressed():Editor.compressXml;e=document.createElement("tr");d=document.createElement("td");d.style.whiteSpace="nowrap";d.style.fontSize="10pt";d.style.width="120px";mxUtils.write(d,mxResources.get("compressed")+":");e.appendChild(d);var p=document.createElement("input");p.setAttribute("type","checkbox");n&&(p.setAttribute("checked","checked"),p.defaultChecked=
!0);d=document.createElement("td");d.style.whiteSpace="nowrap";d.appendChild(p);e.appendChild(d);g.appendChild(e);this.init=function(){p.focus()};d=function(){null!=b.fileNode&&(b.fileNode.setAttribute("compressed",p.checked?"true":"false"),null!=k&&k.fileChanged());b.hideDialog()}}n=mxUtils.button(mxResources.get("apply"),d);n.className="geBtn gePrimaryBtn";e=document.createElement("tr");d=document.createElement("td");d.colSpan=2;d.style.paddingTop="20px";d.style.whiteSpace="nowrap";d.setAttribute("align",
-"right");f=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});f.className="geBtn";b.editor.cancelFirst&&d.appendChild(f);d.appendChild(n);b.editor.cancelFirst||d.appendChild(f);e.appendChild(d);g.appendChild(e);c.appendChild(g);this.container=c},ConnectionPointsDialog=function(b,e){var d=document.createElement("div");d.style.userSelect="none";this.init=function(){var c=document.createElement("div");c.style.width="300px";c.style.height="300px";c.style.overflow="hidden";c.style.border=
-"1px solid lightGray";c.style.boxSizing="border-box";d.appendChild(c);var g=new Graph(c);g.autoExtend=!1;g.autoScroll=!1;g.setGridEnabled(!1);g.setEnabled(!0);g.setPanning(!1);g.setConnectable(!1);g.getRubberband().setEnabled(!1);g.setTooltips(!1);g.minFitScale=null;g.maxFitScale=null;g.centerZoom=!0;g.maxFitScale=2;g.dblClick=function(b,c){var f=mxUtils.convertPoint(g.container,mxEvent.getClientX(b),mxEvent.getClientY(b));mxEvent.consume(b);var d=g.view.scale,e=g.view.translate,f=new mxCell("",new mxGeometry((f.x-
-3)/d-e.x,(f.y-3)/d-e.y,6,6),"ellipse;fillColor=#000000;strokeColor=#000000;points=[];rotatable=0;resizable=0;connectable=0;editable=0;");f.vertex=!0;f.cp=!0;g.addCell(f)};var c=e.geometry,k=new mxCell("",new mxGeometry(0,0,c.width,c.height),e.style+";rotatable=0;resizable=0;connectable=0;editable=0;movable=0;");k.vertex=!0;g.addCell(k);var n=g.isCellSelectable;g.isCellSelectable=function(b){return b==k?!1:n.apply(this,arguments)};for(var c=g.view.getState(k),f=g.getAllConnectionConstraints(c),l=0;null!=
-f&&l<f.length;l++){var m=g.getConnectionPoint(c,f[l]),m=new mxCell("",new mxGeometry(m.x-3,m.y-3,6,6),"ellipse;fillColor=#000000;strokeColor=#000000;points=[];rotatable=0;resizable=0;connectable=0;editable=0;");m.vertex=!0;m.cp=!0;g.addCell(m)}g.fit(8);g.center();c=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});c.className="geBtn";f=mxUtils.button(mxResources.get("apply"),function(){var c=g.model.cells,f=[],d=k.geometry,l;for(l in c){var m=c[l];if(m.cp){var n=0,A=0,z=mxUtils.format((m.geometry.x+
-3-d.x)/d.width),m=mxUtils.format((m.geometry.y+3-d.y)/d.height);0>z?(n=z*d.width,z=0):1<z&&(n=(z-1)*d.width,z=1);0>m?(A=m*d.height,m=0):1<m&&(A=(m-1)*d.height,m=1);f.push("["+z+","+m+",0,"+n+","+A+"]")}}b.editor.graph.setCellStyles("points","["+f.join(",")+"]",[e]);b.hideDialog()});f.className="geBtn gePrimaryBtn";l=mxUtils.button(mxResources.get("reset"),function(){b.editor.graph.setCellStyles("points",null,[e]);b.hideDialog()});l.className="geBtn";m=document.createElement("div");m.style.marginTop=
-"10px";m.style.textAlign="right";b.editor.cancelFirst?(m.appendChild(c),m.appendChild(l),m.appendChild(f)):(m.appendChild(l),m.appendChild(f),m.appendChild(c));d.appendChild(m)};this.container=d};(function(){"undefined"!==typeof html4&&(html4.ATTRIBS["span::data-lucid-content"]=0,html4.ATTRIBS["span::data-lucid-type"]=0,html4.ATTRIBS["font::data-font-src"]=0);Editor.prototype.appName="diagrams.net";Editor.prototype.diagramFileTypes=[{description:"diagramXmlDesc",extension:"drawio",mimeType:"text/xml"},{description:"diagramPngDesc",extension:"png",mimeType:"image/png"},{description:"diagramSvgDesc",extension:"svg",mimeType:"image/svg"},{description:"diagramHtmlDesc",extension:"html",mimeType:"text/html"},
+"right");f=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});f.className="geBtn";b.editor.cancelFirst&&d.appendChild(f);d.appendChild(n);b.editor.cancelFirst||d.appendChild(f);e.appendChild(d);g.appendChild(e);c.appendChild(g);this.container=c},ConnectionPointsDialog=function(b,e){function d(){null!=g&&g.destroy()}var c=document.createElement("div");c.style.userSelect="none";var g=null;this.init=function(){function k(b,c){var f=new mxCell("",new mxGeometry(b,c,6,6),"shape=mxgraph.basic.x;fillColor=#29b6f2;strokeColor=#29b6f2;points=[];rotatable=0;resizable=0;connectable=0;editable=0;");
+f.vertex=!0;f.cp=!0;q.addCell(f)}function n(b){b=q.getSelectionCells();q.deleteCells(b)}function f(){var b=parseInt(G.value)||0,b=0>b?0:100<b?100:b;G.value=b;var c=parseInt(I.value)||0,c=0>c?0:100<c?100:c;I.value=c;var f=parseInt(J.value)||0,d=parseInt(H.value)||0,b=q.getConnectionPoint(u,new mxConnectionConstraint(new mxPoint(b/100,c/100),!1,null,f,d)),c=q.getSelectionCell();if(null!=c){var f=c.geometry.clone(),d=q.view.scale,e=q.view.translate;f.x=(b.x-3*d)/d-e.x;f.y=(b.y-3*d)/d-e.y;q.model.setGeometry(c,
+f)}}function l(b){var c=0,f=0,d=t.geometry,e=mxUtils.format((b.geometry.x+3-d.x)/d.width);b=mxUtils.format((b.geometry.y+3-d.y)/d.height);0>e?(c=e*d.width,e=0):1<e&&(c=(e-1)*d.width,e=1);0>b?(f=b*d.height,b=0):1<b&&(f=(b-1)*d.height,b=1);return{x:e,y:b,dx:parseInt(c),dy:parseInt(f)}}function m(){if(1==q.getSelectionCount()){var b=q.getSelectionCell(),b=l(b);G.value=100*b.x;I.value=100*b.y;J.value=b.dx;H.value=b.dy;F.style.display="";C.style.display="none"}else F.style.display="none",C.style.display=
+""}var p=document.createElement("div");p.style.width="350px";p.style.height="350px";p.style.overflow="hidden";p.style.border="1px solid lightGray";p.style.boxSizing="border-box";mxEvent.disableContextMenu(p);c.appendChild(p);var q=new Graph(p);q.autoExtend=!1;q.autoScroll=!1;q.setGridEnabled(!1);q.setEnabled(!0);q.setPanning(!0);q.setConnectable(!1);q.setTooltips(!1);q.minFitScale=null;q.maxFitScale=null;q.centerZoom=!0;q.maxFitScale=2;q.dblClick=function(b,c){var f=mxUtils.convertPoint(q.container,
+mxEvent.getClientX(b),mxEvent.getClientY(b));mxEvent.consume(b);var d=q.view.scale,e=q.view.translate;k((f.x-3*d)/d-e.x,(f.y-3*d)/d-e.y)};g=new mxKeyHandler(q);g.bindKey(46,n);g.bindKey(8,n);var p=e.geometry,t=new mxCell("",new mxGeometry(0,0,p.width,p.height),e.style+";rotatable=0;resizable=0;connectable=0;editable=0;movable=0;");t.vertex=!0;q.addCell(t);q.getRubberband().isForceRubberbandEvent=function(b){return 0==b.evt.button&&(null==b.getCell()||b.getCell()==t)};q.panningHandler.isForcePanningEvent=
+function(b){return 2==b.evt.button};var v=q.isCellSelectable;q.isCellSelectable=function(b){return b==t?!1:v.apply(this,arguments)};q.getLinkForCell=function(){return null};for(var u=q.view.getState(t),x=q.getAllConnectionConstraints(u),p=0;null!=x&&p<x.length;p++){var z=q.getConnectionPoint(u,x[p]);k(z.x-3,z.y-3)}q.fit(8);q.center();p=mxUtils.button("",function(){q.zoomIn()});p.className="geSprite geSprite-zoomin";p.setAttribute("title",mxResources.get("zoomIn"));p.style.outline="none";p.style.border=
+"none";p.style.margin="2px";p.style.cursor="pointer";mxUtils.setOpacity(p,60);x=mxUtils.button("",function(){q.zoomOut()});x.className="geSprite geSprite-zoomout";x.setAttribute("title",mxResources.get("zoomOut"));x.style.outline="none";x.style.border="none";x.style.margin="2px";x.style.cursor="pointer";mxUtils.setOpacity(x,60);z=mxUtils.button("",function(){q.fit(8);q.center()});z.className="geSprite geSprite-fit";z.setAttribute("title",mxResources.get("fit"));z.style.outline="none";z.style.border=
+"none";z.style.margin="2px";z.style.cursor="pointer";mxUtils.setOpacity(z,60);var A=mxUtils.button("",function(){q.zoomActual();q.center()});A.className="geSprite geSprite-actualsize";A.setAttribute("title",mxResources.get("actualSize"));A.style.outline="none";A.style.border="none";A.style.margin="2px";A.style.cursor="pointer";mxUtils.setOpacity(A,60);var B=mxUtils.button("",n);B.className="geSprite geSprite-delete";B.setAttribute("title",mxResources.get("delete"));B.style.outline="none";B.style.border=
+"none";B.style.margin="2px";B.style["float"]="right";B.style.cursor="pointer";mxUtils.setOpacity(B,10);var y=document.createElement("div");y.appendChild(p);y.appendChild(x);y.appendChild(A);y.appendChild(z);y.appendChild(B);c.appendChild(y);var C=document.createElement("div");C.style.marginTop="8px";p=document.createElement("span");mxUtils.write(p,mxResources.get("add"));C.appendChild(p);var E=document.createElement("input");E.setAttribute("type","number");E.setAttribute("min","1");E.setAttribute("value",
+"1");E.style.width="45px";E.style.margin="0 4px 0 4px";C.appendChild(E);p=document.createElement("span");mxUtils.write(p,mxResources.get("points")+"->");C.appendChild(p);var D=document.createElement("select");D.style.margin="0 4px 0 4px";x=["left","right","top","bottom"];for(p=0;p<x.length;p++)z=x[p],A=document.createElement("option"),mxUtils.write(A,mxResources.get(z)),A.value=z,D.appendChild(A);C.appendChild(D);p=mxUtils.button(mxResources.get("add"),function(){var b=parseInt(E.value),b=1>b?1:100<
+b?100:b;E.value=b;for(var c=D.value,f=t.geometry,d=0;d<b;d++){var e,l;switch(c){case "left":e=f.x;l=f.y+(d+1)*f.height/(b+1);break;case "right":e=f.x+f.width;l=f.y+(d+1)*f.height/(b+1);break;case "top":e=f.x+(d+1)*f.width/(b+1);l=f.y;break;case "bottom":e=f.x+(d+1)*f.width/(b+1),l=f.y+f.height}k(e-3,l-3)}});C.appendChild(p);c.appendChild(C);var F=document.createElement("div");F.style.marginTop="8px";F.style.display="none";p=document.createElement("span");mxUtils.write(p,"x");F.appendChild(p);var G=
+document.createElement("input");G.setAttribute("type","number");G.setAttribute("min","0");G.setAttribute("max","100");G.style.width="45px";G.style.margin="0 4px 0 4px";F.appendChild(G);p=document.createElement("span");mxUtils.write(p,"%, ");F.appendChild(p);p=document.createElement("span");mxUtils.write(p,"y");F.appendChild(p);var I=document.createElement("input");I.setAttribute("type","number");I.setAttribute("min","0");I.setAttribute("max","100");I.style.width="45px";I.style.margin="0 4px 0 4px";
+F.appendChild(I);p=document.createElement("span");mxUtils.write(p,"% - ");F.appendChild(p);p=document.createElement("span");mxUtils.write(p,"dx");F.appendChild(p);var J=document.createElement("input");J.setAttribute("type","number");J.style.width="45px";J.style.margin="0 4px 0 4px";F.appendChild(J);p=document.createElement("span");mxUtils.write(p,"dy");F.appendChild(p);var H=document.createElement("input");H.setAttribute("type","number");H.style.width="45px";H.style.margin="0 4px 0 4px";F.appendChild(H);
+c.appendChild(F);q.getSelectionModel().addListener(mxEvent.CHANGE,function(){0<q.getSelectionCount()?mxUtils.setOpacity(B,60):mxUtils.setOpacity(B,10);m()});q.addListener(mxEvent.CELLS_MOVED,m);mxEvent.addListener(G,"change",f);mxEvent.addListener(I,"change",f);mxEvent.addListener(J,"change",f);mxEvent.addListener(H,"change",f);p=mxUtils.button(mxResources.get("cancel"),function(){d();b.hideDialog()});p.className="geBtn";x=mxUtils.button(mxResources.get("apply"),function(){var c=q.model.cells,f=[],
+m=[],g;for(g in c){var p=c[g];p.cp&&m.push(l(p))}m.sort(function(b,c){return b.x!=c.x?b.x-c.x:b.y!=c.y?b.y-c.y:b.dx!=c.dx?b.dx-c.dx:b.dy-c.dy});for(c=0;c<m.length;c++)0<c&&m[c].x==m[c-1].x&&m[c].y==m[c-1].y&&m[c].dx==m[c-1].dx&&m[c].dy==m[c-1].dy||f.push("["+m[c].x+","+m[c].y+",0,"+m[c].dx+","+m[c].dy+"]");b.editor.graph.setCellStyles("points","["+f.join(",")+"]",[e]);d();b.hideDialog()});x.className="geBtn gePrimaryBtn";z=mxUtils.button(mxResources.get("reset"),function(){b.editor.graph.setCellStyles("points",
+null,[e]);d();b.hideDialog()});z.className="geBtn";A=document.createElement("div");A.style.marginTop="10px";A.style.textAlign="right";b.editor.cancelFirst?(A.appendChild(p),A.appendChild(z),A.appendChild(x)):(A.appendChild(z),A.appendChild(x),A.appendChild(p));c.appendChild(A)};this.destroy=d;this.container=c};(function(){"undefined"!==typeof html4&&(html4.ATTRIBS["span::data-lucid-content"]=0,html4.ATTRIBS["span::data-lucid-type"]=0,html4.ATTRIBS["font::data-font-src"]=0);Editor.prototype.appName="diagrams.net";Editor.prototype.diagramFileTypes=[{description:"diagramXmlDesc",extension:"drawio",mimeType:"text/xml"},{description:"diagramPngDesc",extension:"png",mimeType:"image/png"},{description:"diagramSvgDesc",extension:"svg",mimeType:"image/svg"},{description:"diagramHtmlDesc",extension:"html",mimeType:"text/html"},
{description:"diagramXmlDesc",extension:"xml",mimeType:"text/xml"}];Editor.prototype.libraryFileTypes=[{description:"Library (.drawiolib, .xml)",extensions:["drawiolib","xml"]}];Editor.prototype.fileExtensions=[{ext:"html",title:"filetypeHtml"},{ext:"png",title:"filetypePng"},{ext:"svg",title:"filetypeSvg"}];Editor.styles=[{},{commonStyle:{fontColor:"#5C5C5C",strokeColor:"#006658",fillColor:"#21C0A5"}},{commonStyle:{fontColor:"#095C86",strokeColor:"#AF45ED",fillColor:"#F694C1"},edgeStyle:{strokeColor:"#60E696"}},
{commonStyle:{fontColor:"#46495D",strokeColor:"#788AA3",fillColor:"#B2C9AB"}},{commonStyle:{fontColor:"#5AA9E6",strokeColor:"#FF6392",fillColor:"#FFE45E"}},{commonStyle:{fontColor:"#1D3557",strokeColor:"#457B9D",fillColor:"#A8DADC"},graph:{background:"#F1FAEE"}},{commonStyle:{fontColor:"#393C56",strokeColor:"#E07A5F",fillColor:"#F2CC8F"},graph:{background:"#F4F1DE",gridColor:"#D4D0C0"}},{commonStyle:{fontColor:"#143642",strokeColor:"#0F8B8D",fillColor:"#FAE5C7"},edgeStyle:{strokeColor:"#A8201A"},
graph:{background:"#DAD2D8",gridColor:"#ABA4A9"}},{commonStyle:{fontColor:"#FEFAE0",strokeColor:"#DDA15E",fillColor:"#BC6C25"},graph:{background:"#283618",gridColor:"#48632C"}},{commonStyle:{fontColor:"#E4FDE1",strokeColor:"#028090",fillColor:"#F45B69"},graph:{background:"#114B5F",gridColor:"#0B3240"}},{},{vertexStyle:{strokeColor:"#D0CEE2",fillColor:"#FAD9D5"},edgeStyle:{strokeColor:"#09555B"},commonStyle:{fontColor:"#1A1A1A"}},{vertexStyle:{strokeColor:"#BAC8D3",fillColor:"#09555B",fontColor:"#EEEEEE"},
@@ -10570,61 +10580,61 @@ Editor.createRoughCanvas=function(b){var c=rough.canvas({getContext:function(){r
f.filled?b.fill():b.stroke()};return c};(function(){function b(c,f,d){this.canvas=c;this.rc=f;this.shape=d;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,b.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,b.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,b.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
mxUtils.bind(this,b.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,b.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,b.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,b.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,b.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
b.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,b.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,b.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,b.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,b.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,b.prototype.fillAndStroke);
-this.path=[];this.passThrough=!1}b.prototype.moveOp="M";b.prototype.lineOp="L";b.prototype.quadOp="Q";b.prototype.curveOp="C";b.prototype.closeOp="Z";b.prototype.getStyle=function(b,c){var f=1;if(null!=this.shape.state){var d=this.shape.state.cell.id;if(null!=d)for(var e=0;e<d.length;e++)f=(f<<5)-f+d.charCodeAt(e)<<0}f={strokeWidth:this.canvas.state.strokeWidth,seed:f,preserveVertices:!0};d=this.rc.getDefaultOptions();f.stroke=b?"none"===this.canvas.state.strokeColor?"transparent":this.canvas.state.strokeColor:
-"none";e=null;(f.filled=c)?(f.fill="none"===this.canvas.state.fillColor?"":this.canvas.state.fillColor,e="none"===this.canvas.state.gradientColor?null:this.canvas.state.gradientColor):f.fill="";f.bowing=mxUtils.getValue(this.shape.style,"bowing",d.bowing);f.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",d.hachureAngle);f.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",d.curveFitting);f.roughness=mxUtils.getValue(this.shape.style,"jiggle",d.roughness);f.simplification=
-mxUtils.getValue(this.shape.style,"simplification",d.simplification);f.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",d.disableMultiStroke);f.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",d.disableMultiStrokeFill);var l=mxUtils.getValue(this.shape.style,"hachureGap",-1);f.hachureGap="auto"==l?-1:l;f.dashGap=mxUtils.getValue(this.shape.style,"dashGap",l);f.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",l);f.zigzagOffset=mxUtils.getValue(this.shape.style,
-"zigzagOffset",l);l=mxUtils.getValue(this.shape.style,"fillWeight",-1);f.fillWeight="auto"==l?-1:l;l=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==l&&(l=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),l=null!=f.fill&&(null!=e||null!=l&&f.fill==l)?"solid":d.fillStyle);f.fillStyle=l;return f};b.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};
-b.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};b.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var b=2;b<arguments.length;b+=2)this.lastX=arguments[b-1],this.lastY=arguments[b],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};b.prototype.lineTo=function(b,c){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,b,c),this.lastX=
-b,this.lastY=c)};b.prototype.moveTo=function(b,c){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,b,c),this.lastX=b,this.lastY=c,this.firstX=b,this.firstY=c)};b.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};b.prototype.quadTo=function(b,c,f,d){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,b,c,f,d),this.lastX=f,this.lastY=d)};b.prototype.curveTo=
-function(b,c,f,d,e,l){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,b,c,f,d,e,l),this.lastX=e,this.lastY=l)};b.prototype.arcTo=function(b,c,f,d,e,l,m){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var g=mxUtils.arcToCurves(this.lastX,this.lastY,b,c,f,d,e,l,m);if(null!=g)for(var p=0;p<g.length;p+=6)this.curveTo(g[p],g[p+1],g[p+2],g[p+3],g[p+4],g[p+5]);this.lastX=l;this.lastY=m}};b.prototype.rect=function(b,c,f,d){this.passThrough?
-this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(b,c,f,d,this.getStyle(!0,!0)))};b.prototype.ellipse=function(b,c,f,d){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(b+f/2,c+d/2,f,d,this.getStyle(!0,!0)))};b.prototype.roundrect=function(b,c,f,d,e,l){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(b+e,c),this.lineTo(b+f-e,c),
-this.quadTo(b+f,c,b+f,c+l),this.lineTo(b+f,c+d-l),this.quadTo(b+f,c+d,b+f-e,c+d),this.lineTo(b+e,c+d),this.quadTo(b,c+d,b,c+d-l),this.lineTo(b,c+l),this.quadTo(b,c,b+e,c))};b.prototype.drawPath=function(b){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),b)}catch(ha){}this.passThrough=!1}else if(null!=this.nextShape){for(var c in b)this.nextShape.options[c]=b[c];null==b.stroke&&delete this.nextShape.options.stroke;b.filled||delete this.nextShape.options.fill;this.passThrough=
-!0;this.rc.draw(this.nextShape);this.passThrough=!1}};b.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};b.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};b.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!0))};b.prototype.destroy=function(){this.canvas.lineTo=
-this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo;this.canvas.close=this.originalClose;this.canvas.fill=this.originalFill;this.canvas.stroke=this.originalStroke;this.canvas.fillAndStroke=this.originalFillAndStroke;this.canvas.begin=this.originalBegin;this.canvas.end=this.originalEnd;this.canvas.rect=this.originalRect;this.canvas.ellipse=
-this.originalEllipse;this.canvas.roundrect=this.originalRoundrect};mxShape.prototype.createRoughCanvas=function(c){return new b(c,Editor.createRoughCanvas(c),this)};var c=mxShape.prototype.createHandJiggle;mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?c.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(b):this.createRoughCanvas(b)};var f=mxImageShape.prototype.paintVertexShape;
-mxImageShape.prototype.paintVertexShape=function(b,c,d,e,l){null!=b.handJiggle&&b.handJiggle.passThrough||f.apply(this,arguments)};var d=mxShape.prototype.paint;mxShape.prototype.paint=function(c){var f=c.addTolerance,e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=c.handJiggle&&c.handJiggle.constructor==b&&!this.outline){c.save();var l=this.fill,m=this.stroke;this.stroke=this.fill=null;var g=this.configurePointerEvents,p=c.setStrokeColor;
-c.setStrokeColor=function(){};var k=c.setFillColor;c.setFillColor=function(){};e||null==l||(this.configurePointerEvents=function(){});c.handJiggle.passThrough=!0;d.apply(this,arguments);c.handJiggle.passThrough=!1;c.setFillColor=k;c.setStrokeColor=p;this.configurePointerEvents=g;this.stroke=m;this.fill=l;c.restore();e&&null!=l&&(c.addTolerance=function(){})}d.apply(this,arguments);c.addTolerance=f};var e=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(c,f,d,l,m,g){null!=
-c.handJiggle&&c.handJiggle.constructor==b?(c.handJiggle.passThrough=!0,e.apply(this,arguments),c.handJiggle.passThrough=!1):e.apply(this,arguments)}})();Editor.fastCompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:Graph.arrayBufferToString(pako.deflateRaw(b))};Editor.fastDecompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:pako.inflateRaw(Graph.stringToArrayBuffer(atob(b)),{to:"string"})};Editor.extractGraphModel=function(b,c,f){if(null!=b&&"undefined"!==
-typeof pako){var d=b.ownerDocument.getElementsByTagName("div"),e=[];if(null!=d&&0<d.length)for(var l=0;l<d.length;l++)if("mxgraph"==d[l].getAttribute("class")){e.push(d[l]);break}0<e.length&&(d=e[0].getAttribute("data-mxgraph"),null!=d?(e=JSON.parse(d),null!=e&&null!=e.xml&&(b=mxUtils.parseXml(e.xml),b=b.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(d=mxUtils.getTextContent(e[0]),d=Graph.decompress(d,null,f),0<d.length&&(b=mxUtils.parseXml(d),b=b.documentElement))))}if(null!=
-b&&"svg"==b.nodeName)if(d=b.getAttribute("content"),null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)b=mxUtils.parseXml(d).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==b||c||(e=null,"diagram"==b.nodeName?e=b:"mxfile"==b.nodeName&&(d=b.getElementsByTagName("diagram"),0<d.length&&(e=d[Math.max(0,Math.min(d.length-1,urlParams.page||0))])),null!=
-e&&(b=Editor.parseDiagramNode(e,f)));null==b||"mxGraphModel"==b.nodeName||c&&"mxfile"==b.nodeName||(b=null);return b};Editor.parseDiagramNode=function(b,c){var f=mxUtils.trim(mxUtils.getTextContent(b)),d=null;0<f.length?(f=Graph.decompress(f,null,c),null!=f&&0<f.length&&(d=mxUtils.parseXml(f).documentElement)):(f=mxUtils.getChildNodes(b),0<f.length&&(d=mxUtils.createXmlDocument(),d.appendChild(d.importNode(f[0],!0)),d=d.documentElement));return d};Editor.getDiagramNodeXml=function(b){var c=mxUtils.getTextContent(b),
-f=null;0<c.length?f=Graph.decompress(c):null!=b.firstChild&&(f=mxUtils.getXml(b.firstChild));return f};Editor.extractGraphModelFromPdf=function(b){b=b.substring(b.indexOf(",")+1);b=window.atob&&!mxClient.IS_SF?atob(b):Base64.decode(b,!0);if("%PDF-1.7"==b.substring(0,8)){var c=b.indexOf("EmbeddedFile");if(-1<c){var f=b.indexOf("stream",c)+9;if(0<b.substring(c,f).indexOf("application#2Fvnd.jgraph.mxfile"))return c=b.indexOf("endstream",f-1),pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(f,c)),
-{to:"string"})}return null}for(var f=null,c="",d=0,e=0,l=[],m=null;e<b.length;){var g=b.charCodeAt(e),e=e+1;10!=g&&(c+=String.fromCharCode(g));g=="/Subject (%3Cmxfile".charCodeAt(d)?d++:d=0;if(19==d){var p=b.indexOf("%3C%2Fmxfile%3E)",e)+15,e=e-9;if(p>e){f=b.substring(e,p);break}}10==g&&("endobj"==c?m=null:"obj"==c.substring(c.length-3,c.length)||"xref"==c||"trailer"==c?(m=[],l[c.split(" ")[0]]=m):null!=m&&m.push(c),c="")}null==f&&(f=Editor.extractGraphModelFromXref(l));null!=f&&(f=decodeURIComponent(f.replace(/\\\(/g,
-"(").replace(/\\\)/g,")")));return f};Editor.extractGraphModelFromXref=function(b){var c=b.trailer,f=null;null!=c&&(c=/.* \/Info (\d+) (\d+) R/g.exec(c.join("\n")),null!=c&&0<c.length&&(c=b[c[1]],null!=c&&(c=/.* \/Subject (\d+) (\d+) R/g.exec(c.join("\n")),null!=c&&0<c.length&&(b=b[c[1]],null!=b&&(b=b.join("\n"),f=b.substring(1,b.length-1))))));return f};Editor.extractParserError=function(b,c){var f=null,d=null!=b?b.getElementsByTagName("parsererror"):null;null!=d&&0<d.length&&(f=c||mxResources.get("invalidChars"),
-d=d[0].getElementsByTagName("div"),0<d.length&&(f=mxUtils.getTextContent(d[0])));return null!=f?mxUtils.trim(f):f};Editor.addRetryToError=function(b,c){if(null!=b){var f=null!=b.error?b.error:b;null==f.retry&&(f.retry=c)}};Editor.configure=function(b,c){if(null!=b){Editor.config=b;Editor.configVersion=b.version;Menus.prototype.defaultFonts=b.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=b.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=
-b.defaultColors||ColorDialog.prototype.defaultColors;ColorDialog.prototype.colorNames=b.colorNames||ColorDialog.prototype.colorNames;StyleFormatPanel.prototype.defaultColorSchemes=b.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=b.defaultEdgeLength||Graph.prototype.defaultEdgeLength;DrawioFile.prototype.autosaveDelay=b.autosaveDelay||DrawioFile.prototype.autosaveDelay;null!=b.templateFile&&(EditorUi.templateFile=b.templateFile);null!=b.styles&&
-(Array.isArray(b.styles)?Editor.styles=b.styles:EditorUi.debug("Configuration Error: Array expected for styles"));null!=b.globalVars&&(Editor.globalVars=b.globalVars);null!=b.compressXml&&(Editor.compressXml=b.compressXml);null!=b.includeDiagram&&(Editor.defaultIncludeDiagram=b.includeDiagram);null!=b.simpleLabels&&(Editor.simpleLabels=b.simpleLabels);null!=b.oneDriveInlinePicker&&(Editor.oneDriveInlinePicker=b.oneDriveInlinePicker);null!=b.darkColor&&(Editor.darkColor=b.darkColor);null!=b.lightColor&&
-(Editor.lightColor=b.lightColor);null!=b.settingsName&&(Editor.configurationKey="."+b.settingsName+"-configuration",Editor.settingsKey="."+b.settingsName+"-config",mxSettings.key=Editor.settingsKey);b.customFonts&&(Menus.prototype.defaultFonts=b.customFonts.concat(Menus.prototype.defaultFonts));b.customPresetColors&&(ColorDialog.prototype.presetColors=b.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=b.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=b.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));
-if(null!=b.css){var f=document.createElement("style");f.setAttribute("type","text/css");f.appendChild(document.createTextNode(b.css));var d=document.getElementsByTagName("script")[0];d.parentNode.insertBefore(f,d)}null!=b.libraries&&(Sidebar.prototype.customEntries=b.libraries);null!=b.enabledLibraries&&(Array.isArray(b.enabledLibraries)?Sidebar.prototype.enabledLibraries=b.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=b.defaultLibraries&&(Sidebar.prototype.defaultEntries=
-b.defaultLibraries);null!=b.defaultCustomLibraries&&(Editor.defaultCustomLibraries=b.defaultCustomLibraries);null!=b.enableCustomLibraries&&(Editor.enableCustomLibraries=b.enableCustomLibraries);null!=b.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=b.defaultVertexStyle);null!=b.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=b.defaultEdgeStyle);null!=b.defaultPageVisible&&(Graph.prototype.defaultPageVisible=b.defaultPageVisible);null!=b.defaultGridEnabled&&(Graph.prototype.defaultGridEnabled=
-b.defaultGridEnabled);null!=b.zoomWheel&&(Graph.zoomWheel=b.zoomWheel);null!=b.zoomFactor&&(f=parseFloat(b.zoomFactor),!isNaN(f)&&1<f?Graph.prototype.zoomFactor=f:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=b.gridSteps&&(f=parseInt(b.gridSteps),!isNaN(f)&&0<f?mxGraphView.prototype.gridSteps=f:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=b.pageFormat&&(f=parseInt(b.pageFormat.width),d=parseInt(b.pageFormat.height),!isNaN(f)&&0<f&&
-!isNaN(d)&&0<d?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,f,d),mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):EditorUi.debug("Configuration Error: {width: int, height: int} expected for pageFormat"));b.thumbWidth&&(Sidebar.prototype.thumbWidth=b.thumbWidth);b.thumbHeight&&(Sidebar.prototype.thumbHeight=b.thumbHeight);b.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml=b.emptyLibraryXml);b.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=b.emptyDiagramXml);b.sidebarWidth&&
-(EditorUi.prototype.hsplitPosition=b.sidebarWidth);b.sidebarTitles&&(Sidebar.prototype.sidebarTitles=b.sidebarTitles);b.sidebarTitleSize&&(f=parseInt(b.sidebarTitleSize),!isNaN(f)&&0<f?Sidebar.prototype.sidebarTitleSize=f:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));b.fontCss&&("string"===typeof b.fontCss?Editor.configureFontCss(b.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));null!=b.autosaveDelay&&(f=parseInt(b.autosaveDelay),!isNaN(f)&&
-0<f?DrawioFile.prototype.autosaveDelay=f:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));if(null!=b.plugins&&!c)for(App.initPluginCallback(),f=0;f<b.plugins.length;f++)mxscript(b.plugins[f]);null!=b.maxImageBytes&&(EditorUi.prototype.maxImageBytes=b.maxImageBytes);null!=b.maxImageSize&&(EditorUi.prototype.maxImageSize=b.maxImageSize)}};Editor.configureFontCss=function(b){if(null!=b){Editor.prototype.fontCss=b;var c=document.getElementsByTagName("script")[0];if(null!=c&&
-null!=c.parentNode){var f=document.createElement("style");f.setAttribute("type","text/css");f.appendChild(document.createTextNode(b));c.parentNode.insertBefore(f,c);b=b.split("url(");for(f=1;f<b.length;f++){var d=b[f].indexOf(")"),d=Editor.trimCssUrl(b[f].substring(0,d)),e=document.createElement("link");e.setAttribute("rel","preload");e.setAttribute("href",d);e.setAttribute("as","font");e.setAttribute("crossorigin","");c.parentNode.insertBefore(e,c)}}}};Editor.trimCssUrl=function(b){return b.replace(RegExp("^[\\s\"']+",
-"g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";Editor.GUID_LENGTH=20;Editor.guid=function(b){b=null!=b?b:Editor.GUID_LENGTH;for(var c=[],f=0;f<b;f++)c.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return c.join("")};Editor.prototype.timeout=25E3;Editor.prototype.useForeignObjectForMath=!0;Editor.prototype.editButtonLink=
-null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(c){c=null!=c&&"mxlibrary"!=c.nodeName?this.extractGraphModel(c):null;if(null!=c){var f=c.getElementsByTagName("parsererror");if(null!=f&&0<f.length){var f=f[0],d=f.getElementsByTagName("div");null!=d&&0<d.length&&(f=d[0]);throw{message:mxUtils.getTextContent(f)};}if("mxGraphModel"==c.nodeName){f=c.getAttribute("style")||
-"default-style2";if("1"==urlParams.embed||null!=f&&""!=f)f!=this.graph.currentStyle&&(d=null!=this.graph.themes?this.graph.themes[f]:mxUtils.load(STYLE_PATH+"/"+f+".xml").getDocumentElement(),null!=d&&(e=new mxCodec(d.ownerDocument),e.decode(d,this.graph.getStylesheet())));else if(d=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=d){var e=new mxCodec(d.ownerDocument);e.decode(d,this.graph.getStylesheet())}this.graph.currentStyle=
-f;this.graph.mathEnabled="1"==urlParams.math||"1"==c.getAttribute("math");f=c.getAttribute("backgroundImage");null!=f?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(f)):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==c.getAttribute("shadow"),
-!1);if(f=c.getAttribute("extFonts"))try{for(f=f.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),d=0;d<f.length;d++)this.graph.addExtFont(f[d].name,f[d].url)}catch(oa){console.log("ExtFonts format error: "+oa.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var e=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=
-function(b,c){b=null!=b?b:!0;var f=e.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&f.setAttribute("style",this.graph.currentStyle);var d=this.graph.getBackgroundImageObject(this.graph.backgroundImage,c);null!=d&&f.setAttribute("backgroundImage",JSON.stringify(d));f.setAttribute("math",this.graph.mathEnabled?"1":"0");f.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(d=this.graph.extFonts.map(function(b){return b.name+
-"^"+b.url}),f.setAttribute("extFonts",d.join("|")));return f};Editor.prototype.isDataSvg=function(b){try{var c=mxUtils.parseXml(b).documentElement.getAttribute("content");if(null!=c&&(null!=c&&"<"!=c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)),null!=c&&0<c.length)){var f=mxUtils.parseXml(c).documentElement;return"mxfile"==f.nodeName||"mxGraphModel"==f.nodeName}}catch(da){}return!1};Editor.prototype.extractGraphModel=
-function(b,c,f){return Editor.extractGraphModel.apply(this,arguments)};var d=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();d.apply(this,arguments)};
-var c=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){c.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.mathJaxWebkitCss="div.MathJax_SVG_Display { position: static; }\nspan.MathJax_SVG { position: static !important; }";
-Editor.initMath=function(b,c){if("undefined"===typeof window.MathJax){b=(null!=b?b:DRAW_MATH_URL+"/MathJax.js")+"?config=TeX-MML-AM_"+("html"==urlParams["math-output"]?"HTMLorMML":"SVG")+"-full";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(b){window.setTimeout(function(){"hidden"!=b.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,b])},0)};var f=null!=urlParams["math-font"]?decodeURIComponent(urlParams["math-font"]):"TeX";c=null!=c?c:{"HTML-CSS":{availableFonts:[f],imageFont:null},
-SVG:{font:f,useFontCache:!1},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(c);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};
-Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var d=Editor.prototype.init;Editor.prototype.init=function(){d.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,c){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};f=document.getElementsByTagName("script");if(null!=f&&0<f.length){var e=document.createElement("script");e.setAttribute("type","text/javascript");e.setAttribute("src",
-b);f[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var l=document.createElement("style");l.type="text/css";l.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(l)}}catch(N){}}};Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;
+this.path=[];this.passThrough=!1}b.prototype.moveOp="M";b.prototype.lineOp="L";b.prototype.quadOp="Q";b.prototype.curveOp="C";b.prototype.closeOp="Z";b.prototype.getStyle=function(b,c){var f=1;if(null!=this.shape.state){var d=this.shape.state.cell.id;if(null!=d)for(var e=0;e<d.length;e++)f=(f<<5)-f+d.charCodeAt(e)<<0}f={strokeWidth:this.canvas.state.strokeWidth,seed:f,preserveVertices:!0};d=this.rc.getDefaultOptions();f.stroke=b?this.canvas.state.strokeColor===mxConstants.NONE?"transparent":this.canvas.state.strokeColor:
+mxConstants.NONE;e=null;(f.filled=c)?(f.fill=this.canvas.state.fillColor===mxConstants.NONE?"":this.canvas.state.fillColor,e=this.canvas.state.gradientColor===mxConstants.NONE?null:this.canvas.state.gradientColor):f.fill="";f.bowing=mxUtils.getValue(this.shape.style,"bowing",d.bowing);f.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",d.hachureAngle);f.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",d.curveFitting);f.roughness=mxUtils.getValue(this.shape.style,"jiggle",
+d.roughness);f.simplification=mxUtils.getValue(this.shape.style,"simplification",d.simplification);f.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",d.disableMultiStroke);f.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",d.disableMultiStrokeFill);var l=mxUtils.getValue(this.shape.style,"hachureGap",-1);f.hachureGap="auto"==l?-1:l;f.dashGap=mxUtils.getValue(this.shape.style,"dashGap",l);f.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",
+l);f.zigzagOffset=mxUtils.getValue(this.shape.style,"zigzagOffset",l);l=mxUtils.getValue(this.shape.style,"fillWeight",-1);f.fillWeight="auto"==l?-1:l;l=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==l&&(l=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),l=null!=f.fill&&(null!=e||null!=l&&f.fill==l)?"solid":d.fillStyle);f.fillStyle=l;return f};b.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,
+arguments):this.path=[]};b.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};b.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var b=2;b<arguments.length;b+=2)this.lastX=arguments[b-1],this.lastY=arguments[b],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};b.prototype.lineTo=function(b,c){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,
+b,c),this.lastX=b,this.lastY=c)};b.prototype.moveTo=function(b,c){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,b,c),this.lastX=b,this.lastY=c,this.firstX=b,this.firstY=c)};b.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};b.prototype.quadTo=function(b,c,f,d){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,b,c,f,d),this.lastX=f,this.lastY=d)};
+b.prototype.curveTo=function(b,c,f,d,e,l){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,b,c,f,d,e,l),this.lastX=e,this.lastY=l)};b.prototype.arcTo=function(b,c,f,d,e,l,m){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var g=mxUtils.arcToCurves(this.lastX,this.lastY,b,c,f,d,e,l,m);if(null!=g)for(var p=0;p<g.length;p+=6)this.curveTo(g[p],g[p+1],g[p+2],g[p+3],g[p+4],g[p+5]);this.lastX=l;this.lastY=m}};b.prototype.rect=function(b,
+c,f,d){this.passThrough?this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(b,c,f,d,this.getStyle(!0,!0)))};b.prototype.ellipse=function(b,c,f,d){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(b+f/2,c+d/2,f,d,this.getStyle(!0,!0)))};b.prototype.roundrect=function(b,c,f,d,e,l){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(b+
+e,c),this.lineTo(b+f-e,c),this.quadTo(b+f,c,b+f,c+l),this.lineTo(b+f,c+d-l),this.quadTo(b+f,c+d,b+f-e,c+d),this.lineTo(b+e,c+d),this.quadTo(b,c+d,b,c+d-l),this.lineTo(b,c+l),this.quadTo(b,c,b+e,c))};b.prototype.drawPath=function(b){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),b)}catch(ha){}this.passThrough=!1}else if(null!=this.nextShape){for(var c in b)this.nextShape.options[c]=b[c];b.stroke!=mxConstants.NONE&&null!=b.stroke||delete this.nextShape.options.stroke;
+b.filled||delete this.nextShape.options.fill;this.passThrough=!0;this.rc.draw(this.nextShape);this.passThrough=!1}};b.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};b.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};b.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,
+!0))};b.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo;this.canvas.close=this.originalClose;this.canvas.fill=this.originalFill;this.canvas.stroke=this.originalStroke;this.canvas.fillAndStroke=this.originalFillAndStroke;this.canvas.begin=this.originalBegin;this.canvas.end=this.originalEnd;
+this.canvas.rect=this.originalRect;this.canvas.ellipse=this.originalEllipse;this.canvas.roundrect=this.originalRoundrect};mxShape.prototype.createRoughCanvas=function(c){return new b(c,Editor.createRoughCanvas(c),this)};var c=mxShape.prototype.createHandJiggle;mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?c.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(b):
+this.createRoughCanvas(b)};var f=mxImageShape.prototype.paintVertexShape;mxImageShape.prototype.paintVertexShape=function(b,c,d,e,l){null!=b.handJiggle&&b.handJiggle.passThrough||f.apply(this,arguments)};var d=mxShape.prototype.paint;mxShape.prototype.paint=function(c){var f=c.addTolerance,e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=c.handJiggle&&c.handJiggle.constructor==b&&!this.outline){c.save();var l=this.fill,m=this.stroke;this.stroke=
+this.fill=null;var g=this.configurePointerEvents,p=c.setStrokeColor;c.setStrokeColor=function(){};var k=c.setFillColor;c.setFillColor=function(){};e||null==l||(this.configurePointerEvents=function(){});c.handJiggle.passThrough=!0;d.apply(this,arguments);c.handJiggle.passThrough=!1;c.setFillColor=k;c.setStrokeColor=p;this.configurePointerEvents=g;this.stroke=m;this.fill=l;c.restore();e&&null!=l&&(c.addTolerance=function(){})}d.apply(this,arguments);c.addTolerance=f};var e=mxShape.prototype.paintGlassEffect;
+mxShape.prototype.paintGlassEffect=function(c,f,d,l,m,g){null!=c.handJiggle&&c.handJiggle.constructor==b?(c.handJiggle.passThrough=!0,e.apply(this,arguments),c.handJiggle.passThrough=!1):e.apply(this,arguments)}})();Editor.fastCompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:Graph.arrayBufferToString(pako.deflateRaw(b))};Editor.fastDecompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:pako.inflateRaw(Graph.stringToArrayBuffer(atob(b)),{to:"string"})};
+Editor.extractGraphModel=function(b,c,f){if(null!=b&&"undefined"!==typeof pako){var d=b.ownerDocument.getElementsByTagName("div"),e=[];if(null!=d&&0<d.length)for(var l=0;l<d.length;l++)if("mxgraph"==d[l].getAttribute("class")){e.push(d[l]);break}0<e.length&&(d=e[0].getAttribute("data-mxgraph"),null!=d?(e=JSON.parse(d),null!=e&&null!=e.xml&&(b=mxUtils.parseXml(e.xml),b=b.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(d=mxUtils.getTextContent(e[0]),d=Graph.decompress(d,null,f),0<
+d.length&&(b=mxUtils.parseXml(d),b=b.documentElement))))}if(null!=b&&"svg"==b.nodeName)if(d=b.getAttribute("content"),null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)b=mxUtils.parseXml(d).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==b||c||(e=null,"diagram"==b.nodeName?e=b:"mxfile"==b.nodeName&&(d=b.getElementsByTagName("diagram"),0<d.length&&
+(e=d[Math.max(0,Math.min(d.length-1,urlParams.page||0))])),null!=e&&(b=Editor.parseDiagramNode(e,f)));null==b||"mxGraphModel"==b.nodeName||c&&"mxfile"==b.nodeName||(b=null);return b};Editor.parseDiagramNode=function(b,c){var f=mxUtils.trim(mxUtils.getTextContent(b)),d=null;0<f.length?(f=Graph.decompress(f,null,c),null!=f&&0<f.length&&(d=mxUtils.parseXml(f).documentElement)):(f=mxUtils.getChildNodes(b),0<f.length&&(d=mxUtils.createXmlDocument(),d.appendChild(d.importNode(f[0],!0)),d=d.documentElement));
+return d};Editor.getDiagramNodeXml=function(b){var c=mxUtils.getTextContent(b),f=null;0<c.length?f=Graph.decompress(c):null!=b.firstChild&&(f=mxUtils.getXml(b.firstChild));return f};Editor.extractGraphModelFromPdf=function(b){b=b.substring(b.indexOf(",")+1);b=window.atob&&!mxClient.IS_SF?atob(b):Base64.decode(b,!0);if("%PDF-1.7"==b.substring(0,8)){var c=b.indexOf("EmbeddedFile");if(-1<c){var f=b.indexOf("stream",c)+9;if(0<b.substring(c,f).indexOf("application#2Fvnd.jgraph.mxfile"))return c=b.indexOf("endstream",
+f-1),pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(f,c)),{to:"string"})}return null}for(var f=null,c="",d=0,e=0,l=[],m=null;e<b.length;){var g=b.charCodeAt(e),e=e+1;10!=g&&(c+=String.fromCharCode(g));g=="/Subject (%3Cmxfile".charCodeAt(d)?d++:d=0;if(19==d){var p=b.indexOf("%3C%2Fmxfile%3E)",e)+15,e=e-9;if(p>e){f=b.substring(e,p);break}}10==g&&("endobj"==c?m=null:"obj"==c.substring(c.length-3,c.length)||"xref"==c||"trailer"==c?(m=[],l[c.split(" ")[0]]=m):null!=m&&m.push(c),c="")}null==f&&(f=
+Editor.extractGraphModelFromXref(l));null!=f&&(f=decodeURIComponent(f.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return f};Editor.extractGraphModelFromXref=function(b){var c=b.trailer,f=null;null!=c&&(c=/.* \/Info (\d+) (\d+) R/g.exec(c.join("\n")),null!=c&&0<c.length&&(c=b[c[1]],null!=c&&(c=/.* \/Subject (\d+) (\d+) R/g.exec(c.join("\n")),null!=c&&0<c.length&&(b=b[c[1]],null!=b&&(b=b.join("\n"),f=b.substring(1,b.length-1))))));return f};Editor.extractParserError=function(b,c){var f=null,d=null!=
+b?b.getElementsByTagName("parsererror"):null;null!=d&&0<d.length&&(f=c||mxResources.get("invalidChars"),d=d[0].getElementsByTagName("div"),0<d.length&&(f=mxUtils.getTextContent(d[0])));return null!=f?mxUtils.trim(f):f};Editor.addRetryToError=function(b,c){if(null!=b){var f=null!=b.error?b.error:b;null==f.retry&&(f.retry=c)}};Editor.configure=function(b,c){if(null!=b){Editor.config=b;Editor.configVersion=b.version;Menus.prototype.defaultFonts=b.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=
+b.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=b.defaultColors||ColorDialog.prototype.defaultColors;ColorDialog.prototype.colorNames=b.colorNames||ColorDialog.prototype.colorNames;StyleFormatPanel.prototype.defaultColorSchemes=b.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=b.defaultEdgeLength||Graph.prototype.defaultEdgeLength;DrawioFile.prototype.autosaveDelay=b.autosaveDelay||DrawioFile.prototype.autosaveDelay;
+null!=b.templateFile&&(EditorUi.templateFile=b.templateFile);null!=b.styles&&(Array.isArray(b.styles)?Editor.styles=b.styles:EditorUi.debug("Configuration Error: Array expected for styles"));null!=b.globalVars&&(Editor.globalVars=b.globalVars);null!=b.compressXml&&(Editor.compressXml=b.compressXml);null!=b.includeDiagram&&(Editor.defaultIncludeDiagram=b.includeDiagram);null!=b.simpleLabels&&(Editor.simpleLabels=b.simpleLabels);null!=b.oneDriveInlinePicker&&(Editor.oneDriveInlinePicker=b.oneDriveInlinePicker);
+null!=b.darkColor&&(Editor.darkColor=b.darkColor);null!=b.lightColor&&(Editor.lightColor=b.lightColor);null!=b.settingsName&&(Editor.configurationKey="."+b.settingsName+"-configuration",Editor.settingsKey="."+b.settingsName+"-config",mxSettings.key=Editor.settingsKey);b.customFonts&&(Menus.prototype.defaultFonts=b.customFonts.concat(Menus.prototype.defaultFonts));b.customPresetColors&&(ColorDialog.prototype.presetColors=b.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=b.customColorSchemes&&
+(StyleFormatPanel.prototype.defaultColorSchemes=b.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));if(null!=b.css){var f=document.createElement("style");f.setAttribute("type","text/css");f.appendChild(document.createTextNode(b.css));var d=document.getElementsByTagName("script")[0];d.parentNode.insertBefore(f,d)}null!=b.libraries&&(Sidebar.prototype.customEntries=b.libraries);null!=b.enabledLibraries&&(Array.isArray(b.enabledLibraries)?Sidebar.prototype.enabledLibraries=b.enabledLibraries:
+EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=b.defaultLibraries&&(Sidebar.prototype.defaultEntries=b.defaultLibraries);null!=b.defaultCustomLibraries&&(Editor.defaultCustomLibraries=b.defaultCustomLibraries);null!=b.enableCustomLibraries&&(Editor.enableCustomLibraries=b.enableCustomLibraries);null!=b.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=b.defaultVertexStyle);null!=b.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=b.defaultEdgeStyle);null!=
+b.defaultPageVisible&&(Graph.prototype.defaultPageVisible=b.defaultPageVisible);null!=b.defaultGridEnabled&&(Graph.prototype.defaultGridEnabled=b.defaultGridEnabled);null!=b.zoomWheel&&(Graph.zoomWheel=b.zoomWheel);null!=b.zoomFactor&&(f=parseFloat(b.zoomFactor),!isNaN(f)&&1<f?Graph.prototype.zoomFactor=f:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=b.gridSteps&&(f=parseInt(b.gridSteps),!isNaN(f)&&0<f?mxGraphView.prototype.gridSteps=f:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));
+null!=b.pageFormat&&(f=parseInt(b.pageFormat.width),d=parseInt(b.pageFormat.height),!isNaN(f)&&0<f&&!isNaN(d)&&0<d?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,f,d),mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):EditorUi.debug("Configuration Error: {width: int, height: int} expected for pageFormat"));b.thumbWidth&&(Sidebar.prototype.thumbWidth=b.thumbWidth);b.thumbHeight&&(Sidebar.prototype.thumbHeight=b.thumbHeight);b.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml=
+b.emptyLibraryXml);b.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=b.emptyDiagramXml);b.sidebarWidth&&(EditorUi.prototype.hsplitPosition=b.sidebarWidth);b.sidebarTitles&&(Sidebar.prototype.sidebarTitles=b.sidebarTitles);b.sidebarTitleSize&&(f=parseInt(b.sidebarTitleSize),!isNaN(f)&&0<f?Sidebar.prototype.sidebarTitleSize=f:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));b.fontCss&&("string"===typeof b.fontCss?Editor.configureFontCss(b.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));
+null!=b.autosaveDelay&&(f=parseInt(b.autosaveDelay),!isNaN(f)&&0<f?DrawioFile.prototype.autosaveDelay=f:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));if(null!=b.plugins&&!c)for(App.initPluginCallback(),f=0;f<b.plugins.length;f++)mxscript(b.plugins[f]);null!=b.maxImageBytes&&(EditorUi.prototype.maxImageBytes=b.maxImageBytes);null!=b.maxImageSize&&(EditorUi.prototype.maxImageSize=b.maxImageSize)}};Editor.configureFontCss=function(b){if(null!=b){Editor.prototype.fontCss=
+b;var c=document.getElementsByTagName("script")[0];if(null!=c&&null!=c.parentNode){var f=document.createElement("style");f.setAttribute("type","text/css");f.appendChild(document.createTextNode(b));c.parentNode.insertBefore(f,c);b=b.split("url(");for(f=1;f<b.length;f++){var d=b[f].indexOf(")"),d=Editor.trimCssUrl(b[f].substring(0,d)),e=document.createElement("link");e.setAttribute("rel","preload");e.setAttribute("href",d);e.setAttribute("as","font");e.setAttribute("crossorigin","");c.parentNode.insertBefore(e,
+c)}}}};Editor.trimCssUrl=function(b){return b.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";Editor.GUID_LENGTH=20;Editor.guid=function(b){b=null!=b?b:Editor.GUID_LENGTH;for(var c=[],f=0;f<b;f++)c.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return c.join("")};Editor.prototype.timeout=
+25E3;Editor.prototype.useForeignObjectForMath=!0;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(c){c=null!=c&&"mxlibrary"!=c.nodeName?this.extractGraphModel(c):null;if(null!=c){var f=c.getElementsByTagName("parsererror");if(null!=f&&0<f.length){var f=f[0],d=f.getElementsByTagName("div");null!=d&&0<d.length&&(f=d[0]);throw{message:mxUtils.getTextContent(f)};
+}if("mxGraphModel"==c.nodeName){f=c.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=f&&""!=f)f!=this.graph.currentStyle&&(d=null!=this.graph.themes?this.graph.themes[f]:mxUtils.load(STYLE_PATH+"/"+f+".xml").getDocumentElement(),null!=d&&(e=new mxCodec(d.ownerDocument),e.decode(d,this.graph.getStylesheet())));else if(d=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=d){var e=new mxCodec(d.ownerDocument);
+e.decode(d,this.graph.getStylesheet())}this.graph.currentStyle=f;this.graph.mathEnabled="1"==urlParams.math||"1"==c.getAttribute("math");f=c.getAttribute("backgroundImage");null!=f?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(f)):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();
+this.graph.setShadowVisible("1"==c.getAttribute("shadow"),!1);if(f=c.getAttribute("extFonts"))try{for(f=f.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),d=0;d<f.length;d++)this.graph.addExtFont(f[d].name,f[d].url)}catch(na){console.log("ExtFonts format error: "+na.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};
+};var e=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(b,c){b=null!=b?b:!0;var f=e.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&f.setAttribute("style",this.graph.currentStyle);var d=this.graph.getBackgroundImageObject(this.graph.backgroundImage,c);null!=d&&f.setAttribute("backgroundImage",JSON.stringify(d));f.setAttribute("math",this.graph.mathEnabled?"1":"0");f.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&
+0<this.graph.extFonts.length&&(d=this.graph.extFonts.map(function(b){return b.name+"^"+b.url}),f.setAttribute("extFonts",d.join("|")));return f};Editor.prototype.isDataSvg=function(b){try{var c=mxUtils.parseXml(b).documentElement.getAttribute("content");if(null!=c&&(null!=c&&"<"!=c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)),null!=c&&0<c.length)){var f=mxUtils.parseXml(c).documentElement;return"mxfile"==
+f.nodeName||"mxGraphModel"==f.nodeName}}catch(da){}return!1};Editor.prototype.extractGraphModel=function(b,c,f){return Editor.extractGraphModel.apply(this,arguments)};var d=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&
+this.graph.isCssTransformsSupported();this.graph.updateCssTransform();d.apply(this,arguments)};var c=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){c.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.mathJaxWebkitCss=
+"div.MathJax_SVG_Display { position: static; }\nspan.MathJax_SVG { position: static !important; }";Editor.initMath=function(b,c){if("undefined"===typeof window.MathJax){b=(null!=b?b:DRAW_MATH_URL+"/MathJax.js")+"?config=TeX-MML-AM_"+("html"==urlParams["math-output"]?"HTMLorMML":"SVG")+"-full";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(b){window.setTimeout(function(){"hidden"!=b.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,b])},0)};var f=null!=urlParams["math-font"]?decodeURIComponent(urlParams["math-font"]):
+"TeX";c=null!=c?c:{"HTML-CSS":{availableFonts:[f],imageFont:null},SVG:{font:f,useFontCache:!1},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(c);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&
+"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var d=Editor.prototype.init;Editor.prototype.init=function(){d.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,c){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};f=document.getElementsByTagName("script");if(null!=f&&0<f.length){var e=document.createElement("script");
+e.setAttribute("type","text/javascript");e.setAttribute("src",b);f[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var l=document.createElement("style");l.type="text/css";l.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(l)}}catch(T){}}};Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;
var c=[];b.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(b,f,d,e){void 0!==f?c.push(f.replace(/\\'/g,"'")):void 0!==d?c.push(d.replace(/\\"/g,'"')):void 0!==e&&c.push(e);return""});/,\s*$/.test(b)&&c.push("");return c};Editor.prototype.isCorsEnabledForUrl=function(b){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||b.substring(0,window.location.origin.length)==window.location.origin)return!0;null!=urlParams.cors&&
null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(b)||"https://raw.githubusercontent.com/"===b.substring(0,34)||"https://fonts.googleapis.com/"===b.substring(0,29)||"https://fonts.gstatic.com/"===b.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var b=new mxUrlConverter;b.updateBaseUrl();var c=b.convert,f=this;b.convert=function(d){if(null!=d){var e="http://"==d.substring(0,7)||"https://"==
d.substring(0,8);e&&!navigator.onLine?d=Editor.svgBrokenImage.src:!e||d.substring(0,b.baseUrl.length)==b.baseUrl||f.crossOriginImages&&f.isCorsEnabledForUrl(d)?"chrome-extension://"==d.substring(0,19)||mxClient.IS_CHROMEAPP||(d=c.apply(this,arguments)):d=PROXY_URL+"?url="+encodeURIComponent(d)}return d};return b};Editor.createSvgDataUri=function(b){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(b)))};Editor.prototype.convertImageToDataUri=function(b,c){try{var f=!0,d=window.setTimeout(mxUtils.bind(this,
function(){f=!1;c(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(b))mxUtils.get(b,mxUtils.bind(this,function(b){window.clearTimeout(d);f&&c(Editor.createSvgDataUri(b.getText()))}),function(){window.clearTimeout(d);f&&c(Editor.svgBrokenImage.src)});else{var e=new Image;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(d);if(f)try{var b=document.createElement("canvas"),l=b.getContext("2d");b.height=e.height;b.width=e.width;l.drawImage(e,0,0);
c(b.toDataURL())}catch(ha){c(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(d);f&&c(Editor.svgBrokenImage.src)};e.src=b}}catch(ea){c(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,c,f,d){null==d&&(d=this.createImageUrlConverter());var e=0,l=f||{};f=mxUtils.bind(this,function(f,m){for(var g=b.getElementsByTagName(f),p=0;p<g.length;p++)mxUtils.bind(this,function(f){try{if(null!=f){var g=d.convert(f.getAttribute(m));if(null!=g&&"data:"!=g.substring(0,5)){var p=
-l[g];null==p?(e++,this.convertImageToDataUri(g,function(d){null!=d&&(l[g]=d,f.setAttribute(m,d));e--;0==e&&c(b)})):f.setAttribute(m,p)}else null!=g&&f.setAttribute(m,g)}}catch(O){}})(g[p])});f("image","xlink:href");f("img","src");0==e&&c(b)};Editor.base64Encode=function(b){for(var c="",f=0,d=b.length,e,l,m;f<d;){e=b.charCodeAt(f++)&255;if(f==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&
+l[g];null==p?(e++,this.convertImageToDataUri(g,function(d){null!=d&&(l[g]=d,f.setAttribute(m,d));e--;0==e&&c(b)})):f.setAttribute(m,p)}else null!=g&&f.setAttribute(m,g)}}catch(N){}})(g[p])});f("image","xlink:href");f("img","src");0==e&&c(b)};Editor.base64Encode=function(b){for(var c="",f=0,d=b.length,e,l,m;f<d;){e=b.charCodeAt(f++)&255;if(f==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&
3)<<4);c+="==";break}l=b.charCodeAt(f++);if(f==d){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(l&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((l&15)<<2);c+="=";break}m=b.charCodeAt(f++);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&
3)<<4|(l&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((l&15)<<2|(m&192)>>6);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m&63)}return c};Editor.prototype.loadUrl=function(b,c,f,d,e,l,m,g){try{var p=!m&&(d||/(\.png)($|\?)/i.test(b)||/(\.jpe?g)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.pdf)($|\?)/i.test(b));e=null!=e?e:!0;var k=mxUtils.bind(this,function(){mxUtils.get(b,mxUtils.bind(this,function(b){if(200<=b.getStatus()&&
299>=b.getStatus()){if(null!=c){var d=b.getText();if(p){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){b=mxUtilsBinaryToArray(b.request.responseBody).toArray();for(var d=Array(b.length),e=0;e<b.length;e++)d[e]=String.fromCharCode(b[e]);d=d.join("")}l=null!=l?l:"data:image/png;base64,";d=l+Editor.base64Encode(d)}c(d)}}else null!=f&&(0==b.getStatus()?f({message:mxResources.get("accessDenied")},b):f({message:mxResources.get("error")+" "+b.getStatus()},
-b))}),function(b){null!=f&&f({message:mxResources.get("error")+" "+b.getStatus()})},p,this.timeout,function(){e&&null!=f&&f({code:App.ERROR_TIMEOUT,retry:k})},g)});k()}catch(ka){null!=f&&f(ka)}};Editor.prototype.absoluteCssFonts=function(b){var c=null;if(null!=b){var f=b.split("url(");if(0<f.length){c=[f[0]];b=window.location.pathname;var d=null!=b?b.lastIndexOf("/"):-1;0<=d&&(b=b.substring(0,d+1));var d=document.getElementsByTagName("base"),e=null;null!=d&&0<d.length&&(e=d[0].getAttribute("href"));
+b))}),function(b){null!=f&&f({message:mxResources.get("error")+" "+b.getStatus()})},p,this.timeout,function(){e&&null!=f&&f({code:App.ERROR_TIMEOUT,retry:k})},g)});k()}catch(ja){null!=f&&f(ja)}};Editor.prototype.absoluteCssFonts=function(b){var c=null;if(null!=b){var f=b.split("url(");if(0<f.length){c=[f[0]];b=window.location.pathname;var d=null!=b?b.lastIndexOf("/"):-1;0<=d&&(b=b.substring(0,d+1));var d=document.getElementsByTagName("base"),e=null;null!=d&&0<d.length&&(e=d[0].getAttribute("href"));
for(var l=1;l<f.length;l++)if(d=f[l].indexOf(")"),0<d){var m=Editor.trimCssUrl(f[l].substring(0,d));this.graph.isRelativeUrl(m)&&(m=null!=e?e+m:window.location.protocol+"//"+window.location.hostname+("/"==m.charAt(0)?"":b)+m);c.push('url("'+m+'"'+f[l].substring(d))}else c.push(f[l])}else c=[b]}return null!=c?c.join(""):null};Editor.prototype.mapFontUrl=function(b,c,f){/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(c));f(b,c)};Editor.prototype.embedCssFonts=
function(b,c){var f=b.split("url("),d=0;null==this.cachedFonts&&(this.cachedFonts={});var e=mxUtils.bind(this,function(){if(0==d){for(var b=[f[0]],e=1;e<f.length;e++){var l=f[e].indexOf(")");b.push('url("');b.push(this.cachedFonts[Editor.trimCssUrl(f[e].substring(0,l))]);b.push('"'+f[e].substring(l))}c(b.join(""))}});if(0<f.length){for(var l=1;l<f.length;l++){var m=f[l].indexOf(")"),g=null,p=f[l].indexOf("format(",m);0<p&&(g=Editor.trimCssUrl(f[l].substring(p+7,f[l].indexOf(")",p))));mxUtils.bind(this,
function(b){if(null==this.cachedFonts[b]){this.cachedFonts[b]=b;d++;var c="application/x-font-ttf";if("svg"==g||/(\.svg)($|\?)/i.test(b))c="image/svg+xml";else if("otf"==g||"embedded-opentype"==g||/(\.otf)($|\?)/i.test(b))c="application/x-font-opentype";else if("woff"==g||/(\.woff)($|\?)/i.test(b))c="application/font-woff";else if("woff2"==g||/(\.woff2)($|\?)/i.test(b))c="application/font-woff2";else if("eot"==g||/(\.eot)($|\?)/i.test(b))c="application/vnd.ms-fontobject";else if("sfnt"==g||/(\.sfnt)($|\?)/i.test(b))c=
@@ -10632,11 +10642,11 @@ function(b){if(null==this.cachedFonts[b]){this.cachedFonts[b]=b;d++;var c="appli
Editor.prototype.createGoogleFontCache=function(){var b={},c;for(c in Graph.fontMapping)Graph.isCssFontUrl(c)&&(b[c]=Graph.fontMapping[c]);return b};Editor.prototype.embedExtFonts=function(b){var c=this.graph.getCustomFonts();if(0<c.length){var f="",d=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts=this.createGoogleFontCache());for(var e=mxUtils.bind(this,function(){0==d&&this.embedCssFonts(f,b)}),l=0;l<c.length;l++)mxUtils.bind(this,function(b,c){Graph.isCssFontUrl(c)?null==this.cachedGoogleFonts[c]?
(d++,this.loadUrl(c,mxUtils.bind(this,function(b){this.cachedGoogleFonts[c]=b;f+=b;d--;e()}),mxUtils.bind(this,function(b){d--;f+="@import url("+c+");";e()}))):f+=this.cachedGoogleFonts[c]:f+='@font-face {font-family: "'+b+'";src: url("'+c+'")}'})(c[l].name,c[l].url);e()}else b()};Editor.prototype.addMathCss=function(b){b=b.getElementsByTagName("defs");if(null!=b&&0<b.length)for(var c=document.getElementsByTagName("style"),f=0;f<c.length;f++){var d=mxUtils.getTextContent(c[f]);0>d.indexOf("mxPageSelector")&&
0<d.indexOf("MathJax")&&b[0].appendChild(c[f].cloneNode(!0))}};Editor.prototype.addFontCss=function(b,c){c=null!=c?c:this.absoluteCssFonts(this.fontCss);if(null!=c){var f=b.getElementsByTagName("defs"),d=b.ownerDocument;0==f.length?(f=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"defs"):d.createElement("defs"),null!=b.firstChild?b.insertBefore(f,b.firstChild):b.appendChild(f)):f=f[0];d=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"style"):d.createElement("style");d.setAttribute("type",
-"text/css");mxUtils.setTextContent(d,c);f.appendChild(d)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,c,f){var d=mxClient.IS_FF?8192:16384;return Math.min(f,Math.min(d/b,d/c))};Editor.prototype.exportToCanvas=function(b,c,f,d,e,l,m,g,p,k,q,t,n,v,y,u,x,A){try{l=null!=l?l:!0;m=null!=m?m:!0;t=null!=t?t:this.graph;n=null!=n?n:0;var C=p?null:t.background;C==mxConstants.NONE&&(C=null);null==C&&(C=d);null==
-C&&0==p&&(C=u?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(t.getSvg(null,null,n,v,null,m,null,null,null,k,null,u,x,A),mxUtils.bind(this,function(f){try{var d=new Image;d.onload=mxUtils.bind(this,function(){try{var m=function(){mxClient.IS_SF?window.setTimeout(function(){v.drawImage(d,0,0);b(p,f)},0):(v.drawImage(d,0,0),b(p,f))},p=document.createElement("canvas"),k=parseInt(f.getAttribute("width")),q=parseInt(f.getAttribute("height"));g=null!=g?g:1;null!=c&&(g=l?Math.min(1,Math.min(3*
-c/(4*q),c/k)):c/k);g=this.getMaxCanvasScale(k,q,g);k=Math.ceil(g*k);q=Math.ceil(g*q);p.setAttribute("width",k);p.setAttribute("height",q);var v=p.getContext("2d");null!=C&&(v.beginPath(),v.rect(0,0,k,q),v.fillStyle=C,v.fill());1!=g&&v.scale(g,g);if(y){var u=t.view,x=u.scale;u.scale=1;var A=btoa(unescape(encodeURIComponent(u.createSvgGrid(u.gridColor))));u.scale=x;var A="data:image/svg+xml;base64,"+A,D=t.gridSize*u.gridSteps*g,L=t.getGraphBounds(),E=u.translate.x*x,H=u.translate.y*x,z=E+(L.x-E)/x-
-n,F=H+(L.y-H)/x-n,I=new Image;I.onload=function(){try{for(var b=-Math.round(D-mxUtils.mod((E-z)*g,D)),c=-Math.round(D-mxUtils.mod((H-F)*g,D));b<k;b+=D)for(var f=c;f<q;f+=D)v.drawImage(I,b/g,f/g);m()}catch(Ea){null!=e&&e(Ea)}};I.onerror=function(b){null!=e&&e(b)};I.src=A}else m()}catch(Aa){null!=e&&e(Aa)}});d.onerror=function(b){null!=e&&e(b)};k&&this.graph.addSvgShadow(f);this.graph.mathEnabled&&this.addMathCss(f);var m=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(f,
-this.resolvedFontCss),d.src=Editor.createSvgDataUri(mxUtils.getXml(f))}catch(ba){null!=e&&e(ba)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(f,b),this.loadFonts(m)}catch(ta){null!=e&&e(ta)}}))}catch(ba){null!=e&&e(ba)}}),f,q)}catch(U){null!=e&&e(U)}};Editor.crcTable=[];for(var g=0;256>g;g++)for(var k=g,n=0;8>n;n++)k=1==(k&1)?3988292384^k>>>1:k>>>1,Editor.crcTable[g]=k;Editor.updateCRC=function(b,c,f,d){for(var e=0;e<d;e++)b=Editor.crcTable[(b^c.charCodeAt(f+e))&
+"text/css");mxUtils.setTextContent(d,c);f.appendChild(d)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,c,f){var d=mxClient.IS_FF?8192:16384;return Math.min(f,Math.min(d/b,d/c))};Editor.prototype.exportToCanvas=function(b,c,f,d,e,l,m,g,p,k,q,t,n,v,y,u,x,z){try{l=null!=l?l:!0;m=null!=m?m:!0;t=null!=t?t:this.graph;n=null!=n?n:0;var C=p?null:t.background;C==mxConstants.NONE&&(C=null);null==C&&(C=d);null==
+C&&0==p&&(C=u?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(t.getSvg(null,null,n,v,null,m,null,null,null,k,null,u,x,z),mxUtils.bind(this,function(f){try{var d=new Image;d.onload=mxUtils.bind(this,function(){try{var m=function(){mxClient.IS_SF?window.setTimeout(function(){v.drawImage(d,0,0);b(p,f)},0):(v.drawImage(d,0,0),b(p,f))},p=document.createElement("canvas"),k=parseInt(f.getAttribute("width")),q=parseInt(f.getAttribute("height"));g=null!=g?g:1;null!=c&&(g=l?Math.min(1,Math.min(3*
+c/(4*q),c/k)):c/k);g=this.getMaxCanvasScale(k,q,g);k=Math.ceil(g*k);q=Math.ceil(g*q);p.setAttribute("width",k);p.setAttribute("height",q);var v=p.getContext("2d");null!=C&&(v.beginPath(),v.rect(0,0,k,q),v.fillStyle=C,v.fill());1!=g&&v.scale(g,g);if(y){var u=t.view,x=u.scale;u.scale=1;var z=btoa(unescape(encodeURIComponent(u.createSvgGrid(u.gridColor))));u.scale=x;var z="data:image/svg+xml;base64,"+z,D=t.gridSize*u.gridSteps*g,F=t.getGraphBounds(),L=u.translate.x*x,H=u.translate.y*x,A=L+(F.x-L)/x-
+n,G=H+(F.y-H)/x-n,E=new Image;E.onload=function(){try{for(var b=-Math.round(D-mxUtils.mod((L-A)*g,D)),c=-Math.round(D-mxUtils.mod((H-G)*g,D));b<k;b+=D)for(var f=c;f<q;f+=D)v.drawImage(E,b/g,f/g);m()}catch(Ea){null!=e&&e(Ea)}};E.onerror=function(b){null!=e&&e(b)};E.src=z}else m()}catch(Aa){null!=e&&e(Aa)}});d.onerror=function(b){null!=e&&e(b)};k&&this.graph.addSvgShadow(f);this.graph.mathEnabled&&this.addMathCss(f);var m=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(f,
+this.resolvedFontCss),d.src=Editor.createSvgDataUri(mxUtils.getXml(f))}catch(ba){null!=e&&e(ba)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(f,b),this.loadFonts(m)}catch(ta){null!=e&&e(ta)}}))}catch(ba){null!=e&&e(ba)}}),f,q)}catch(S){null!=e&&e(S)}};Editor.crcTable=[];for(var g=0;256>g;g++)for(var k=g,n=0;8>n;n++)k=1==(k&1)?3988292384^k>>>1:k>>>1,Editor.crcTable[g]=k;Editor.updateCRC=function(b,c,f,d){for(var e=0;e<d;e++)b=Editor.crcTable[(b^c.charCodeAt(f+e))&
255]^b>>>8;return b};Editor.crc32=function(b){for(var c=-1,f=0;f<b.length;f++)c=c>>>8^Editor.crcTable[(c^b.charCodeAt(f))&255];return(c^-1)>>>0};Editor.writeGraphModelToPng=function(b,c,f,d,e){function l(b,c){var f=p;p+=c;return b.substring(f,p)}function m(b){b=l(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function g(b){return String.fromCharCode(b>>24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,
!0);var p=0;if(l(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(l(b,4),"IHDR"!=l(b,4))null!=e&&e();else{l(b,17);e=b.substring(0,p);do{var k=m(b);if("IDAT"==l(b,4)){e=b.substring(0,p-8);"pHYs"==c&&"dpi"==f?(f=Math.round(d/.0254),f=g(f)+g(f)+String.fromCharCode(1)):f=f+String.fromCharCode(0)+("zTXt"==c?String.fromCharCode(0):"")+d;d=4294967295;d=Editor.updateCRC(d,c,0,4);d=Editor.updateCRC(d,f,0,f.length);e+=g(f.length)+c+f+g(d^4294967295);e+=b.substring(p-
8,b.length);break}e+=b.substring(p-8,p-4+k);l(b,k);l(b,4)}while(k);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var f=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(b,c){f.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var l=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){l.apply(this,
@@ -10676,17 +10686,17 @@ l.push(m.length))}t.setCellStyles(b,c,t.getSelectionCells());e.push(b);l.push(c)
l,"cells",t.getSelectionCells()))}finally{t.getModel().endUpdate()}}function e(c,f,d){var e=mxUtils.getOffset(b,!0),l=mxUtils.getOffset(c,!0);f.style.position="absolute";f.style.left=l.x-e.x+"px";f.style.top=l.y-e.y+"px";f.style.width=c.offsetWidth+"px";f.style.height=c.offsetHeight-(d?4:0)+"px";f.style.zIndex=5}function l(b,c,f){var e=document.createElement("div");e.style.width="32px";e.style.height="4px";e.style.margin="2px";e.style.border="1px solid black";e.style.background=c&&"none"!=c?c:"url('"+
Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(q,function(l){this.editorUi.pickColor(c,function(c){e.style.background="none"==c?"url('"+Dialog.prototype.noColorImage+"')":c;d(b,c,f)});mxEvent.consume(l)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(e);return btn}function m(b,c,f,e,l,m,g){null!=c&&(c=c.split(","),n.push({name:b,values:c,type:f,defVal:e,countProperty:l,parentRow:m,isDeletable:!0,flipBkg:g}));btn=mxUtils.button("+",
mxUtils.bind(q,function(c){for(var p=m,q=0;null!=p.nextSibling;)if(p.nextSibling.getAttribute("data-pName")==b)p=p.nextSibling,q++;else break;var t={type:f,parentRow:m,index:q,isDeletable:!0,defVal:e,countProperty:l},q=k(b,"",t,0==q%2,g);d(b,e,t);p.parentNode.insertBefore(q,p.nextSibling);mxEvent.consume(c)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function g(b,c,f,d,e,l,m){if(0<e){var g=Array(e);c=null!=c?c.split(","):[];for(var p=0;p<e;p++)g[p]=null!=
-c[p]?c[p]:null!=d?d:"";n.push({name:b,values:g,type:f,defVal:d,parentRow:l,flipBkg:m,size:e})}return document.createElement("div")}function p(b,c,f){var e=document.createElement("input");e.type="checkbox";e.checked="1"==c;mxEvent.addListener(e,"change",function(){d(b,e.checked?"1":"0",f)});return e}function k(c,f,k,t,n){var v=k.dispName,u=k.type,y=document.createElement("tr");y.className="gePropRow"+(n?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";y.setAttribute("data-pName",c);y.setAttribute("data-pValue",
-f);t=!1;null!=k.index&&(y.setAttribute("data-index",k.index),v=(null!=v?v:"")+"["+k.index+"]",t=!0);var x=document.createElement("td");x.className="gePropRowCell";v=mxResources.get(v,null,v);mxUtils.write(x,v);x.setAttribute("title",v);t&&(x.style.textAlign="right");y.appendChild(x);x=document.createElement("td");x.className="gePropRowCell";if("color"==u)x.appendChild(l(c,f,k));else if("bool"==u||"boolean"==u)x.appendChild(p(c,f,k));else if("enum"==u){var A=k.enumList;for(n=0;n<A.length;n++)if(v=
-A[n],v.val==f){mxUtils.write(x,mxResources.get(v.dispName,null,v.dispName));break}mxEvent.addListener(x,"click",mxUtils.bind(q,function(){var l=document.createElement("select");e(x,l);for(var m=0;m<A.length;m++){var g=A[m],p=document.createElement("option");p.value=mxUtils.htmlEntities(g.val);mxUtils.write(p,mxResources.get(g.dispName,null,g.dispName));l.appendChild(p)}l.value=f;b.appendChild(l);mxEvent.addListener(l,"change",function(){var b=mxUtils.htmlEntities(l.value);d(c,b,k)});l.focus();mxEvent.addListener(l,
-"blur",function(){b.removeChild(l)})}))}else"dynamicArr"==u?x.appendChild(m(c,f,k.subType,k.subDefVal,k.countProperty,y,n)):"staticArr"==u?x.appendChild(g(c,f,k.subType,k.subDefVal,k.size,y,n)):"readOnly"==u?(n=document.createElement("input"),n.setAttribute("readonly",""),n.value=f,n.style.width="96px",n.style.borderWidth="0px",x.appendChild(n)):(x.innerHTML=mxUtils.htmlEntities(decodeURIComponent(f)),mxEvent.addListener(x,"click",mxUtils.bind(q,function(){function l(){var b=m.value,b=0==b.length&&
-"string"!=u?0:b;k.allowAuto&&(null!=b.trim&&"auto"==b.trim().toLowerCase()?(b="auto",u="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=k.min&&b<k.min?b=k.min:null!=k.max&&b>k.max&&(b=k.max);b=encodeURIComponent(("int"==u?parseInt(b):b)+"");d(c,b,k)}var m=document.createElement("input");e(x,m,!0);m.value=decodeURIComponent(f);m.className="gePropEditor";"int"!=u&&"float"!=u||k.allowAuto||(m.type="number",m.step="int"==u?"1":"any",null!=k.min&&(m.min=parseFloat(k.min)),null!=k.max&&(m.max=parseFloat(k.max)));
-b.appendChild(m);mxEvent.addListener(m,"keypress",function(b){13==b.keyCode&&l()});m.focus();mxEvent.addListener(m,"blur",function(){l()})})));k.isDeletable&&(n=mxUtils.button("-",mxUtils.bind(q,function(b){d(c,"",k,k.index);mxEvent.consume(b)})),n.style.height="16px",n.style.width="25px",n.style["float"]="right",n.className="geColorBtn",x.appendChild(n));y.appendChild(x);return y}var q=this,t=this.editorUi.editor.graph,n=[];b.style.position="relative";b.style.padding="0";var v=document.createElement("table");
-v.className="geProperties";v.style.whiteSpace="nowrap";v.style.width="100%";var u=document.createElement("tr");u.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var x=document.createElement("img");x.src=Sidebar.prototype.expandedImage;x.style.verticalAlign="middle";y.appendChild(x);mxUtils.write(y,mxResources.get("property"));u.style.cursor="pointer";var A=function(){var c=v.querySelectorAll(".gePropNonHeaderRow"),f;if(q.editorUi.propertiesCollapsed){x.src=
-Sidebar.prototype.collapsedImage;f="none";for(var d=b.childNodes.length-1;0<=d;d--)try{var e=b.childNodes[d],l=e.nodeName.toUpperCase();"INPUT"!=l&&"SELECT"!=l||b.removeChild(e)}catch(ya){}}else x.src=Sidebar.prototype.expandedImage,f="";for(d=0;d<c.length;d++)c[d].style.display=f};mxEvent.addListener(u,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;A()});u.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");
-u.appendChild(y);v.appendChild(u);var C=!1,D=!1,u=null;1==f.vertices.length&&0==f.edges.length?u=f.vertices[0].id:0==f.vertices.length&&1==f.edges.length&&(u=f.edges[0].id);null!=u&&v.appendChild(k("id",mxUtils.htmlEntities(u),{dispName:"ID",type:"readOnly"},!0,!1));for(var E in c)if(u=c[E],"function"!=typeof u.isVisible||u.isVisible(f,this)){var H=null!=f.style[E]?mxUtils.htmlEntities(f.style[E]+""):null!=u.getDefaultValue?u.getDefaultValue(f,this):u.defVal;if("separator"==u.type)D=!D;else{if("staticArr"==
-u.type)u.size=parseInt(f.style[u.sizeProperty]||c[u.sizeProperty].defVal)||0;else if(null!=u.dependentProps){for(var z=u.dependentProps,F=[],L=[],y=0;y<z.length;y++){var I=f.style[z[y]];L.push(c[z[y]].subDefVal);F.push(null!=I?I.split(","):[])}u.dependentPropsDefVal=L;u.dependentPropsVals=F}v.appendChild(k(E,H,u,C,D));C=!C}}for(y=0;y<n.length;y++)for(u=n[y],c=u.parentRow,f=0;f<u.values.length;f++)E=k(u.name,u.values[f],{type:u.type,parentRow:u.parentRow,isDeletable:u.isDeletable,index:f,defVal:u.defVal,
-countProperty:u.countProperty,size:u.size},0==f%2,u.flipBkg),c.parentNode.insertBefore(E,c.nextSibling),c=E;b.appendChild(v);A();return b};StyleFormatPanel.prototype.addStyles=function(b){function c(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var f=this.editorUi,d=f.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft=
+c[p]?c[p]:null!=d?d:"";n.push({name:b,values:g,type:f,defVal:d,parentRow:l,flipBkg:m,size:e})}return document.createElement("div")}function p(b,c,f){var e=document.createElement("input");e.type="checkbox";e.checked="1"==c;mxEvent.addListener(e,"change",function(){d(b,e.checked?"1":"0",f)});return e}function k(c,f,k,t,n){var v=k.dispName,y=k.type,u=document.createElement("tr");u.className="gePropRow"+(n?"Dark":"")+(t?"Alt":"")+" gePropNonHeaderRow";u.setAttribute("data-pName",c);u.setAttribute("data-pValue",
+f);t=!1;null!=k.index&&(u.setAttribute("data-index",k.index),v=(null!=v?v:"")+"["+k.index+"]",t=!0);var x=document.createElement("td");x.className="gePropRowCell";v=mxResources.get(v,null,v);mxUtils.write(x,v);x.setAttribute("title",v);t&&(x.style.textAlign="right");u.appendChild(x);x=document.createElement("td");x.className="gePropRowCell";if("color"==y)x.appendChild(l(c,f,k));else if("bool"==y||"boolean"==y)x.appendChild(p(c,f,k));else if("enum"==y){var z=k.enumList;for(n=0;n<z.length;n++)if(v=
+z[n],v.val==f){mxUtils.write(x,mxResources.get(v.dispName,null,v.dispName));break}mxEvent.addListener(x,"click",mxUtils.bind(q,function(){var l=document.createElement("select");e(x,l);for(var m=0;m<z.length;m++){var g=z[m],p=document.createElement("option");p.value=mxUtils.htmlEntities(g.val);mxUtils.write(p,mxResources.get(g.dispName,null,g.dispName));l.appendChild(p)}l.value=f;b.appendChild(l);mxEvent.addListener(l,"change",function(){var b=mxUtils.htmlEntities(l.value);d(c,b,k)});l.focus();mxEvent.addListener(l,
+"blur",function(){b.removeChild(l)})}))}else"dynamicArr"==y?x.appendChild(m(c,f,k.subType,k.subDefVal,k.countProperty,u,n)):"staticArr"==y?x.appendChild(g(c,f,k.subType,k.subDefVal,k.size,u,n)):"readOnly"==y?(n=document.createElement("input"),n.setAttribute("readonly",""),n.value=f,n.style.width="96px",n.style.borderWidth="0px",x.appendChild(n)):(x.innerHTML=mxUtils.htmlEntities(decodeURIComponent(f)),mxEvent.addListener(x,"click",mxUtils.bind(q,function(){function l(){var b=m.value,b=0==b.length&&
+"string"!=y?0:b;k.allowAuto&&(null!=b.trim&&"auto"==b.trim().toLowerCase()?(b="auto",y="string"):(b=parseFloat(b),b=isNaN(b)?0:b));null!=k.min&&b<k.min?b=k.min:null!=k.max&&b>k.max&&(b=k.max);b=encodeURIComponent(("int"==y?parseInt(b):b)+"");d(c,b,k)}var m=document.createElement("input");e(x,m,!0);m.value=decodeURIComponent(f);m.className="gePropEditor";"int"!=y&&"float"!=y||k.allowAuto||(m.type="number",m.step="int"==y?"1":"any",null!=k.min&&(m.min=parseFloat(k.min)),null!=k.max&&(m.max=parseFloat(k.max)));
+b.appendChild(m);mxEvent.addListener(m,"keypress",function(b){13==b.keyCode&&l()});m.focus();mxEvent.addListener(m,"blur",function(){l()})})));k.isDeletable&&(n=mxUtils.button("-",mxUtils.bind(q,function(b){d(c,"",k,k.index);mxEvent.consume(b)})),n.style.height="16px",n.style.width="25px",n.style["float"]="right",n.className="geColorBtn",x.appendChild(n));u.appendChild(x);return u}var q=this,t=this.editorUi.editor.graph,n=[];b.style.position="relative";b.style.padding="0";var v=document.createElement("table");
+v.className="geProperties";v.style.whiteSpace="nowrap";v.style.width="100%";var y=document.createElement("tr");y.className="gePropHeader";var u=document.createElement("th");u.className="gePropHeaderCell";var x=document.createElement("img");x.src=Sidebar.prototype.expandedImage;x.style.verticalAlign="middle";u.appendChild(x);mxUtils.write(u,mxResources.get("property"));y.style.cursor="pointer";var z=function(){var c=v.querySelectorAll(".gePropNonHeaderRow"),f;if(q.editorUi.propertiesCollapsed){x.src=
+Sidebar.prototype.collapsedImage;f="none";for(var d=b.childNodes.length-1;0<=d;d--)try{var e=b.childNodes[d],l=e.nodeName.toUpperCase();"INPUT"!=l&&"SELECT"!=l||b.removeChild(e)}catch(ya){}}else x.src=Sidebar.prototype.expandedImage,f="";for(d=0;d<c.length;d++)c[d].style.display=f};mxEvent.addListener(y,"click",function(){q.editorUi.propertiesCollapsed=!q.editorUi.propertiesCollapsed;z()});y.appendChild(u);u=document.createElement("th");u.className="gePropHeaderCell";u.innerHTML=mxResources.get("value");
+y.appendChild(u);v.appendChild(y);var C=!1,D=!1,y=null;1==f.vertices.length&&0==f.edges.length?y=f.vertices[0].id:0==f.vertices.length&&1==f.edges.length&&(y=f.edges[0].id);null!=y&&v.appendChild(k("id",mxUtils.htmlEntities(y),{dispName:"ID",type:"readOnly"},!0,!1));for(var F in c)if(y=c[F],"function"!=typeof y.isVisible||y.isVisible(f,this)){var H=null!=f.style[F]?mxUtils.htmlEntities(f.style[F]+""):null!=y.getDefaultValue?y.getDefaultValue(f,this):y.defVal;if("separator"==y.type)D=!D;else{if("staticArr"==
+y.type)y.size=parseInt(f.style[y.sizeProperty]||c[y.sizeProperty].defVal)||0;else if(null!=y.dependentProps){for(var A=y.dependentProps,G=[],L=[],u=0;u<A.length;u++){var E=f.style[A[u]];L.push(c[A[u]].subDefVal);G.push(null!=E?E.split(","):[])}y.dependentPropsDefVal=L;y.dependentPropsVals=G}v.appendChild(k(F,H,y,C,D));C=!C}}for(u=0;u<n.length;u++)for(y=n[u],c=y.parentRow,f=0;f<y.values.length;f++)F=k(y.name,y.values[f],{type:y.type,parentRow:y.parentRow,isDeletable:y.isDeletable,index:f,defVal:y.defVal,
+countProperty:y.countProperty,size:y.size},0==f%2,y.flipBkg),c.parentNode.insertBefore(F,c.nextSibling),c=F;b.appendChild(v);z();return b};StyleFormatPanel.prototype.addStyles=function(b){function c(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var f=this.editorUi,d=f.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft=
"16px";b.style.paddingBottom="6px";b.style.position="relative";b.appendChild(e);var l="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "),m=document.createElement("div");m.style.whiteSpace="nowrap";m.style.position="relative";m.style.textAlign="center";m.style.width="210px";for(var g=[],p=0;p<this.defaultColorSchemes.length;p++){var k=document.createElement("div");k.style.display=
"inline-block";k.style.width="6px";k.style.height="6px";k.style.marginLeft="4px";k.style.marginRight="3px";k.style.borderRadius="3px";k.style.cursor="pointer";k.style.background="transparent";k.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(k,"click",mxUtils.bind(this,function(){q(b)}))})(p);g.push(k);m.appendChild(k)}var q=mxUtils.bind(this,function(b){null!=g[b]&&(null!=this.format.currentScheme&&null!=g[this.format.currentScheme]&&(g[this.format.currentScheme].style.background=
"transparent"),this.format.currentScheme=b,t(this.defaultColorSchemes[this.format.currentScheme]),g[this.format.currentScheme].style.background="#84d7ff")}),t=mxUtils.bind(this,function(b){var c=mxUtils.bind(this,function(b){var c=mxUtils.button("",mxUtils.bind(this,function(c){d.getModel().beginUpdate();try{for(var e=f.getSelectionState().cells,m=0;m<e.length;m++){for(var g=d.getModel().getStyle(e[m]),p=0;p<l.length;p++)g=mxUtils.removeStylename(g,l[p]);var k=d.getModel().isVertex(e[m])?d.defaultVertexStyle:
@@ -10708,8 +10718,8 @@ return b};Graph.getFontUrl=function(b,c){var f=Graph.customFontElements[b.toLowe
mxConstants.STYLE_FONTFAMILY,null);null!=f&&Graph.addFont(f,decodeURIComponent(c))}}return b};Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize="3";
Graph.prototype.edgeMode="move"!=urlParams.edge;Graph.prototype.hiddenTags=null;Graph.prototype.defaultMathEnabled=!1;var x=Graph.prototype.init;Graph.prototype.init=function(){function b(b){c=b}x.apply(this,arguments);this.hiddenTags=[];window.mxFreehand&&(this.freehand=new mxFreehand(this));var c=null;mxEvent.addListener(this.container,"mouseenter",b);mxEvent.addListener(this.container,"mousemove",b);mxEvent.addListener(this.container,"mouseleave",function(b){c=null});this.isMouseInsertPoint=function(){return null!=
c};var f=this.getInsertPoint;this.getInsertPoint=function(){return null!=c?this.getPointForEvent(c):f.apply(this,arguments)};var d=this.layoutManager.getLayout;this.layoutManager.getLayout=function(b){var c=this.graph.getCellStyle(b);if(null!=c&&"rack"==c.childLayout){var f=new mxStackLayout(this.graph,!1);f.gridSize=null!=c.rackUnitSize?parseFloat(c.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;f.marginLeft=c.marginLeft||0;f.marginRight=c.marginRight||0;f.marginTop=
-c.marginTop||0;f.marginBottom=c.marginBottom||0;f.allowGaps=c.allowGaps||0;f.horizontal="1"==mxUtils.getValue(c,"horizontalRack","0");f.resizeParent=!1;f.fill=!0;return f}return d.apply(this,arguments)};this.updateGlobalUrlVariables()};var A=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=function(b,c){return Graph.processFontStyle(A.apply(this,arguments))};var z=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(b,c,f,d,e,l,m,g,p,k,
-q){z.apply(this,arguments);Graph.processFontAttributes(q)};var B=mxText.prototype.redraw;mxText.prototype.redraw=function(){B.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(b,c,f){function d(){for(var b=m.getSelectionCells(),c=[],f=0;f<b.length;f++)m.isCellVisible(b[f])&&c.push(b[f]);m.setSelectionCells(c)}function e(b){m.hiddenTags=b?[]:g.slice();d();m.refresh()}function l(b,f){k.innerHTML="";if(0<
+c.marginTop||0;f.marginBottom=c.marginBottom||0;f.allowGaps=c.allowGaps||0;f.horizontal="1"==mxUtils.getValue(c,"horizontalRack","0");f.resizeParent=!1;f.fill=!0;return f}return d.apply(this,arguments)};this.updateGlobalUrlVariables()};var z=Graph.prototype.postProcessCellStyle;Graph.prototype.postProcessCellStyle=function(b,c){return Graph.processFontStyle(z.apply(this,arguments))};var A=mxSvgCanvas2D.prototype.updateTextNodes;mxSvgCanvas2D.prototype.updateTextNodes=function(b,c,f,d,e,l,m,g,p,k,
+q){A.apply(this,arguments);Graph.processFontAttributes(q)};var B=mxText.prototype.redraw;mxText.prototype.redraw=function(){B.apply(this,arguments);null!=this.node&&"DIV"==this.node.nodeName&&Graph.processFontAttributes(this.node)};Graph.prototype.createTagsDialog=function(b,c,f){function d(){for(var b=m.getSelectionCells(),c=[],f=0;f<b.length;f++)m.isCellVisible(b[f])&&c.push(b[f]);m.setSelectionCells(c)}function e(b){m.hiddenTags=b?[]:g.slice();d();m.refresh()}function l(b,f){k.innerHTML="";if(0<
b.length){var l=document.createElement("table");l.setAttribute("cellpadding","2");l.style.boxSizing="border-box";l.style.tableLayout="fixed";l.style.width="100%";var p=document.createElement("tbody");if(null!=b&&0<b.length)for(var q=0;q<b.length;q++)(function(b){var l=0>mxUtils.indexOf(m.hiddenTags,b),k=document.createElement("tr"),q=document.createElement("td");q.style.align="center";q.style.width="16px";var t=document.createElement("img");t.setAttribute("src",l?Editor.visibleImage:Editor.hiddenImage);
t.setAttribute("title",mxResources.get(l?"hideIt":"show",[b]));mxUtils.setOpacity(t,l?75:25);t.style.verticalAlign="middle";t.style.cursor="pointer";t.style.width="16px";if(c||Editor.isDarkMode())t.style.filter="invert(100%)";q.appendChild(t);mxEvent.addListener(t,"click",function(c){var f=mxUtils.indexOf(m.hiddenTags,b);mxEvent.isShiftDown(c)?e(0<=mxUtils.indexOf(m.hiddenTags,b)):(0>f?m.hiddenTags.push(b):0<=f&&m.hiddenTags.splice(f,1),d(),m.refresh());mxEvent.consume(c)});k.appendChild(q);q=document.createElement("td");
q.style.overflow="hidden";q.style.whiteSpace="nowrap";q.style.textOverflow="ellipsis";q.style.verticalAlign="middle";q.style.cursor="pointer";q.setAttribute("title",b);a=document.createElement("a");mxUtils.write(a,b);a.style.textOverflow="ellipsis";a.style.position="relative";mxUtils.setOpacity(a,l?100:40);q.appendChild(a);mxEvent.addListener(q,"click",function(c){if(mxEvent.isShiftDown(c)){e(!0);var f=m.getCellsForTags([b],null,null,!0);m.isEnabled()?m.setSelectionCells(f):m.highlightCells(f)}else if(l&&
@@ -10720,18 +10730,18 @@ q.style.overflow="hidden";q.style.whiteSpace="nowrap";q.style.textOverflow="elli
mxResources.get("reset"));q.className="geBtn";q.style.margin="0 4px 0 0";var t=mxUtils.button(mxResources.get("add"),function(){null!=f&&f(g,function(b){g=b;n()})});t.setAttribute("title",mxResources.get("add"));t.className="geBtn";t.style.margin="0";m.addListener(mxEvent.ROOT,function(){g=m.hiddenTags.slice()});var n=mxUtils.bind(this,function(c,f){if(b()){for(var d=m.getAllTags(),e=0;e<d.length;e++)0>mxUtils.indexOf(g,d[e])&&g.push(d[e]);g.sort();m.isSelectionEmpty()?l(g):l(g,m.getCommonTagsForCells(m.getSelectionCells()))}});
m.selectionModel.addListener(mxEvent.CHANGE,n);m.model.addListener(mxEvent.CHANGE,n);m.addListener(mxEvent.REFRESH,n);var v=document.createElement("div");v.style.boxSizing="border-box";v.style.whiteSpace="nowrap";v.style.position="absolute";v.style.overflow="hidden";v.style.bottom="0px";v.style.height="42px";v.style.right="10px";v.style.left="10px";m.isEnabled()&&(v.appendChild(q),v.appendChild(t),p.appendChild(v));return{div:p,refresh:n}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,
b=null!=b?b.slice():[],c;for(c in Graph.customFontElements){var f=Graph.customFontElements[c];b.push({name:f.name,url:f.url})}return b};Graph.prototype.setFont=function(b,c){Graph.addFont(b,c);document.execCommand("fontname",!1,b);if(null!=c){var f=this.cellEditor.textarea.getElementsByTagName("font");c=Graph.getFontUrl(b,c);for(var d=0;d<f.length;d++)f[d].getAttribute("face")==b&&f[d].getAttribute("data-font-src")!=c&&f[d].setAttribute("data-font-src",c)}};var y=Graph.prototype.isFastZoomEnabled;
-Graph.prototype.isFastZoomEnabled=function(){return y.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var c in b)this.globalVars[c]=b[c]}catch(T){null!=window.console&&console.log("Error in vars URL parameter: "+T)}};Graph.prototype.getExportVariables=
+Graph.prototype.isFastZoomEnabled=function(){return y.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var c in b)this.globalVars[c]=b[c]}catch(X){null!=window.console&&console.log("Error in vars URL parameter: "+X)}};Graph.prototype.getExportVariables=
function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var C=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var c=C.apply(this,arguments);null==c&&null!=this.globalVars&&(c=this.globalVars[b]);return c};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};
-var G=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,c,f,d,e,l,m,g,p,k,q,t,n,v){var u=null,y=null,x=null;t||null==this.themes||"darkTheme"!=this.defaultThemeName||(u=this.stylesheet,y=this.shapeForegroundColor,x=this.shapeBackgroundColor,this.shapeForegroundColor="darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var A=G.apply(this,
-arguments),C=this.getCustomFonts();if(q&&0<C.length){var D=A.ownerDocument,E=null!=D.createElementNS?D.createElementNS(mxConstants.NS_SVG,"style"):D.createElement("style");null!=D.setAttributeNS?E.setAttributeNS("type","text/css"):E.setAttribute("type","text/css");for(var H="",z="",F=0;F<C.length;F++){var I=C[F].name,L=C[F].url;Graph.isCssFontUrl(L)?H+="@import url("+L+");\n":z+='@font-face {\nfont-family: "'+I+'";\nsrc: url("'+L+'");\n}\n'}E.appendChild(D.createTextNode(H+z));A.getElementsByTagName("defs")[0].appendChild(E)}null!=
-u&&(this.shapeBackgroundColor=x,this.shapeForegroundColor=y,this.stylesheet=u,this.refresh());return A};var D=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=D.apply(this,arguments);if(this.mathEnabled){var c=b.drawText;b.drawText=function(b,f){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var d=b.text.getContentNode();if(null!=d){d=d.cloneNode(!0);if(d.getElementsByTagNameNS)for(var e=
-d.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=d.innerHTML&&(e=b.text.value,b.text.value=d.innerHTML,c.apply(this,arguments),b.text.value=e)}}else c.apply(this,arguments)}}return b};var E=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){E.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,
-b.text,b.secondLabel,b.control]};var F=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){F.apply(this,arguments);this.enumerationState=0};var J=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=function(b){null!=b.shape&&this.redrawEnumerationState(b);return J.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(b){b=decodeURIComponent(mxUtils.getValue(b.style,"enumerateValue",""));""==b&&(b=++this.enumerationState);
+var E=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,c,f,d,e,l,m,g,p,k,q,t,n,v){var y=null,u=null,x=null;t||null==this.themes||"darkTheme"!=this.defaultThemeName||(y=this.stylesheet,u=this.shapeForegroundColor,x=this.shapeBackgroundColor,this.shapeForegroundColor="darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var z=E.apply(this,
+arguments),C=this.getCustomFonts();if(q&&0<C.length){var D=z.ownerDocument,F=null!=D.createElementNS?D.createElementNS(mxConstants.NS_SVG,"style"):D.createElement("style");null!=D.setAttributeNS?F.setAttributeNS("type","text/css"):F.setAttribute("type","text/css");for(var H="",A="",G=0;G<C.length;G++){var K=C[G].name,J=C[G].url;Graph.isCssFontUrl(J)?H+="@import url("+J+");\n":A+='@font-face {\nfont-family: "'+K+'";\nsrc: url("'+J+'");\n}\n'}F.appendChild(D.createTextNode(H+A));z.getElementsByTagName("defs")[0].appendChild(F)}null!=
+y&&(this.shapeBackgroundColor=x,this.shapeForegroundColor=u,this.stylesheet=y,this.refresh());return z};var D=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=D.apply(this,arguments);if(this.mathEnabled){var c=b.drawText;b.drawText=function(b,f){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var d=b.text.getContentNode();if(null!=d){d=d.cloneNode(!0);if(d.getElementsByTagNameNS)for(var e=
+d.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=d.innerHTML&&(e=b.text.value,b.text.value=d.innerHTML,c.apply(this,arguments),b.text.value=e)}}else c.apply(this,arguments)}}return b};var F=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){F.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,
+b.text,b.secondLabel,b.control]};var G=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){G.apply(this,arguments);this.enumerationState=0};var I=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=function(b){null!=b.shape&&this.redrawEnumerationState(b);return I.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(b){b=decodeURIComponent(mxUtils.getValue(b.style,"enumerateValue",""));""==b&&(b=++this.enumerationState);
return'<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(b)+"</div>"};mxGraphView.prototype.redrawEnumerationState=function(b){var c="1"==mxUtils.getValue(b.style,"enumerate",0);c&&null==b.secondLabel?(b.secondLabel=new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),b.secondLabel.size=12,b.secondLabel.state=b,b.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,this.graph.cellRenderer.initializeLabel(b,b.secondLabel)):
-c||null==b.secondLabel||(b.secondLabel.destroy(),b.secondLabel=null);c=b.secondLabel;if(null!=c){var f=b.view.scale,d=this.createEnumerationValue(b);b=this.graph.model.isVertex(b.cell)?new mxRectangle(b.x+b.width-4*f,b.y+4*f,0,0):mxRectangle.fromPoint(b.view.getPoint(b));c.bounds.equals(b)&&c.value==d&&c.scale==f||(c.bounds=b,c.value=d,c.scale=f,c.redraw())}};var K=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){K.apply(this,arguments);if(mxClient.IS_GC&&
+c||null==b.secondLabel||(b.secondLabel.destroy(),b.secondLabel=null);c=b.secondLabel;if(null!=c){var f=b.view.scale,d=this.createEnumerationValue(b);b=this.graph.model.isVertex(b.cell)?new mxRectangle(b.x+b.width-4*f,b.y+4*f,0,0):mxRectangle.fromPoint(b.view.getPoint(b));c.bounds.equals(b)&&c.value==d&&c.scale==f||(c.bounds=b,c.value=d,c.scale=f,c.redraw())}};var J=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){J.apply(this,arguments);if(mxClient.IS_GC&&
null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),
this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};var H=Graph.prototype.refresh;Graph.prototype.refresh=function(){H.apply(this,arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),
-this.view.validateBackgroundImage())};var I=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){I.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,c){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),
+this.view.validateBackgroundImage())};var K=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){K.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,c){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),
null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var f=!1,d=0,e=0,l=mxUtils.bind(this,function(){f||(f=!0,this.model.beginUpdate())}),m=mxUtils.bind(this,function(){f&&(f=!1,this.model.endUpdate())}),g=mxUtils.bind(this,function(){0<d&&d--;0==d&&p()}),p=mxUtils.bind(this,function(){if(e<b.length){var f=this.stoppingCustomActions,k=b[e++],q=[];if(null!=k.open)if(m(),this.isCustomLink(k.open)){if(!this.customLinkClicked(k.open))return}else this.openLink(k.open);
null==k.wait||f||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;g()}),d++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=k.wait?parseInt(k.wait):1E3),m());null!=k.opacity&&null!=k.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(k.opacity,!0)),k.opacity.value);null!=k.fadeIn&&(d++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(k.fadeIn,!0)),0,1,g,f?0:
k.fadeIn.delay));null!=k.fadeOut&&(d++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(k.fadeOut,!0)),1,0,g,f?0:k.fadeOut.delay));null!=k.wipeIn&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(k.wipeIn,!0),!0)));null!=k.wipeOut&&(q=q.concat(this.createWipeAnimations(this.getCellsForAction(k.wipeOut,!0),!1)));null!=k.toggle&&(l(),this.toggleCells(this.getCellsForAction(k.toggle,!0)));if(null!=k.show){l();var t=this.getCellsForAction(k.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(t),
@@ -10740,9 +10750,9 @@ this.isEnabled()&&(t=this.getCellsForAction(k.select),this.setSelectionCells(t))
v=0;v<n.length;v++)0>mxUtils.indexOf(k.tags.visible,n[v])&&0>mxUtils.indexOf(t,n[v])&&t.push(n[v]);this.hiddenTags=t;this.refresh()}0<q.length&&(d++,this.executeAnimations(q,g,f?1:k.steps,f?0:k.delay));0==d?p():m()}else this.stoppingCustomActions=this.executingCustomActions=!1,m(),null!=c&&c()});p()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,c){var f=this.getLinkForCell(c);null!=f&&"data:action/json,"==f.substring(0,17)&&this.setLinkForCell(c,this.updateCustomLink(b,f));if(this.isHtmlLabel(c)){var d=
document.createElement("div");d.innerHTML=this.sanitizeHtml(this.getLabel(c));for(var e=d.getElementsByTagName("a"),l=!1,m=0;m<e.length;m++)f=e[m].getAttribute("href"),null!=f&&"data:action/json,"==f.substring(0,17)&&(e[m].setAttribute("href",this.updateCustomLink(b,f)),l=!0);l&&this.labelChanged(c,d.innerHTML)}};Graph.prototype.updateCustomLink=function(b,c){if("data:action/json,"==c.substring(0,17))try{var f=JSON.parse(c.substring(17));null!=f.actions&&(this.updateCustomLinkActions(b,f.actions),
c="data:action/json,"+JSON.stringify(f))}catch(da){}return c};Graph.prototype.updateCustomLinkActions=function(b,c){for(var f=0;f<c.length;f++){var d=c[f],e;for(e in d)this.updateCustomLinkAction(b,d[e],"cells"),this.updateCustomLinkAction(b,d[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,c,f){if(null!=c&&null!=c[f]){for(var d=[],e=0;e<c[f].length;e++)if("*"==c[f][e])d.push(c[f][e]);else{var l=b[c[f][e]];null!=l?""!=l&&d.push(l):d.push(c[f][e])}c[f]=d}};Graph.prototype.getCellsForAction=
-function(b,c){var f=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,c));if(null!=b.excludeCells){for(var d=[],e=0;e<f.length;e++)0>b.excludeCells.indexOf(f[e].id)&&d.push(f[e]);f=d}return f};Graph.prototype.getCellsById=function(b){var c=[];if(null!=b)for(var f=0;f<b.length;f++)if("*"==b[f])var d=this.model.getRoot(),c=c.concat(this.model.filterDescendants(function(b){return b!=d},d));else{var e=this.model.getCell(b[f]);null!=e&&c.push(e)}return c};var S=Graph.prototype.isCellVisible;
-Graph.prototype.isCellVisible=function(b){return S.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var c=0;c<b.length;c++)if(0>mxUtils.indexOf(this.hiddenTags,b[c]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,c,f,d){var e=[];if(null!=b){c=null!=c?c:this.model.getDescendants(this.model.getRoot());
-for(var l=0,m={},g=0;g<b.length;g++)0<b[g].length&&(m[b[g]]=!0,l++);for(g=0;g<c.length;g++)if(f&&this.model.getParent(c[g])==this.model.root||this.model.isVertex(c[g])||this.model.isEdge(c[g])){var k=this.getTagsForCell(c[g]),p=!1;if(0<k.length&&(k=k.split(" "),k.length>=b.length)){for(var q=p=0;q<k.length&&p<l;q++)null!=m[k[q]]&&p++;p=p==l}p&&(1!=d||this.isCellVisible(c[g]))&&e.push(c[g])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};
+function(b,c){var f=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,c));if(null!=b.excludeCells){for(var d=[],e=0;e<f.length;e++)0>b.excludeCells.indexOf(f[e].id)&&d.push(f[e]);f=d}return f};Graph.prototype.getCellsById=function(b){var c=[];if(null!=b)for(var f=0;f<b.length;f++)if("*"==b[f])var d=this.model.getRoot(),c=c.concat(this.model.filterDescendants(function(b){return b!=d},d));else{var e=this.model.getCell(b[f]);null!=e&&c.push(e)}return c};var R=Graph.prototype.isCellVisible;
+Graph.prototype.isCellVisible=function(b){return R.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var c=0;c<b.length;c++)if(0>mxUtils.indexOf(this.hiddenTags,b[c]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,c,f,d){var e=[];if(null!=b){c=null!=c?c:this.model.getDescendants(this.model.getRoot());
+for(var l=0,m={},g=0;g<b.length;g++)0<b[g].length&&(m[b[g]]=!0,l++);for(g=0;g<c.length;g++)if(f&&this.model.getParent(c[g])==this.model.root||this.model.isVertex(c[g])||this.model.isEdge(c[g])){var p=this.getTagsForCell(c[g]),k=!1;if(0<p.length&&(p=p.split(" "),p.length>=b.length)){for(var q=k=0;q<p.length&&k<l;q++)null!=m[p[q]]&&k++;k=k==l}k&&(1!=d||this.isCellVisible(c[g]))&&e.push(c[g])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};
Graph.prototype.getCommonTagsForCells=function(b){for(var c=null,f=[],d=0;d<b.length;d++){var e=this.getTagsForCell(b[d]),f=[];if(0<e.length){for(var e=e.split(" "),l={},m=0;m<e.length;m++)if(null==c||null!=c[e[m]])l[e[m]]=!0,f.push(e[m]);c=l}else return[]}return f};Graph.prototype.getTagsForCells=function(b){for(var c=[],f={},d=0;d<b.length;d++){var e=this.getTagsForCell(b[d]);if(0<e.length)for(var e=e.split(" "),l=0;l<e.length;l++)null==f[e[l]]&&(f[e[l]]=!0,c.push(e[l]))}return c};Graph.prototype.getTagsForCell=
function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,c){if(0<b.length&&0<c.length){this.model.beginUpdate();try{for(var f=0;f<b.length;f++){for(var d=this.getTagsForCell(b[f]),e=d.split(" "),l=!1,m=0;m<c.length;m++){var g=mxUtils.trim(c[m]);""!=g&&0>mxUtils.indexOf(e,g)&&(d=0<d.length?d+" "+g:g,l=!0)}l&&this.setAttributeForCell(b[f],"tags",d)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,c){if(0<b.length&&0<c.length){this.model.beginUpdate();
try{for(var f=0;f<b.length;f++){var d=this.getTagsForCell(b[f]);if(0<d.length){for(var e=d.split(" "),l=!1,m=0;m<c.length;m++){var g=mxUtils.indexOf(e,c[m]);0<=g&&(e.splice(g,1),l=!0)}l&&this.setAttributeForCell(b[f],"tags",e.join(" "))}}}finally{this.model.endUpdate()}}};Graph.prototype.toggleCells=function(b){this.model.beginUpdate();try{for(var c=0;c<b.length;c++)this.model.setVisible(b[c],!this.model.isVisible(b[c]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(b,
@@ -10763,32 +10773,32 @@ STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[S
STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.ibm=[SHAPES_PATH+"/mxIBM.js",STENCIL_PATH+"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];
mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=
[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+
-"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var c=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?c="mxgraph.er":"sysML"==b.substring(0,5)&&(c="mxgraph.sysml"));return c};var P=mxMarker.createMarker;mxMarker.createMarker=
-function(b,c,f,d,e,l,m,g,k,p){if(null!=f&&null==mxMarker.markers[f]){var q=this.getPackageForType(f);null!=q&&mxStencilRegistry.getStencil(q)}return P.apply(this,arguments)};PrintDialog.prototype.create=function(b,c){function f(){v.value=Math.max(1,Math.min(g,Math.max(parseInt(v.value),parseInt(n.value))));n.value=Math.max(1,Math.min(g,Math.min(parseInt(v.value),parseInt(n.value))))}function d(c){function f(c,f,l){var m=c.useCssTransforms,g=c.currentTranslate,p=c.currentScale,k=c.view.translate,q=
-c.view.scale;c.useCssTransforms&&(c.useCssTransforms=!1,c.currentTranslate=new mxPoint(0,0),c.currentScale=1,c.view.translate=new mxPoint(0,0),c.view.scale=1);var t=c.getGraphBounds(),n=0,v=0,u=M.get(),y=1/c.pageScale,C=A.checked;if(C)var y=parseInt(J.value),D=parseInt(B.value),y=Math.min(u.height*D/(t.height/c.view.scale),u.width*y/(t.width/c.view.scale));else y=parseInt(x.value)/(100*c.pageScale),isNaN(y)&&(d=1/c.pageScale,x.value="100 %");u=mxRectangle.fromRectangle(u);u.width=Math.ceil(u.width*
-d);u.height=Math.ceil(u.height*d);y*=d;!C&&c.pageVisible?(t=c.getPageLayout(),n-=t.x*u.width,v-=t.y*u.height):C=!0;if(null==f){f=PrintDialog.createPrintPreview(c,y,u,0,n,v,C);f.pageSelector=!1;f.mathEnabled=!1;n=b.getCurrentFile();null!=n&&(f.title=n.getTitle());var E=f.writeHead;f.writeHead=function(f){E.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)f.writeln('<style type="text/css">'),f.writeln(Editor.mathJaxWebkitCss),f.writeln("</style>");mxClient.IS_GC&&(f.writeln('<style type="text/css">'),
+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var c=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?c="mxgraph.er":"sysML"==b.substring(0,5)&&(c="mxgraph.sysml"));return c};var O=mxMarker.createMarker;mxMarker.createMarker=
+function(b,c,f,d,e,l,m,g,p,k){if(null!=f&&null==mxMarker.markers[f]){var q=this.getPackageForType(f);null!=q&&mxStencilRegistry.getStencil(q)}return O.apply(this,arguments)};PrintDialog.prototype.create=function(b,c){function f(){v.value=Math.max(1,Math.min(g,Math.max(parseInt(v.value),parseInt(n.value))));n.value=Math.max(1,Math.min(g,Math.min(parseInt(v.value),parseInt(n.value))))}function d(c){function f(c,f,l){var m=c.useCssTransforms,g=c.currentTranslate,k=c.currentScale,p=c.view.translate,q=
+c.view.scale;c.useCssTransforms&&(c.useCssTransforms=!1,c.currentTranslate=new mxPoint(0,0),c.currentScale=1,c.view.translate=new mxPoint(0,0),c.view.scale=1);var t=c.getGraphBounds(),n=0,v=0,y=M.get(),u=1/c.pageScale,C=z.checked;if(C)var u=parseInt(I.value),D=parseInt(B.value),u=Math.min(y.height*D/(t.height/c.view.scale),y.width*u/(t.width/c.view.scale));else u=parseInt(x.value)/(100*c.pageScale),isNaN(u)&&(d=1/c.pageScale,x.value="100 %");y=mxRectangle.fromRectangle(y);y.width=Math.ceil(y.width*
+d);y.height=Math.ceil(y.height*d);u*=d;!C&&c.pageVisible?(t=c.getPageLayout(),n-=t.x*y.width,v-=t.y*y.height):C=!0;if(null==f){f=PrintDialog.createPrintPreview(c,u,y,0,n,v,C);f.pageSelector=!1;f.mathEnabled=!1;n=b.getCurrentFile();null!=n&&(f.title=n.getTitle());var F=f.writeHead;f.writeHead=function(f){F.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)f.writeln('<style type="text/css">'),f.writeln(Editor.mathJaxWebkitCss),f.writeln("</style>");mxClient.IS_GC&&(f.writeln('<style type="text/css">'),
f.writeln("@media print {"),f.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),f.writeln("}"),f.writeln("</style>"));null!=b.editor.fontCss&&(f.writeln('<style type="text/css">'),f.writeln(b.editor.fontCss),f.writeln("</style>"));for(var d=c.getCustomFonts(),e=0;e<d.length;e++){var l=d[e].name,m=d[e].url;Graph.isCssFontUrl(m)?f.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(m)+'" charset="UTF-8" type="text/css">'):(f.writeln('<style type="text/css">'),f.writeln('@font-face {\nfont-family: "'+
-mxUtils.htmlEntities(l)+'";\nsrc: url("'+mxUtils.htmlEntities(m)+'");\n}'),f.writeln("</style>"))}};if("undefined"!==typeof MathJax){var H=f.renderPage;f.renderPage=function(c,f,d,e,l,m){var g=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var p=H.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:p.className="geDisableMathJax";return p}}n=null;v=e.enableFlowAnimation;e.enableFlowAnimation=
-!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(n=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());f.open(null,null,l,!0);e.enableFlowAnimation=v;null!=n&&(e.stylesheet=n,e.refresh())}else{u=c.background;if(null==u||""==u||u==mxConstants.NONE)u="#ffffff";f.backgroundColor=u;f.autoOrigin=C;f.appendGraph(c,y,n,v,l,!0);l=c.getCustomFonts();if(null!=f.wnd)for(n=0;n<l.length;n++)v=l[n].name,C=l[n].url,Graph.isCssFontUrl(C)?f.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(C)+
-'" charset="UTF-8" type="text/css">'):(f.wnd.document.writeln('<style type="text/css">'),f.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(v)+'";\nsrc: url("'+mxUtils.htmlEntities(C)+'");\n}'),f.wnd.document.writeln("</style>"))}m&&(c.useCssTransforms=m,c.currentTranslate=g,c.currentScale=p,c.view.translate=k,c.view.scale=q);return f}var d=parseInt(P.value)/100;isNaN(d)&&(d=1,P.value="100 %");var d=.75*d,l=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(l=e.stylesheet,
-e.stylesheet=e.getDefaultStylesheet(),e.refresh());var m=n.value,g=v.value,p=!q.checked,t=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,q.checked,m,g,A.checked,J.value,B.value,parseInt(x.value)/100,parseInt(P.value)/100,M.get());else{p&&(p=m==k&&g==k);if(!p&&null!=b.pages&&b.pages.length){var u=0,p=b.pages.length-1;q.checked||(u=parseInt(m)-1,p=parseInt(g)-1);for(var y=u;y<=p;y++){var C=b.pages[y],m=C==b.currentPage?e:null;if(null==m){var m=b.createTemporaryGraph(e.stylesheet),g=!0,u=
-!1,D=null,E=null;null==C.viewState&&null==C.root&&b.updatePageRoot(C);null!=C.viewState&&(g=C.viewState.pageVisible,u=C.viewState.mathEnabled,D=C.viewState.background,E=C.viewState.backgroundImage,m.extFonts=C.viewState.extFonts);m.background=D;m.backgroundImage=null!=E?new mxImage(E.src,E.width,E.height):null;m.pageVisible=g;m.mathEnabled=u;var H=m.getGlobalVariable;m.getGlobalVariable=function(c){return"page"==c?C.getName():"pagenumber"==c?y+1:"pagecount"==c?null!=b.pages?b.pages.length:1:H.apply(this,
-arguments)};document.body.appendChild(m.container);b.updatePageRoot(C);m.model.setRoot(C.root)}t=f(m,t,y!=p);m!=e&&m.container.parentNode.removeChild(m.container)}}else t=f(e);null==t?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(p=t.wnd.document,c&&(t.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&c&&PrintDialog.printPreview(t));null!=l&&(e.stylesheet=
-l,e.refresh())}}var e=b.editor.graph,l=document.createElement("div"),m=document.createElement("h3");m.style.width="100%";m.style.textAlign="center";m.style.marginTop="0px";mxUtils.write(m,c||mxResources.get("print"));l.appendChild(m);var g=1,k=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type",
-"radio");q.setAttribute("name","pages-printdialog");p.appendChild(q);m=document.createElement("span");mxUtils.write(m,mxResources.get("printAllPages"));p.appendChild(m);mxUtils.br(p);var t=q.cloneNode(!0);q.setAttribute("checked","checked");t.setAttribute("value","range");p.appendChild(t);m=document.createElement("span");mxUtils.write(m,mxResources.get("pages")+":");p.appendChild(m);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","1");n.setAttribute("type",
-"number");n.setAttribute("min","1");n.style.width="50px";p.appendChild(n);m=document.createElement("span");mxUtils.write(m,mxResources.get("to"));p.appendChild(m);var v=n.cloneNode(!0);p.appendChild(v);mxEvent.addListener(n,"focus",function(){t.checked=!0});mxEvent.addListener(v,"focus",function(){t.checked=!0});mxEvent.addListener(n,"change",f);mxEvent.addListener(v,"change",f);if(null!=b.pages&&(g=b.pages.length,null!=b.currentPage))for(m=0;m<b.pages.length;m++)if(b.currentPage==b.pages[m]){k=m+
-1;n.value=k;v.value=k;break}n.setAttribute("max",g);v.setAttribute("max",g);b.isPagesEnabled()?1<g&&(l.appendChild(p),t.checked=!0):t.checked=!0;var u=document.createElement("div");u.style.marginBottom="10px";var y=document.createElement("input");y.style.marginRight="8px";y.setAttribute("value","adjust");y.setAttribute("type","radio");y.setAttribute("name","printZoom");u.appendChild(y);m=document.createElement("span");mxUtils.write(m,mxResources.get("adjustTo"));u.appendChild(m);var x=document.createElement("input");
-x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width="50px";u.appendChild(x);mxEvent.addListener(x,"focus",function(){y.checked=!0});l.appendChild(u);var p=p.cloneNode(!1),A=y.cloneNode(!0);A.setAttribute("value","fit");y.setAttribute("checked","checked");m=document.createElement("div");m.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";m.appendChild(A);p.appendChild(m);u=document.createElement("table");u.style.display="inline-block";
-var C=document.createElement("tbody"),D=document.createElement("tr"),E=D.cloneNode(!0),H=document.createElement("td"),z=H.cloneNode(!0),F=H.cloneNode(!0),I=H.cloneNode(!0),G=H.cloneNode(!0),K=H.cloneNode(!0);H.style.textAlign="right";I.style.textAlign="right";mxUtils.write(H,mxResources.get("fitTo"));var J=document.createElement("input");J.style.cssText="margin:0 8px 0 8px;";J.setAttribute("value","1");J.setAttribute("min","1");J.setAttribute("type","number");J.style.width="40px";z.appendChild(J);
-m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsAcross"));F.appendChild(m);mxUtils.write(I,mxResources.get("fitToBy"));var B=J.cloneNode(!0);G.appendChild(B);mxEvent.addListener(J,"focus",function(){A.checked=!0});mxEvent.addListener(B,"focus",function(){A.checked=!0});m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsDown"));K.appendChild(m);D.appendChild(H);D.appendChild(z);D.appendChild(F);E.appendChild(I);E.appendChild(G);E.appendChild(K);
-C.appendChild(D);C.appendChild(E);u.appendChild(C);p.appendChild(u);l.appendChild(p);p=document.createElement("div");m=document.createElement("div");m.style.fontWeight="bold";m.style.marginBottom="12px";mxUtils.write(m,mxResources.get("paperSize"));p.appendChild(m);m=document.createElement("div");m.style.marginBottom="12px";var M=PageSetupDialog.addPageFormatPanel(m,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(m);m=document.createElement("span");mxUtils.write(m,
-mxResources.get("pageScale"));p.appendChild(m);var P=document.createElement("input");P.style.cssText="margin:0 8px 0 8px;";P.setAttribute("value","100 %");P.style.width="60px";p.appendChild(P);l.appendChild(p);m=document.createElement("div");m.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";b.editor.cancelFirst&&m.appendChild(p);b.isOffline()||(u=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),
-u.className="geBtn",m.appendChild(u));PrintDialog.previewEnabled&&(u=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();d(!1)}),u.className="geBtn",m.appendChild(u));u=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();d(!0)});u.className="geBtn gePrimaryBtn";m.appendChild(u);b.editor.cancelFirst||m.appendChild(p);l.appendChild(m);this.container=l};var M=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
+mxUtils.htmlEntities(l)+'";\nsrc: url("'+mxUtils.htmlEntities(m)+'");\n}'),f.writeln("</style>"))}};if("undefined"!==typeof MathJax){var H=f.renderPage;f.renderPage=function(c,f,d,e,l,m){var g=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var k=H.apply(this,arguments);mxClient.NO_FO=g;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:k.className="geDisableMathJax";return k}}n=null;v=e.enableFlowAnimation;e.enableFlowAnimation=
+!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(n=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());f.open(null,null,l,!0);e.enableFlowAnimation=v;null!=n&&(e.stylesheet=n,e.refresh())}else{y=c.background;if(null==y||""==y||y==mxConstants.NONE)y="#ffffff";f.backgroundColor=y;f.autoOrigin=C;f.appendGraph(c,u,n,v,l,!0);l=c.getCustomFonts();if(null!=f.wnd)for(n=0;n<l.length;n++)v=l[n].name,C=l[n].url,Graph.isCssFontUrl(C)?f.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(C)+
+'" charset="UTF-8" type="text/css">'):(f.wnd.document.writeln('<style type="text/css">'),f.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(v)+'";\nsrc: url("'+mxUtils.htmlEntities(C)+'");\n}'),f.wnd.document.writeln("</style>"))}m&&(c.useCssTransforms=m,c.currentTranslate=g,c.currentScale=k,c.view.translate=p,c.view.scale=q);return f}var d=parseInt(O.value)/100;isNaN(d)&&(d=1,O.value="100 %");var d=.75*d,l=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(l=e.stylesheet,
+e.stylesheet=e.getDefaultStylesheet(),e.refresh());var m=n.value,g=v.value,k=!q.checked,t=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,q.checked,m,g,z.checked,I.value,B.value,parseInt(x.value)/100,parseInt(O.value)/100,M.get());else{k&&(k=m==p&&g==p);if(!k&&null!=b.pages&&b.pages.length){var y=0,k=b.pages.length-1;q.checked||(y=parseInt(m)-1,k=parseInt(g)-1);for(var u=y;u<=k;u++){var C=b.pages[u],m=C==b.currentPage?e:null;if(null==m){var m=b.createTemporaryGraph(e.stylesheet),g=!0,y=
+!1,D=null,F=null;null==C.viewState&&null==C.root&&b.updatePageRoot(C);null!=C.viewState&&(g=C.viewState.pageVisible,y=C.viewState.mathEnabled,D=C.viewState.background,F=C.viewState.backgroundImage,m.extFonts=C.viewState.extFonts);m.background=D;m.backgroundImage=null!=F?new mxImage(F.src,F.width,F.height):null;m.pageVisible=g;m.mathEnabled=y;var H=m.getGlobalVariable;m.getGlobalVariable=function(c){return"page"==c?C.getName():"pagenumber"==c?u+1:"pagecount"==c?null!=b.pages?b.pages.length:1:H.apply(this,
+arguments)};document.body.appendChild(m.container);b.updatePageRoot(C);m.model.setRoot(C.root)}t=f(m,t,u!=k);m!=e&&m.container.parentNode.removeChild(m.container)}}else t=f(e);null==t?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(t.mathEnabled&&(k=t.wnd.document,c&&(t.wnd.IMMEDIATE_PRINT=!0),k.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),t.closeDocument(),!t.mathEnabled&&c&&PrintDialog.printPreview(t));null!=l&&(e.stylesheet=
+l,e.refresh())}}var e=b.editor.graph,l=document.createElement("div"),m=document.createElement("h3");m.style.width="100%";m.style.textAlign="center";m.style.marginTop="0px";mxUtils.write(m,c||mxResources.get("print"));l.appendChild(m);var g=1,p=1,k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","all");q.setAttribute("type",
+"radio");q.setAttribute("name","pages-printdialog");k.appendChild(q);m=document.createElement("span");mxUtils.write(m,mxResources.get("printAllPages"));k.appendChild(m);mxUtils.br(k);var t=q.cloneNode(!0);q.setAttribute("checked","checked");t.setAttribute("value","range");k.appendChild(t);m=document.createElement("span");mxUtils.write(m,mxResources.get("pages")+":");k.appendChild(m);var n=document.createElement("input");n.style.cssText="margin:0 8px 0 8px;";n.setAttribute("value","1");n.setAttribute("type",
+"number");n.setAttribute("min","1");n.style.width="50px";k.appendChild(n);m=document.createElement("span");mxUtils.write(m,mxResources.get("to"));k.appendChild(m);var v=n.cloneNode(!0);k.appendChild(v);mxEvent.addListener(n,"focus",function(){t.checked=!0});mxEvent.addListener(v,"focus",function(){t.checked=!0});mxEvent.addListener(n,"change",f);mxEvent.addListener(v,"change",f);if(null!=b.pages&&(g=b.pages.length,null!=b.currentPage))for(m=0;m<b.pages.length;m++)if(b.currentPage==b.pages[m]){p=m+
+1;n.value=p;v.value=p;break}n.setAttribute("max",g);v.setAttribute("max",g);b.isPagesEnabled()?1<g&&(l.appendChild(k),t.checked=!0):t.checked=!0;var y=document.createElement("div");y.style.marginBottom="10px";var u=document.createElement("input");u.style.marginRight="8px";u.setAttribute("value","adjust");u.setAttribute("type","radio");u.setAttribute("name","printZoom");y.appendChild(u);m=document.createElement("span");mxUtils.write(m,mxResources.get("adjustTo"));y.appendChild(m);var x=document.createElement("input");
+x.style.cssText="margin:0 8px 0 8px;";x.setAttribute("value","100 %");x.style.width="50px";y.appendChild(x);mxEvent.addListener(x,"focus",function(){u.checked=!0});l.appendChild(y);var k=k.cloneNode(!1),z=u.cloneNode(!0);z.setAttribute("value","fit");u.setAttribute("checked","checked");m=document.createElement("div");m.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";m.appendChild(z);k.appendChild(m);y=document.createElement("table");y.style.display="inline-block";
+var C=document.createElement("tbody"),D=document.createElement("tr"),F=D.cloneNode(!0),H=document.createElement("td"),A=H.cloneNode(!0),G=H.cloneNode(!0),E=H.cloneNode(!0),K=H.cloneNode(!0),J=H.cloneNode(!0);H.style.textAlign="right";E.style.textAlign="right";mxUtils.write(H,mxResources.get("fitTo"));var I=document.createElement("input");I.style.cssText="margin:0 8px 0 8px;";I.setAttribute("value","1");I.setAttribute("min","1");I.setAttribute("type","number");I.style.width="40px";A.appendChild(I);
+m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsAcross"));G.appendChild(m);mxUtils.write(E,mxResources.get("fitToBy"));var B=I.cloneNode(!0);K.appendChild(B);mxEvent.addListener(I,"focus",function(){z.checked=!0});mxEvent.addListener(B,"focus",function(){z.checked=!0});m=document.createElement("span");mxUtils.write(m,mxResources.get("fitToSheetsDown"));J.appendChild(m);D.appendChild(H);D.appendChild(A);D.appendChild(G);F.appendChild(E);F.appendChild(K);F.appendChild(J);
+C.appendChild(D);C.appendChild(F);y.appendChild(C);k.appendChild(y);l.appendChild(k);k=document.createElement("div");m=document.createElement("div");m.style.fontWeight="bold";m.style.marginBottom="12px";mxUtils.write(m,mxResources.get("paperSize"));k.appendChild(m);m=document.createElement("div");m.style.marginBottom="12px";var M=PageSetupDialog.addPageFormatPanel(m,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);k.appendChild(m);m=document.createElement("span");mxUtils.write(m,
+mxResources.get("pageScale"));k.appendChild(m);var O=document.createElement("input");O.style.cssText="margin:0 8px 0 8px;";O.setAttribute("value","100 %");O.style.width="60px";k.appendChild(O);l.appendChild(k);m=document.createElement("div");m.style.cssText="text-align:right;margin:48px 0 0 0;";k=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});k.className="geBtn";b.editor.cancelFirst&&m.appendChild(k);b.isOffline()||(y=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),
+y.className="geBtn",m.appendChild(y));PrintDialog.previewEnabled&&(y=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();d(!1)}),y.className="geBtn",m.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();d(!0)});y.className="geBtn gePrimaryBtn";m.appendChild(y);b.editor.cancelFirst||m.appendChild(k);l.appendChild(m);this.container=l};var M=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=
-this.shadowVisible)}}else M.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible)};Editor.prototype.useCanvasForExport=!1;try{var W=document.createElement("canvas"),X=new Image;X.onload=function(){try{W.getContext("2d").drawImage(X,
-0,0);var b=W.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=b&&6<b.length}catch(Q){}};X.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(L){}})();
+this.shadowVisible)}}else M.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible)};Editor.prototype.useCanvasForExport=!1;try{var V=document.createElement("canvas"),W=new Image;W.onload=function(){try{V.getContext("2d").drawImage(W,
+0,0);var b=V.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=b&&6<b.length}catch(P){}};W.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(L){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,d,c){c.ui=b.ui;return d};b.afterDecode=function(b,d,c){c.previousColor=c.color;c.previousImage=c.image;c.previousFormat=c.format;null!=c.foldingEnabled&&(c.foldingEnabled=!c.foldingEnabled);null!=c.mathEnabled&&(c.mathEnabled=!c.mathEnabled);null!=c.shadowVisible&&(c.shadowVisible=!c.shadowVisible);return c};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,d,c){c.ui=b.ui;return d};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.4.5";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,d,c){c.ui=b.ui;return d};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.4.7";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=
!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,
messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(b,c,d,e,g,k,n){k=null!=k?k:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -10811,11 +10821,11 @@ b.keyCode)return function(){0<c&&g.selectNextPage(!1)};if(38==b.keyCode)return f
if(0<=f){var d=b.lastIndexOf("&lt;/mxfile&gt;");d>f&&(c=b.substring(f,d+15).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/\\&quot;/g,'"').replace(/\n/g,""))}else var g=mxUtils.parseXml(b),k=this.editor.extractGraphModel(g.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),c=null!=k?mxUtils.getXml(k):""}catch(v){}return c};EditorUi.prototype.validateFileData=function(b){if(null!=b&&0<b.length){var c=b.indexOf('<meta charset="utf-8">');0<=c&&(b=b.slice(0,c)+'<meta charset="utf-8"/>'+
b.slice(c+23-1,b.length));b=Graph.zapGremlins(b)}return b};EditorUi.prototype.replaceFileData=function(b){b=this.validateFileData(b);b=null!=b&&0<b.length?mxUtils.parseXml(b).documentElement:null;var c=null!=b?this.editor.extractGraphModel(b,!0):null;null!=c&&(b=c);if(null!=b){c=this.editor.graph;c.model.beginUpdate();try{var f=null!=this.pages?this.pages.slice():null,d=b.getElementsByTagName("diagram");if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=b;this.pages=
null!=this.pages?this.pages:[];for(var e=d.length-1;0<=e;e--){var g=this.updatePageRoot(new DiagramPage(d[e]));null==g.getName()&&g.setName(mxResources.get("pageWithNumber",[e+1]));c.model.execute(new ChangePage(this,g,0==e?g:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),c.model.execute(new ChangePage(this,
-this.currentPage,this.currentPage,0))),this.editor.setGraphXml(b),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=f)for(e=0;e<f.length;e++)c.model.execute(new ChangePage(this,f[e],null))}finally{c.model.endUpdate()}}};EditorUi.prototype.createFileData=function(b,c,d,e,g,k,n,u,x,A,z){c=null!=c?c:this.editor.graph;g=null!=g?g:!1;x=null!=x?x:!0;var f,l=null;null==d||d.getMode()==App.MODE_DEVICE||d.getMode()==App.MODE_BROWSER?f="_blank":l=f=e;if(null==b)return"";
-var m=b;if("mxfile"!=m.nodeName.toLowerCase()){if(z){var p=b.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());p.appendChild(b)}else{p=Graph.zapGremlins(mxUtils.getXml(b));m=Graph.compress(p);if(Graph.decompress(m)!=p)return p;p=b.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());mxUtils.setTextContent(p,m)}m=b.ownerDocument.createElement("mxfile");m.appendChild(p)}A?(m=m.cloneNode(!0),m.removeAttribute("modified"),m.removeAttribute("host"),m.removeAttribute("agent"),
+this.currentPage,this.currentPage,0))),this.editor.setGraphXml(b),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=f)for(e=0;e<f.length;e++)c.model.execute(new ChangePage(this,f[e],null))}finally{c.model.endUpdate()}}};EditorUi.prototype.createFileData=function(b,c,d,e,g,k,n,u,x,z,A){c=null!=c?c:this.editor.graph;g=null!=g?g:!1;x=null!=x?x:!0;var f,l=null;null==d||d.getMode()==App.MODE_DEVICE||d.getMode()==App.MODE_BROWSER?f="_blank":l=f=e;if(null==b)return"";
+var m=b;if("mxfile"!=m.nodeName.toLowerCase()){if(A){var p=b.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());p.appendChild(b)}else{p=Graph.zapGremlins(mxUtils.getXml(b));m=Graph.compress(p);if(Graph.decompress(m)!=p)return p;p=b.ownerDocument.createElement("diagram");p.setAttribute("id",Editor.guid());mxUtils.setTextContent(p,m)}m=b.ownerDocument.createElement("mxfile");m.appendChild(p)}z?(m=m.cloneNode(!0),m.removeAttribute("modified"),m.removeAttribute("host"),m.removeAttribute("agent"),
m.removeAttribute("etag"),m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),m.removeAttribute("type")):(m.removeAttribute("userAgent"),m.removeAttribute("version"),m.removeAttribute("editor"),m.removeAttribute("pages"),m.removeAttribute("type"),mxClient.IS_CHROMEAPP?m.setAttribute("host","Chrome"):EditorUi.isElectronApp?m.setAttribute("host","Electron"):m.setAttribute("host",window.location.hostname),m.setAttribute("modified",(new Date).toISOString()),m.setAttribute("agent",
-navigator.appVersion),m.setAttribute("version",EditorUi.VERSION),m.setAttribute("etag",Editor.guid()),b=null!=d?d.getMode():this.mode,null!=b&&m.setAttribute("type",b),1<m.getElementsByTagName("diagram").length&&null!=this.pages&&m.setAttribute("pages",this.pages.length));z=z?mxUtils.getPrettyXml(m):mxUtils.getXml(m);if(!k&&!g&&(n||null!=d&&/(\.html)$/i.test(d.getTitle())))z=this.getHtml2(mxUtils.getXml(m),c,null!=d?d.getTitle():null,f,l);else if(k||!g&&null!=d&&/(\.svg)$/i.test(d.getTitle()))null==
-d||d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER||(e=null),z=this.getEmbeddedSvg(z,c,e,null,u,x,l);return z};EditorUi.prototype.getXmlFileData=function(b,c,d,e){b=null!=b?b:!0;c=null!=c?c:!1;d=null!=d?d:!Editor.compressXml;var f=this.editor.getGraphXml(b,e);if(b&&null!=this.fileNode&&null!=this.currentPage)if(b=function(b){var c=b.getElementsByTagName("mxGraphModel"),c=0<c.length?c[0]:null;null==c&&d?(c=mxUtils.trim(mxUtils.getTextContent(b)),b=b.cloneNode(!1),0<c.length&&(c=Graph.decompress(c),
+navigator.appVersion),m.setAttribute("version",EditorUi.VERSION),m.setAttribute("etag",Editor.guid()),b=null!=d?d.getMode():this.mode,null!=b&&m.setAttribute("type",b),1<m.getElementsByTagName("diagram").length&&null!=this.pages&&m.setAttribute("pages",this.pages.length));A=A?mxUtils.getPrettyXml(m):mxUtils.getXml(m);if(!k&&!g&&(n||null!=d&&/(\.html)$/i.test(d.getTitle())))A=this.getHtml2(mxUtils.getXml(m),c,null!=d?d.getTitle():null,f,l);else if(k||!g&&null!=d&&/(\.svg)$/i.test(d.getTitle()))null==
+d||d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER||(e=null),A=this.getEmbeddedSvg(A,c,e,null,u,x,l);return A};EditorUi.prototype.getXmlFileData=function(b,c,d,e){b=null!=b?b:!0;c=null!=c?c:!1;d=null!=d?d:!Editor.compressXml;var f=this.editor.getGraphXml(b,e);if(b&&null!=this.fileNode&&null!=this.currentPage)if(b=function(b){var c=b.getElementsByTagName("mxGraphModel"),c=0<c.length?c[0]:null;null==c&&d?(c=mxUtils.trim(mxUtils.getTextContent(b)),b=b.cloneNode(!1),0<c.length&&(c=Graph.decompress(c),
null!=c&&0<c.length&&b.appendChild(mxUtils.parseXml(c).documentElement))):null==c||d?b=b.cloneNode(!0):(b=b.cloneNode(!1),mxUtils.setTextContent(b,Graph.compressNode(c)));f.appendChild(b)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,Graph.compressNode(f)),f=this.fileNode.cloneNode(!1),c)b(this.currentPage.node);else for(c=0;c<this.pages.length;c++){var l=this.pages[c],m=l.node;if(l!=this.currentPage)if(l.needsUpdate){var g=new mxCodec(mxUtils.createXmlDocument()),
g=g.encode(new mxGraphModel(l.root));this.editor.graph.saveViewState(l.viewState,g,null,e);EditorUi.removeChildNodes(m);mxUtils.setTextContent(m,Graph.compressNode(g));delete l.needsUpdate}else e&&(this.updatePageRoot(l),null!=l.viewState.backgroundImage&&(null!=l.viewState.backgroundImage.originalSrc?l.viewState.backgroundImage=this.createImageForPageLink(l.viewState.backgroundImage.originalSrc,l):Graph.isPageLink(l.viewState.backgroundImage.src)&&(l.viewState.backgroundImage=this.createImageForPageLink(l.viewState.backgroundImage.src,
l))),null!=l.viewState.backgroundImage&&null!=l.viewState.backgroundImage.originalSrc&&(g=new mxCodec(mxUtils.createXmlDocument()),g=g.encode(new mxGraphModel(l.root)),this.editor.graph.saveViewState(l.viewState,g,null,e),m=m.cloneNode(!1),mxUtils.setTextContent(m,Graph.compressNode(g))));b(m)}return f};EditorUi.prototype.anonymizeString=function(b,c){for(var f=[],d=0;d<b.length;d++){var e=b.charAt(d);0<=EditorUi.ignoredAnonymizedChars.indexOf(e)?f.push(e):isNaN(parseInt(e))?e.toLowerCase()!=e?f.push(String.fromCharCode(65+
@@ -10825,8 +10835,8 @@ b[EditorUi.DIFF_INSERT][c].data=mxUtils.getXml(f)}catch(t){b[EditorUi.DIFF_INSER
b.setAttribute(b.attributes[f].name,this.anonymizeString(b.attributes[f].value,c));if(null!=b.childNodes)for(f=0;f<b.childNodes.length;f++)this.anonymizeAttributes(b.childNodes[f],c)};EditorUi.prototype.anonymizeNode=function(b,c){for(var f=b.getElementsByTagName("mxCell"),d=0;d<f.length;d++)null!=f[d].getAttribute("value")&&f[d].setAttribute("value","["+f[d].getAttribute("value").length+"]"),null!=f[d].getAttribute("xmlValue")&&f[d].setAttribute("xmlValue","["+f[d].getAttribute("xmlValue").length+
"]"),null!=f[d].getAttribute("style")&&f[d].setAttribute("style","["+f[d].getAttribute("style").length+"]"),null!=f[d].parentNode&&"root"!=f[d].parentNode.nodeName&&null!=f[d].parentNode.parentNode&&(f[d].setAttribute("id",f[d].parentNode.getAttribute("id")),f[d].parentNode.parentNode.replaceChild(f[d],f[d].parentNode));return b};EditorUi.prototype.synchronizeCurrentFile=function(b){var c=this.getCurrentFile();null!=c&&(c.savingFile?this.handleError({message:mxResources.get("busy")}):!b&&c.invalidChecksum?
c.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(c.clearAutosave(),this.editor.setStatus(""),b?c.reloadFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){c.handleFileError(b,!0)})):c.synchronizeFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(b){c.handleFileError(b,!0)}))))};EditorUi.prototype.getFileData=function(b,c,d,e,g,k,n,
-u,x,A,z){g=null!=g?g:!0;k=null!=k?k:!1;var f=this.editor.graph;if(c||!b&&null!=x&&/(\.svg)$/i.test(x.getTitle())){var l=null!=f.themes&&"darkTheme"==f.defaultThemeName;A=!1;if(l||null!=this.pages&&this.currentPage!=this.pages[0]){var m=f.getGlobalVariable,f=this.createTemporaryGraph(l?f.getDefaultStylesheet():f.getStylesheet());f.setBackgroundImage=this.editor.graph.setBackgroundImage;var p=this.pages[0];this.currentPage==p?f.setBackgroundImage(this.editor.graph.backgroundImage):null!=p.viewState&&
-null!=p.viewState&&f.setBackgroundImage(p.viewState.backgroundImage);f.getGlobalVariable=function(b){return"page"==b?p.getName():"pagenumber"==b?1:m.apply(this,arguments)};document.body.appendChild(f.container);f.model.setRoot(p.root)}}n=null!=n?n:this.getXmlFileData(g,k,A,z);x=null!=x?x:this.getCurrentFile();b=this.createFileData(n,f,x,window.location.href,b,c,d,e,g,u,A);f!=this.editor.graph&&f.container.parentNode.removeChild(f.container);return b};EditorUi.prototype.getHtml=function(b,c,d,e,g,
+u,x,z,A){g=null!=g?g:!0;k=null!=k?k:!1;var f=this.editor.graph;if(c||!b&&null!=x&&/(\.svg)$/i.test(x.getTitle())){var l=null!=f.themes&&"darkTheme"==f.defaultThemeName;z=!1;if(l||null!=this.pages&&this.currentPage!=this.pages[0]){var m=f.getGlobalVariable,f=this.createTemporaryGraph(l?f.getDefaultStylesheet():f.getStylesheet());f.setBackgroundImage=this.editor.graph.setBackgroundImage;var p=this.pages[0];this.currentPage==p?f.setBackgroundImage(this.editor.graph.backgroundImage):null!=p.viewState&&
+null!=p.viewState&&f.setBackgroundImage(p.viewState.backgroundImage);f.getGlobalVariable=function(b){return"page"==b?p.getName():"pagenumber"==b?1:m.apply(this,arguments)};document.body.appendChild(f.container);f.model.setRoot(p.root)}}n=null!=n?n:this.getXmlFileData(g,k,z,A);x=null!=x?x:this.getCurrentFile();b=this.createFileData(n,f,x,window.location.href,b,c,d,e,g,u,z);f!=this.editor.graph&&f.container.parentNode.removeChild(f.container);return b};EditorUi.prototype.getHtml=function(b,c,d,e,g,
k){k=null!=k?k:!0;var f=null,l=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=c){var f=k?c.getGraphBounds():c.getBoundingBox(c.getSelectionCells()),m=c.view.scale;k=Math.floor(f.x/m-c.view.translate.x);m=Math.floor(f.y/m-c.view.translate.y);f=c.background;null==g&&(c=this.getBasenames().join(";"),0<c.length&&(l=EditorUi.drawHost+"/embed.js?s="+c));b.setAttribute("x0",k);b.setAttribute("y0",m)}null!=b&&(b.setAttribute("pan","1"),b.setAttribute("zoom","1"),b.setAttribute("resize","0"),b.setAttribute("fit",
"0"),b.setAttribute("border","20"),b.setAttribute("links","1"),null!=e&&b.setAttribute("edit",e));null!=g&&(g=g.replace(/&/g,"&amp;"));b=null!=b?Graph.zapGremlins(mxUtils.getXml(b)):"";e=Graph.compress(b);Graph.decompress(e)!=b&&(e=encodeURIComponent(b));return(null==g?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=g?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==g?null!=d?"<title>"+mxUtils.htmlEntities(d)+
"</title>\n":"":"<title>diagrams.net</title>\n")+(null!=g?'<meta http-equiv="refresh" content="0;URL=\''+g+"'\"/>\n":"")+"</head>\n<body"+(null==g&&null!=f&&f!=mxConstants.NONE?' style="background-color:'+f+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+e+"</div>\n</div>\n"+(null==g?'<script type="text/javascript" src="'+l+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+
@@ -10836,21 +10846,21 @@ mxUtils.htmlEntities(JSON.stringify(b))+'"></div>\n'+(null==g?'<script type="tex
null;var c=Editor.extractParserError(b,mxResources.get("invalidOrMissingFile"));if(c)throw Error(mxResources.get("notADiagramFile")+" ("+c+")");c=null!=b?this.editor.extractGraphModel(b,!0):null;null!=c&&(b=c);if(null!=b&&"mxfile"==b.nodeName&&(c=b.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name"))){var f=null;this.fileNode=b;this.pages=[];for(var d=0;d<c.length;d++)null==c[d].getAttribute("id")&&c[d].setAttribute("id",d),b=new DiagramPage(c[d]),
null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[d+1])),this.pages.push(b),null!=urlParams["page-id"]&&b.getId()==urlParams["page-id"]&&(f=b);this.currentPage=null!=f?f:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];b=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=b&&(this.fileNode=b.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(b.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",
[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(b);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var e=urlParams["layer-ids"].split(" ");b={};for(d=0;d<e.length;d++)b[e[d]]=!0;for(var g=this.editor.graph.getModel(),k=g.getChildren(g.root),d=0;d<k.length;d++){var n=k[d];g.setVisible(n,b[n.id]||!1)}}catch(x){}};EditorUi.prototype.getBaseFilename=function(b){var c=this.getCurrentFile(),c=null!=c&&null!=c.getTitle()?c.getTitle():
-this.defaultFilename;if(/(\.xml)$/i.test(c)||/(\.html)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.png)$/i.test(c))c=c.substring(0,c.lastIndexOf("."));/(\.drawio)$/i.test(c)&&(c=c.substring(0,c.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(c=c+"-"+this.currentPage.getName());return c};EditorUi.prototype.downloadFile=function(b,c,d,e,g,k,n,u,x,A,z,B){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();
-var f=this.getBaseFilename("remoteSvg"==b?!1:!g),l=f+("xml"==b||"pdf"==b&&z?".drawio":"")+"."+b;if("xml"==b){var m=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,e,g,null,null,null,c);this.saveData(l,b,m,"text/xml")}else if("html"==b)m=this.getHtml2(this.getFileData(!0),this.editor.graph,f),this.saveData(l,b,m,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export"))){var p,t;if("xmlpng"==b)l=f+".png";else if("jpeg"==b)l=f+".jpg";else if("remoteSvg"==
-b){l=f+".svg";b="svg";var q=parseInt(x);"string"===typeof u&&0<u.indexOf("%")&&(u=parseInt(u)/100);if(0<q){var v=this.editor.graph,K=v.getGraphBounds();p=Math.ceil(K.width*u/v.view.scale+2*q);t=Math.ceil(K.height*u/v.view.scale+2*q)}}this.saveRequest(l,b,mxUtils.bind(this,function(c,f){try{var d=this.editor.graph.pageVisible;null!=k&&(this.editor.graph.pageVisible=k);var l=this.createDownloadRequest(c,b,e,f,n,g,u,x,A,z,B,p,t);this.editor.graph.pageVisible=d;return l}catch(Q){this.handleError(Q)}}))}else{var H=
-null,I=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(l,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(H)}))});if("svg"==b){var S=this.editor.graph.background;if(n||S==mxConstants.NONE)S=null;var P=this.editor.graph.getSvg(S,null,null,null,null,e);d&&this.editor.graph.addSvgShadow(P);this.editor.convertImages(P,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();
-I(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else l=f+".svg",H=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();I(b)}),e)}}catch(M){this.handleError(M)}};EditorUi.prototype.createDownloadRequest=function(b,c,d,e,g,k,n,u,x,A,z,B,y){var f=this.editor.graph,l=f.getGraphBounds();d=this.getFileData(!0,null,null,null,d,0==k?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var m="",p="";if(l.width*l.height>MAX_AREA||d.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};
-A=A?"1":"0";"pdf"==c&&(null!=z?p="&from="+z.from+"&to="+z.to:0==k&&(p="&allPages=1"));"xmlpng"==c&&(A="1",c="png");if(("xmlpng"==c||"svg"==c)&&null!=this.pages&&null!=this.currentPage)for(k=0;k<this.pages.length;k++)if(this.pages[k]==this.currentPage){m="&from="+k;break}k=f.background;"png"!=c&&"pdf"!=c&&"svg"!=c||!g?g||null!=k&&k!=mxConstants.NONE||(k="#ffffff"):k=mxConstants.NONE;g={globalVars:f.getExportVariables()};x&&(g.grid={size:f.gridSize,steps:f.view.gridSteps,color:f.view.gridColor});Graph.translateDiagram&&
-(g.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+m+p+"&bg="+(null!=k?k:mxConstants.NONE)+"&base64="+e+"&embedXml="+A+"&xml="+encodeURIComponent(d)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(g))+(null!=n?"&scale="+n:"")+(null!=u?"&border="+u:"")+(B&&isFinite(B)?"&w="+B:"")+(y&&isFinite(y)?"&h="+y:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,d){var f=
+this.defaultFilename;if(/(\.xml)$/i.test(c)||/(\.html)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.png)$/i.test(c))c=c.substring(0,c.lastIndexOf("."));/(\.drawio)$/i.test(c)&&(c=c.substring(0,c.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(c=c+"-"+this.currentPage.getName());return c};EditorUi.prototype.downloadFile=function(b,c,d,e,g,k,n,u,x,z,A,B){try{e=null!=e?e:this.editor.graph.isSelectionEmpty();
+var f=this.getBaseFilename("remoteSvg"==b?!1:!g),l=f+("xml"==b||"pdf"==b&&A?".drawio":"")+"."+b;if("xml"==b){var m=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,e,g,null,null,null,c);this.saveData(l,b,m,"text/xml")}else if("html"==b)m=this.getHtml2(this.getFileData(!0),this.editor.graph,f),this.saveData(l,b,m,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export"))){var p,q;if("xmlpng"==b)l=f+".png";else if("jpeg"==b)l=f+".jpg";else if("remoteSvg"==
+b){l=f+".svg";b="svg";var t=parseInt(x);"string"===typeof u&&0<u.indexOf("%")&&(u=parseInt(u)/100);if(0<t){var v=this.editor.graph,J=v.getGraphBounds();p=Math.ceil(J.width*u/v.view.scale+2*t);q=Math.ceil(J.height*u/v.view.scale+2*t)}}this.saveRequest(l,b,mxUtils.bind(this,function(c,f){try{var d=this.editor.graph.pageVisible;null!=k&&(this.editor.graph.pageVisible=k);var l=this.createDownloadRequest(c,b,e,f,n,g,u,x,z,A,B,p,q);this.editor.graph.pageVisible=d;return l}catch(P){this.handleError(P)}}))}else{var H=
+null,K=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(l,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(H)}))});if("svg"==b){var R=this.editor.graph.background;if(n||R==mxConstants.NONE)R=null;var O=this.editor.graph.getSvg(R,null,null,null,null,e);d&&this.editor.graph.addSvgShadow(O);this.editor.convertImages(O,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();
+K(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else l=f+".svg",H=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();K(b)}),e)}}catch(M){this.handleError(M)}};EditorUi.prototype.createDownloadRequest=function(b,c,d,e,g,k,n,u,x,z,A,B,y){var f=this.editor.graph,l=f.getGraphBounds();d=this.getFileData(!0,null,null,null,d,0==k?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var m="",p="";if(l.width*l.height>MAX_AREA||d.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};
+z=z?"1":"0";"pdf"==c&&(null!=A?p="&from="+A.from+"&to="+A.to:0==k&&(p="&allPages=1"));"xmlpng"==c&&(z="1",c="png");if(("xmlpng"==c||"svg"==c)&&null!=this.pages&&null!=this.currentPage)for(k=0;k<this.pages.length;k++)if(this.pages[k]==this.currentPage){m="&from="+k;break}k=f.background;"png"!=c&&"pdf"!=c&&"svg"!=c||!g?g||null!=k&&k!=mxConstants.NONE||(k="#ffffff"):k=mxConstants.NONE;g={globalVars:f.getExportVariables()};x&&(g.grid={size:f.gridSize,steps:f.view.gridSteps,color:f.view.gridColor});Graph.translateDiagram&&
+(g.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+m+p+"&bg="+(null!=k?k:mxConstants.NONE)+"&base64="+e+"&embedXml="+z+"&xml="+encodeURIComponent(d)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(g))+(null!=n?"&scale="+n:"")+(null!=u?"&border="+u:"")+(B&&isFinite(B)?"&w="+B:"")+(y&&isFinite(y)?"&h="+y:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,d){var f=
window.location.hash,e=mxUtils.bind(this,function(d){var e=null!=b.data?b.data:"";null!=d&&0<d.length&&(0<e.length&&(e+="\n"),e+=d);d=new LocalFile(this,"csv"!=b.format&&0<e.length?e:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);d.getHash=function(){return f};this.fileLoaded(d);"csv"==b.format&&this.importCsv(e,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var l=
null!=b.interval?parseInt(b.interval):6E4,m=null,g=mxUtils.bind(this,function(){var c=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(b){c===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),k()):this.handleError({message:mxResources.get("error")+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),k=mxUtils.bind(this,function(){window.clearTimeout(m);
m=window.setTimeout(g,l)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){k();g()}));k();g()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){e(b)}),mxUtils.bind(this,function(b){null!=d&&d(b)})):e("")};EditorUi.prototype.updateDiagram=function(b){function c(b){var c=new mxCellOverlay(b.image||e.warningImage,b.tooltip,b.align,b.valign,b.offset);c.addListener(mxEvent.CLICK,function(c,f){d.alert(b.tooltip)});return c}var f=null,
-d=this;if(null!=b&&0<b.length&&(f=mxUtils.parseXml(b),b=null!=f?f.documentElement:null,null!=b&&"updates"==b.nodeName)){var e=this.editor.graph,g=e.getModel();g.beginUpdate();var k=null;try{for(b=b.firstChild;null!=b;){if("update"==b.nodeName){var n=g.getCell(b.getAttribute("id"));if(null!=n){try{var x=b.getAttribute("value");if(null!=x){var A=mxUtils.parseXml(x).documentElement;if(null!=A)if("1"==A.getAttribute("replace-value"))g.setValue(n,A);else for(var z=A.attributes,B=0;B<z.length;B++)e.setAttributeForCell(n,
-z[B].nodeName,0<z[B].nodeValue.length?z[B].nodeValue:null)}}catch(K){null!=window.console&&console.log("Error in value for "+n.id+": "+K)}try{var y=b.getAttribute("style");null!=y&&e.model.setStyle(n,y)}catch(K){null!=window.console&&console.log("Error in style for "+n.id+": "+K)}try{var C=b.getAttribute("icon");if(null!=C){var G=0<C.length?JSON.parse(C):null;null!=G&&G.append||e.removeCellOverlays(n);null!=G&&e.addCellOverlay(n,c(G))}}catch(K){null!=window.console&&console.log("Error in icon for "+
-n.id+": "+K)}try{var D=b.getAttribute("geometry");if(null!=D){var D=JSON.parse(D),E=e.getCellGeometry(n);if(null!=E){E=E.clone();for(key in D){var F=parseFloat(D[key]);"dx"==key?E.x+=F:"dy"==key?E.y+=F:"dw"==key?E.width+=F:"dh"==key?E.height+=F:E[key]=parseFloat(D[key])}e.model.setGeometry(n,E)}}}catch(K){null!=window.console&&console.log("Error in icon for "+n.id+": "+K)}}}else if("model"==b.nodeName){for(var J=b.firstChild;null!=J&&J.nodeType!=mxConstants.NODETYPE_ELEMENT;)J=J.nextSibling;null!=
-J&&(new mxCodec(b.firstChild)).decode(J,g)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(e.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(k=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):1);b=b.nextSibling}}finally{g.endUpdate()}null!=k&&this.chromelessResize&&this.chromelessResize(!0,k)}return f};
-EditorUi.prototype.getCopyFilename=function(b,c){var f=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,d="",e=f.lastIndexOf(".");0<=e&&(d=f.substring(e),f=f.substring(0,e));if(c)var l=new Date,e=l.getFullYear(),g=l.getMonth()+1,k=l.getDate(),n=l.getHours(),A=l.getMinutes(),l=l.getSeconds(),f=f+(" "+(e+"-"+g+"-"+k+"-"+n+"-"+A+"-"+l));return f=mxResources.get("copyOf",[f])+d};EditorUi.prototype.fileLoaded=function(b,c){var f=this.getCurrentFile();this.fileEditable=this.fileLoadedError=
+d=this;if(null!=b&&0<b.length&&(f=mxUtils.parseXml(b),b=null!=f?f.documentElement:null,null!=b&&"updates"==b.nodeName)){var e=this.editor.graph,g=e.getModel();g.beginUpdate();var k=null;try{for(b=b.firstChild;null!=b;){if("update"==b.nodeName){var n=g.getCell(b.getAttribute("id"));if(null!=n){try{var x=b.getAttribute("value");if(null!=x){var z=mxUtils.parseXml(x).documentElement;if(null!=z)if("1"==z.getAttribute("replace-value"))g.setValue(n,z);else for(var A=z.attributes,B=0;B<A.length;B++)e.setAttributeForCell(n,
+A[B].nodeName,0<A[B].nodeValue.length?A[B].nodeValue:null)}}catch(J){null!=window.console&&console.log("Error in value for "+n.id+": "+J)}try{var y=b.getAttribute("style");null!=y&&e.model.setStyle(n,y)}catch(J){null!=window.console&&console.log("Error in style for "+n.id+": "+J)}try{var C=b.getAttribute("icon");if(null!=C){var E=0<C.length?JSON.parse(C):null;null!=E&&E.append||e.removeCellOverlays(n);null!=E&&e.addCellOverlay(n,c(E))}}catch(J){null!=window.console&&console.log("Error in icon for "+
+n.id+": "+J)}try{var D=b.getAttribute("geometry");if(null!=D){var D=JSON.parse(D),F=e.getCellGeometry(n);if(null!=F){F=F.clone();for(key in D){var G=parseFloat(D[key]);"dx"==key?F.x+=G:"dy"==key?F.y+=G:"dw"==key?F.width+=G:"dh"==key?F.height+=G:F[key]=parseFloat(D[key])}e.model.setGeometry(n,F)}}}catch(J){null!=window.console&&console.log("Error in icon for "+n.id+": "+J)}}}else if("model"==b.nodeName){for(var I=b.firstChild;null!=I&&I.nodeType!=mxConstants.NODETYPE_ELEMENT;)I=I.nextSibling;null!=
+I&&(new mxCodec(b.firstChild)).decode(I,g)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(e.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))e.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(k=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):1);b=b.nextSibling}}finally{g.endUpdate()}null!=k&&this.chromelessResize&&this.chromelessResize(!0,k)}return f};
+EditorUi.prototype.getCopyFilename=function(b,c){var f=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,d="",e=f.lastIndexOf(".");0<=e&&(d=f.substring(e),f=f.substring(0,e));if(c)var l=new Date,e=l.getFullYear(),g=l.getMonth()+1,k=l.getDate(),n=l.getHours(),z=l.getMinutes(),l=l.getSeconds(),f=f+(" "+(e+"-"+g+"-"+k+"-"+n+"-"+z+"-"+l));return f=mxResources.get("copyOf",[f])+d};EditorUi.prototype.fileLoaded=function(b,c){var f=this.getCurrentFile();this.fileEditable=this.fileLoadedError=
null;this.setCurrentFile(null);var d=!1;this.hideDialog();null!=f&&(EditorUi.debug("File.closed",[f]),f.removeListener(this.descriptorChangedListener),f.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var e=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=f&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&
(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();c||this.showSplash()});if(null!=b)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0;this.setCurrentFile(b);b.addListener("descriptorChanged",this.descriptorChangedListener);b.addListener("contentChanged",this.descriptorChangedListener);b.open();
delete this.openingFile;this.setGraphEnabled(!0);this.setMode(b.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();b.isEditable()?b.isModified()?(b.addUnsavedStatus(),null!=b.backupPatch&&b.patch([b.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert">'+mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),
@@ -10867,18 +10877,18 @@ mxUtils.parseXml(b.getData());if("mxlibrary"==f.documentElement.nodeName){var d=
b);var f=this.sidebar.palettes[b.getHash()],f=null!=f?f[f.length-1].nextSibling:null;this.removeLibrarySidebar(b.getHash());var l=null,m=mxUtils.bind(this,function(c,f){0==c.length&&b.isEditable()?(null==l&&(l=document.createElement("div"),l.className="geDropTarget",mxUtils.write(l,mxResources.get("dragElementsHere"))),f.appendChild(l)):this.addLibraryEntries(c,f)});null!=this.sidebar&&null!=c&&this.sidebar.addEntries(c);null==d&&(d=b.getTitle(),null!=d&&/(\.xml)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf("."))));
var g=this.sidebar.addPalette(b.getHash(),d,null!=e?e:!0,mxUtils.bind(this,function(b){m(c,b)}));this.repositionLibrary(f);var k=g.parentNode.previousSibling;e=k.getAttribute("title");null!=e&&0<e.length&&".scratchpad"!=b.title&&k.setAttribute("title",this.getLibraryStorageHint(b)+"\n"+e);var p=document.createElement("div");p.style.position="absolute";p.style.right="0px";p.style.top="0px";p.style.padding="8px";p.style.backgroundColor="inherit";k.style.position="relative";var n=document.createElement("img");
n.setAttribute("src",Editor.crossImage);n.setAttribute("title",mxResources.get("close"));n.setAttribute("valign","absmiddle");n.setAttribute("border","0");n.style.position="relative";n.style.top="2px";n.style.width="14px";n.style.cursor="pointer";n.style.margin="0 3px";Editor.isDarkMode()&&(n.style.filter="invert(100%)");var B=null;if(".scratchpad"!=b.title||this.closableScratchpad)p.appendChild(n),mxEvent.addListener(n,"click",mxUtils.bind(this,function(c){if(!mxEvent.isConsumed(c)){var f=mxUtils.bind(this,
-function(){this.closeLibrary(b)});null!=B?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):f();mxEvent.consume(c)}}));if(b.isEditable()){var y=this.editor.graph,C=null,G=mxUtils.bind(this,function(f){this.showLibraryDialog(b.getTitle(),g,c,b,b.getMode());mxEvent.consume(f)}),D=mxUtils.bind(this,function(f){b.setModified(!0);b.isAutosave()?(null!=C&&null!=C.parentNode&&C.parentNode.removeChild(C),C=n.cloneNode(!1),C.setAttribute("src",
+function(){this.closeLibrary(b)});null!=B?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):f();mxEvent.consume(c)}}));if(b.isEditable()){var y=this.editor.graph,C=null,E=mxUtils.bind(this,function(f){this.showLibraryDialog(b.getTitle(),g,c,b,b.getMode());mxEvent.consume(f)}),D=mxUtils.bind(this,function(f){b.setModified(!0);b.isAutosave()?(null!=C&&null!=C.parentNode&&C.parentNode.removeChild(C),C=n.cloneNode(!1),C.setAttribute("src",
Editor.spinImage),C.setAttribute("title",mxResources.get("saving")),C.style.cursor="default",C.style.marginRight="2px",C.style.marginTop="-2px",p.insertBefore(C,p.firstChild),k.style.paddingRight=18*p.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=C&&null!=C.parentNode&&(C.parentNode.removeChild(C),k.style.paddingRight=18*p.childNodes.length+"px")})):null==B&&(B=n.cloneNode(!1),B.setAttribute("src",Editor.saveImage),B.setAttribute("title",mxResources.get("save")),
-p.insertBefore(B,p.firstChild),mxEvent.addListener(B,"click",mxUtils.bind(this,function(f){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==B||b.isModified()||(k.style.paddingRight=18*p.childNodes.length+"px",B.parentNode.removeChild(B),B=null)});mxEvent.consume(f)})),k.style.paddingRight=18*p.childNodes.length+"px")}),E=mxUtils.bind(this,function(b,f,d,e){b=y.cloneCells(mxUtils.sortCells(y.model.getTopmostCells(b)));for(var m=0;m<b.length;m++){var k=y.getCellGeometry(b[m]);
-null!=k&&k.translate(-f.x,-f.y)}g.appendChild(this.sidebar.createVertexTemplateFromCells(b,f.width,f.height,e||"",!0,null,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:f.width,h:f.height};null!=e&&(b.title=e);c.push(b);D(d);null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),l=null)}),F=mxUtils.bind(this,function(b){if(y.isSelectionEmpty())y.getRubberband().isActive()?(y.getRubberband().execute(b),y.getRubberband().reset()):this.showError(mxResources.get("error"),
-mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=y.getSelectionCells(),f=y.view.getBounds(c),d=y.view.scale;f.x/=d;f.y/=d;f.width/=d;f.height/=d;f.x-=y.view.translate.x;f.y-=y.view.translate.y;E(c,f)}mxEvent.consume(b)});mxEvent.addGestureListeners(g,function(){},mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.panningManager&&null!=y.graphHandler.first&&(y.graphHandler.suspend(),null!=y.graphHandler.hint&&(y.graphHandler.hint.style.visibility="hidden"),g.style.backgroundColor=
-"#f1f3f4",g.style.cursor="copy",y.panningManager.stop(),y.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.panningManager&&null!=y.graphHandler&&(g.style.backgroundColor="",g.style.cursor="default",this.sidebar.showTooltips=!0,y.panningManager.stop(),y.graphHandler.reset(),y.isMouseDown=!1,y.autoScroll=!0,F(b),mxEvent.consume(b))}));mxEvent.addListener(g,"mouseleave",mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.graphHandler.first&&(y.graphHandler.resume(),
+p.insertBefore(B,p.firstChild),mxEvent.addListener(B,"click",mxUtils.bind(this,function(f){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==B||b.isModified()||(k.style.paddingRight=18*p.childNodes.length+"px",B.parentNode.removeChild(B),B=null)});mxEvent.consume(f)})),k.style.paddingRight=18*p.childNodes.length+"px")}),F=mxUtils.bind(this,function(b,f,d,e){b=y.cloneCells(mxUtils.sortCells(y.model.getTopmostCells(b)));for(var m=0;m<b.length;m++){var k=y.getCellGeometry(b[m]);
+null!=k&&k.translate(-f.x,-f.y)}g.appendChild(this.sidebar.createVertexTemplateFromCells(b,f.width,f.height,e||"",!0,null,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:f.width,h:f.height};null!=e&&(b.title=e);c.push(b);D(d);null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),l=null)}),G=mxUtils.bind(this,function(b){if(y.isSelectionEmpty())y.getRubberband().isActive()?(y.getRubberband().execute(b),y.getRubberband().reset()):this.showError(mxResources.get("error"),
+mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=y.getSelectionCells(),f=y.view.getBounds(c),d=y.view.scale;f.x/=d;f.y/=d;f.width/=d;f.height/=d;f.x-=y.view.translate.x;f.y-=y.view.translate.y;F(c,f)}mxEvent.consume(b)});mxEvent.addGestureListeners(g,function(){},mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.panningManager&&null!=y.graphHandler.first&&(y.graphHandler.suspend(),null!=y.graphHandler.hint&&(y.graphHandler.hint.style.visibility="hidden"),g.style.backgroundColor=
+"#f1f3f4",g.style.cursor="copy",y.panningManager.stop(),y.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.panningManager&&null!=y.graphHandler&&(g.style.backgroundColor="",g.style.cursor="default",this.sidebar.showTooltips=!0,y.panningManager.stop(),y.graphHandler.reset(),y.isMouseDown=!1,y.autoScroll=!0,G(b),mxEvent.consume(b))}));mxEvent.addListener(g,"mouseleave",mxUtils.bind(this,function(b){y.isMouseDown&&null!=y.graphHandler.first&&(y.graphHandler.resume(),
null!=y.graphHandler.hint&&(y.graphHandler.hint.style.visibility="visible"),g.style.backgroundColor="",g.style.cursor="",y.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(g,"dragover",mxUtils.bind(this,function(b){g.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";g.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(g,"drop",mxUtils.bind(this,function(b){g.style.cursor="";g.style.backgroundColor="";0<b.dataTransfer.files.length&&
-this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(f,d,e,k,p,n,t,q,v){if(null!=f&&"image/"==d.substring(0,6))f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(f),f=[new mxCell("",new mxGeometry(0,0,p,n),f)],f[0].vertex=!0,E(f,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),
-l=null);else{var y=!1,u=mxUtils.bind(this,function(f,d){if(null!=f&&"application/pdf"==d){var e=Editor.extractGraphModelFromPdf(f);null!=e&&0<e.length&&(f=e)}if(null!=f)if(e=mxUtils.parseXml(f),"mxlibrary"==e.documentElement.nodeName)try{var k=JSON.parse(mxUtils.getTextContent(e.documentElement));m(k,g);c=c.concat(k);D(b);this.spinner.stop();y=!0}catch(ka){}else if("mxfile"==e.documentElement.nodeName)try{for(var p=e.documentElement.getElementsByTagName("diagram"),k=0;k<p.length;k++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[k])),
-t=this.editor.graph.getBoundingBoxFromGeometry(n);E(n,new mxRectangle(0,0,t.width,t.height),b)}y=!0}catch(ka){null!=window.console&&console.log("error in drop handler:",ka)}y||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),l=null)});null!=v&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))?this.importVisio(v,function(b){u(b,"text/xml")},null,t):!this.isOffline()&&
-(new XMLHttpRequest).upload&&this.isRemoteFileFormat(f,t)&&null!=v?this.parseFile(v,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?u(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):u(f,d)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(g,"dragleave",function(b){g.style.cursor="";g.style.backgroundColor="";b.stopPropagation();
-b.preventDefault()}));n=n.cloneNode(!1);n.setAttribute("src",Editor.editImage);n.setAttribute("title",mxResources.get("edit"));p.insertBefore(n,p.firstChild);mxEvent.addListener(n,"click",G);mxEvent.addListener(g,"dblclick",function(b){mxEvent.getSource(b)==g&&G(b)});e=n.cloneNode(!1);e.setAttribute("src",Editor.plusImage);e.setAttribute("title",mxResources.get("add"));p.insertBefore(e,p.firstChild);mxEvent.addListener(e,"click",F);this.isOffline()||".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||
+this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(f,d,e,k,p,n,q,t,y){if(null!=f&&"image/"==d.substring(0,6))f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(f),f=[new mxCell("",new mxGeometry(0,0,p,n),f)],f[0].vertex=!0,F(f,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:q.substring(0,q.lastIndexOf(".")).replace(/_/g," ")),null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),
+l=null);else{var v=!1,u=mxUtils.bind(this,function(f,d){if(null!=f&&"application/pdf"==d){var e=Editor.extractGraphModelFromPdf(f);null!=e&&0<e.length&&(f=e)}if(null!=f)if(e=mxUtils.parseXml(f),"mxlibrary"==e.documentElement.nodeName)try{var k=JSON.parse(mxUtils.getTextContent(e.documentElement));m(k,g);c=c.concat(k);D(b);this.spinner.stop();v=!0}catch(ja){}else if("mxfile"==e.documentElement.nodeName)try{for(var p=e.documentElement.getElementsByTagName("diagram"),k=0;k<p.length;k++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[k])),
+q=this.editor.graph.getBoundingBoxFromGeometry(n);F(n,new mxRectangle(0,0,q.width,q.height),b)}v=!0}catch(ja){null!=window.console&&console.log("error in drop handler:",ja)}v||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=l&&null!=l.parentNode&&0<c.length&&(l.parentNode.removeChild(l),l=null)});null!=y&&null!=q&&(/(\.v(dx|sdx?))($|\?)/i.test(q)||/(\.vs(x|sx?))($|\?)/i.test(q))?this.importVisio(y,function(b){u(b,"text/xml")},null,q):!this.isOffline()&&
+(new XMLHttpRequest).upload&&this.isRemoteFileFormat(f,q)&&null!=y?this.parseFile(y,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?u(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):u(f,d)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(g,"dragleave",function(b){g.style.cursor="";g.style.backgroundColor="";b.stopPropagation();
+b.preventDefault()}));n=n.cloneNode(!1);n.setAttribute("src",Editor.editImage);n.setAttribute("title",mxResources.get("edit"));p.insertBefore(n,p.firstChild);mxEvent.addListener(n,"click",E);mxEvent.addListener(g,"dblclick",function(b){mxEvent.getSource(b)==g&&E(b)});e=n.cloneNode(!1);e.setAttribute("src",Editor.plusImage);e.setAttribute("title",mxResources.get("add"));p.insertBefore(e,p.firstChild);mxEvent.addListener(e,"click",G);this.isOffline()||".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||
(e=document.createElement("span"),e.setAttribute("title",mxResources.get("help")),e.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(e,"?"),mxEvent.addGestureListeners(e,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),p.insertBefore(e,p.firstChild))}k.appendChild(p);k.style.paddingRight=18*p.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(b,c){for(var f=0;f<b.length;f++){var d=b[f],
e=d.data;if(null!=e){var e=this.convertDataUri(e),l="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(l+="aspect=fixed;");c.appendChild(this.sidebar.createVertexTemplate(l+"image="+e,d.w,d.h,"",d.title||"",!1,null,!0))}else null!=d.xml&&(e=this.stringToCells(Graph.decompress(d.xml)),0<e.length&&c.appendChild(this.sidebar.createVertexTemplateFromCells(e,d.w,d.h,d.title||"",!0,null,!0)))}};EditorUi.prototype.getResource=function(b){return null!=b?b[mxLanguage]||
b.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64);EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground="linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=
@@ -10890,12 +10900,12 @@ new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImage
c.refresh()}));return c};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var d=c.getElementsByTagName("span")[0];d.style.fontSize="18px";d.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+
"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,d,e,g,k,n){var f=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},l=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{n?null!=
window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(C){}if(null!=l||null!=c){n=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=mxResources.get("ok"),p=null;c=null!=c?c:mxResources.get("error");if(null!=l){null!=l.retry&&(m=mxResources.get("cancel"),p=function(){f();l.retry()});if(404==l.code||404==l.status||403==l.code){n=403==l.code?null!=l.message?mxUtils.htmlEntities(l.message):
-mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=g?g:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var t=null!=g?null:null!=k?k:window.location.hash;if(null!=t&&("#G"==t.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==t.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||
-null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==l.code||404==l.status)){t="#U"==t.substring(0,2)?t.substring(45,t.lastIndexOf("%26ex")):t.substring(2);this.showError(c,n,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+t);this.handleError(b,c,d,e,g)}),p,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){e.innerHTML="";for(var b=0;b<c.length;b++){var f=document.createElement("option");
+mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=g?g:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var q=null!=g?null:null!=k?k:window.location.hash;if(null!=q&&("#G"==q.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==q.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||
+null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==l.code||404==l.status)){q="#U"==q.substring(0,2)?q.substring(45,q.lastIndexOf("%26ex")):q.substring(2);this.showError(c,n,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+q);this.handleError(b,c,d,e,g)}),p,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){e.innerHTML="";for(var b=0;b<c.length;b++){var f=document.createElement("option");
mxUtils.write(f,c[b].displayName);f.value=b;e.appendChild(f);f=document.createElement("option");f.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(f,"<"+c[b].email+">");f.setAttribute("disabled","disabled");e.appendChild(f)}f=document.createElement("option");mxUtils.write(f,mxResources.get("addAccount"));f.value=c.length;e.appendChild(f)}var c=this.drive.getUsersList(),f=document.createElement("div"),d=document.createElement("span");d.style.marginTop="6px";mxUtils.write(d,mxResources.get("changeUser")+
": ");f.appendChild(d);var e=document.createElement("select");e.style.width="200px";b();mxEvent.addListener(e,"change",mxUtils.bind(this,function(){var f=e.value,d=c.length!=f;d&&this.drive.setUser(c[f]);this.drive.authorize(d,mxUtils.bind(this,function(){d||(c=this.drive.getUsersList(),b())}),mxUtils.bind(this,function(b){this.handleError(b)}),!0)}));f.appendChild(e);f=new CustomDialog(this,f,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(f.container,
300,100,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=d&&d()}),480,150);return}}null!=l.message?n=""==l.message&&null!=l.name?mxUtils.htmlEntities(l.name):mxUtils.htmlEntities(l.message):null!=l.response&&null!=l.response.error?n=mxUtils.htmlEntities(l.response.error):"undefined"!==typeof window.App&&(l.code==App.ERROR_TIMEOUT?n=mxUtils.htmlEntities(mxResources.get("timeout")):l.code==App.ERROR_BUSY?n=mxUtils.htmlEntities(mxResources.get("busy")):"string"===
-typeof l&&0<l.length&&(n=mxUtils.htmlEntities(l)))}var q=k=null;null!=l&&null!=l.helpLink?(k=mxResources.get("help"),q=mxUtils.bind(this,function(){return this.editor.graph.openLink(l.helpLink)})):null!=l&&null!=l.ownerEmail&&(k=mxResources.get("contactOwner"),n+=mxUtils.htmlEntities(" ("+k+": "+l.ownerEmail+")"),q=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(l.ownerEmail))}));this.showError(c,n,m,d,p,null,null,k,q,null,null,null,e?d:null)}else null!=d&&d()};EditorUi.prototype.alert=
+typeof l&&0<l.length&&(n=mxUtils.htmlEntities(l)))}var t=k=null;null!=l&&null!=l.helpLink?(k=mxResources.get("help"),t=mxUtils.bind(this,function(){return this.editor.graph.openLink(l.helpLink)})):null!=l&&null!=l.ownerEmail&&(k=mxResources.get("contactOwner"),n+=mxUtils.htmlEntities(" ("+k+": "+l.ownerEmail+")"),t=mxUtils.bind(this,function(){return this.openLink("mailto:"+mxUtils.htmlEntities(l.ownerEmail))}));this.showError(c,n,m,d,p,null,null,k,t,null,null,null,e?d:null)}else null!=d&&d()};EditorUi.prototype.alert=
function(b,c,d){b=new ErrorDialog(this,null,b,mxResources.get("ok"),c);this.showDialog(b.container,d||340,100,!0,!1);b.init()};EditorUi.prototype.confirm=function(b,c,d,e,g,k){var f=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},l=Math.min(200,28*Math.ceil(b.length/50));b=new ConfirmDialog(this,b,function(){f();null!=c&&c()},function(){f();null!=d&&d()},e,g,null,null,null,null,l);this.showDialog(b.container,340,46+l,!0,k);b.init()};EditorUi.prototype.showBanner=function(b,
c,d,e){var f=!1;if(!(this.bannerShowing||this["hideBanner"+b]||isLocalStorage&&null!=mxSettings.settings&&null!=mxSettings.settings["close"+b])){var l=document.createElement("div");l.style.cssText="position:absolute;bottom:10px;left:50%;max-width:90%;padding:18px 34px 12px 20px;font-size:16px;font-weight:bold;white-space:nowrap;cursor:pointer;z-index:"+mxPopupMenu.prototype.zIndex+";";mxUtils.setPrefixedStyle(l.style,"box-shadow","1px 1px 2px 0px #ddd");mxUtils.setPrefixedStyle(l.style,"transform",
"translate(-50%,120%)");mxUtils.setPrefixedStyle(l.style,"transition","all 1s ease");l.className="geBtn gePrimaryBtn";f=document.createElement("img");f.setAttribute("src",IMAGE_PATH+"/logo.png");f.setAttribute("border","0");f.setAttribute("align","absmiddle");f.style.cssText="margin-top:-4px;margin-left:8px;margin-right:12px;width:26px;height:26px;";l.appendChild(f);f=document.createElement("img");f.setAttribute("src",Dialog.prototype.closeImage);f.setAttribute("title",mxResources.get(e?"doNotShowAgain":
@@ -10907,9 +10917,9 @@ return b};EditorUi.prototype.saveCanvas=function(b,c,d,e,g){var f="jpeg"==d?"jpg
mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(b,c){var f=new TextareaDialog(this,b,c,null,null,mxResources.get("close"));this.showDialog(f.container,620,460,!0,!0,null,null,null,null,!0);f.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile=function(b,c,d,e,g,k){"text/xml"!=d||/(\.drawio)$/i.test(c)||/(\.xml)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.html)$/i.test(c)||(c=c+"."+(null!=k?k:"drawio"));if(window.Blob&&navigator.msSaveOrOpenBlob)b=e?this.base64ToBlob(b,
d):new Blob([b],{type:d}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(b,!0):(d.document.write(b),d.document.close(),d.document.execCommand("SaveAs",!0,c),d.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==d||"image/"!=d.substring(0,6)?this.showTextDialog(c+":",b):this.openInNewWindow(b,d,e);else{var f=document.createElement("a");k=(null==navigator.userAgent||0>navigator.userAgent.indexOf("PaleMoon/"))&&
"undefined"!==typeof f.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);k=65==(l?parseInt(l[2],10):!1)?!1:k}if(k||this.isOffline()){f.href=URL.createObjectURL(e?this.base64ToBlob(b,d):new Blob([b],{type:d}));k?f.download=c:f.setAttribute("target","_blank");document.body.appendChild(f);try{window.setTimeout(function(){URL.revokeObjectURL(f.href)},2E4),f.click(),f.parentNode.removeChild(f)}catch(x){}}else this.createEchoRequest(b,c,d,
-e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,d,e,g,k){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,b+(null!=d?"&mime="+d:"")+(null!=g?"&format="+g:"")+(null!=k?"&base64="+k:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var f=atob(b),d=f.length,e=Math.ceil(d/1024),l=Array(e),g=0;g<e;++g){for(var k=1024*g,n=Math.min(k+1024,d),A=Array(n-k),z=0;k<n;++z,++k)A[z]=
-f[k].charCodeAt(0);l[g]=new Uint8Array(A)}return new Blob(l,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,d,e,g,k,n,u){k=null!=k?k:!1;n=null!=n?n:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(k);isLocalStorage&&g++;var f=4>=g?2:6<g?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(c,f){try{if("_blank"==f)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(b,d,e);else if(null!=d&&"text/html"==d.substring(0,9)){var l=new EmbedDialog(this,b);this.showDialog(l.container,
-450,240,!0,!0);l.init()}else{var g=window.open("about:blank");null==g?mxUtils.popup(b,!0):(g.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),g.document.close())}else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(b,c,d,e,null,u):null!=c&&0<c.length&&this.pickFolder(f,mxUtils.bind(this,function(l){try{this.exportFile(b,c,d,e,f,l)}catch(G){this.handleError(G)}}))}catch(C){this.handleError(C)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
+e,g).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,d,e,g,k){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,b+(null!=d?"&mime="+d:"")+(null!=g?"&format="+g:"")+(null!=k?"&base64="+k:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(e?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var f=atob(b),d=f.length,e=Math.ceil(d/1024),l=Array(e),g=0;g<e;++g){for(var k=1024*g,n=Math.min(k+1024,d),z=Array(n-k),A=0;k<n;++A,++k)z[A]=
+f[k].charCodeAt(0);l[g]=new Uint8Array(z)}return new Blob(l,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,d,e,g,k,n,u){k=null!=k?k:!1;n=null!=n?n:"vsdx"!=g&&(!mxClient.IS_IOS||!navigator.standalone);g=this.getServiceCount(k);isLocalStorage&&g++;var f=4>=g?2:6<g?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(c,f){try{if("_blank"==f)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(b,d,e);else if(null!=d&&"text/html"==d.substring(0,9)){var l=new EmbedDialog(this,b);this.showDialog(l.container,
+450,240,!0,!0);l.init()}else{var g=window.open("about:blank");null==g?mxUtils.popup(b,!0):(g.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),g.document.close())}else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(b,c,d,e,null,u):null!=c&&0<c.length&&this.pickFolder(f,mxUtils.bind(this,function(l){try{this.exportFile(b,c,d,e,f,l)}catch(E){this.handleError(E)}}))}catch(C){this.handleError(C)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
!1,k,n,null,1<g,f,b,d,e);k=this.isServices(g)?g>f?390:280:160;this.showDialog(c.container,420,k,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(b,c,d){var f=window.open("about:blank");null==f||null==f.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?f.document.write("<html>"+b+"</html>"):(b=d?b:btoa(unescape(encodeURIComponent(b))),f.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):f.document.write("<html><pre>"+
mxUtils.htmlEntities(b,!1)+"</pre></html>"),f.document.close())};var c=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var f=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&
(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height=
@@ -10925,9 +10935,9 @@ b.setAttribute("border","0");b.setAttribute("src",f);this.exportDialog.appendChi
Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,d,e,g){this.isLocalFileSave()?this.saveLocalFile(d,b,e,g,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,f){return this.createEchoRequest(d,b,e,g,c,f)}),d,g,e)};EditorUi.prototype.saveRequest=function(b,c,d,e,g,k,n){n=null!=n?n:!mxClient.IS_IOS||!navigator.standalone;var f=this.getServiceCount(!1);isLocalStorage&&f++;var l=4>=f?2:6<f?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,f){if("_blank"==
f||null!=b&&0<b.length){var l=d("_blank"==f?null:b,f==App.MODE_DEVICE||"download"==f||null==f||"_blank"==f?"0":"1");null!=l&&(f==App.MODE_DEVICE||"download"==f||"_blank"==f?l.simulate(document,"_blank"):this.pickFolder(f,mxUtils.bind(this,function(d){k=null!=k?k:"pdf"==c?"application/pdf":"image/"+c;if(null!=e)try{this.exportFile(e,b,k,!0,f,d)}catch(C){this.handleError(C)}else this.spinner.spin(document.body,mxResources.get("saving"))&&l.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=
l.getStatus()&&299>=l.getStatus())try{this.exportFile(l.getText(),b,k,!0,f,d)}catch(C){this.handleError(C)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,n,null,1<f,l,e,k,g);f=this.isServices(f)?4<f?390:280:160;this.showDialog(b.container,420,f,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=
-b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,d,e,g,k){};EditorUi.prototype.pickFolder=function(b,c,d){c(null)};EditorUi.prototype.exportSvg=function(b,c,d,e,g,k,n,u,x,A,z,B,y,C){if(this.spinner.spin(document.body,mxResources.get("export")))try{var f=this.editor.graph.isSelectionEmpty();d=null!=d?d:f;var l=c?null:this.editor.graph.background;l==mxConstants.NONE&&(l=null);null==l&&0==c&&(l=z?this.editor.graph.defaultPageBackgroundColor:
-"#ffffff");var m=this.editor.graph.getSvg(l,b,n,u,null,d,null,null,"blank"==A?"_blank":"self"==A?"_top":null,null,!0,z,B);e&&this.editor.graph.addSvgShadow(m);var p=this.getBaseFilename()+(g?".drawio":"")+".svg";C=null!=C?C:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var t=mxUtils.bind(this,
-function(b){this.spinner.stop();g&&b.setAttribute("content",this.getFileData(!0,null,null,null,d,x,null,null,null,!1));C(Graph.xmlDeclaration+"\n"+(g?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(m);var q=mxUtils.bind(this,function(b){k?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,t,this.thumbImageCache)):t(b)});y?this.embedFonts(m,q):(this.editor.addFontCss(m),q(m))}catch(H){this.handleError(H)}};
+b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,d,e,g,k){};EditorUi.prototype.pickFolder=function(b,c,d){c(null)};EditorUi.prototype.exportSvg=function(b,c,d,e,g,k,n,u,x,z,A,B,y,C){if(this.spinner.spin(document.body,mxResources.get("export")))try{var f=this.editor.graph.isSelectionEmpty();d=null!=d?d:f;var l=c?null:this.editor.graph.background;l==mxConstants.NONE&&(l=null);null==l&&0==c&&(l=A?this.editor.graph.defaultPageBackgroundColor:
+"#ffffff");var m=this.editor.graph.getSvg(l,b,n,u,null,d,null,null,"blank"==z?"_blank":"self"==z?"_top":null,null,!0,A,B);e&&this.editor.graph.addSvgShadow(m);var p=this.getBaseFilename()+(g?".drawio":"")+".svg";C=null!=C?C:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(p,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var q=mxUtils.bind(this,
+function(b){this.spinner.stop();g&&b.setAttribute("content",this.getFileData(!0,null,null,null,d,x,null,null,null,!1));C(Graph.xmlDeclaration+"\n"+(g?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(m);var t=mxUtils.bind(this,function(b){k?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,q,this.thumbImageCache)):q(b)});y?this.embedFonts(m,t):(this.editor.addFontCss(m),t(m))}catch(H){this.handleError(H)}};
EditorUi.prototype.addRadiobox=function(b,c,d,e,g,k,n){return this.addCheckbox(b,d,e,g,k,n,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,d,e,g,k,n,u){k=null!=k?k:!0;var f=document.createElement("input");f.style.marginRight="8px";f.style.marginTop="16px";f.setAttribute("type",n?"radio":"checkbox");n="geCheckbox-"+Editor.guid();f.id=n;null!=u&&f.setAttribute("name",u);d&&(f.setAttribute("checked","checked"),f.defaultChecked=!0);e&&f.setAttribute("disabled","disabled");k&&(b.appendChild(f),d=document.createElement("label"),
mxUtils.write(d,c),d.setAttribute("for",n),b.appendChild(d),g||mxUtils.br(b));return f};EditorUi.prototype.addEditButton=function(b,c){var f=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);f.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 l=document.createElement("select");l.style.maxWidth="200px";l.style.width="auto";l.style.marginLeft="8px";l.style.marginRight="10px";l.className=
"geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));l.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d,mxResources.get("custom")+"...");l.appendChild(d);b.appendChild(l);mxEvent.addListener(l,"change",mxUtils.bind(this,function(){if("custom"==l.value){var b=new FilenameDialog(this,e,mxResources.get("ok"),function(b){null!=b?e=b:l.value="blank"},mxResources.get("url"),null,null,null,
@@ -10936,63 +10946,63 @@ b.style.width="100%";b.style.height="100%";b.style.boxSizing="border-box";null!=
"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);c&&(e=document.createElement("option"),e.setAttribute("value","frame"),
mxUtils.write(e,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(e));b.appendChild(d);mxUtils.write(b,mxResources.get("borderColor")+":");var l="#0000ff",g=null,g=mxUtils.button("",mxUtils.bind(this,function(b){this.pickColor(l||"none",function(b){l=b;f()});mxEvent.consume(b)}));f();g.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";g.style.marginLeft="4px";g.style.height="22px";g.style.width="22px";g.style.position="relative";g.style.top=mxClient.IS_IE||mxClient.IS_IE11||
mxClient.IS_EDGE?"6px":"1px";g.className="geColorBtn";b.appendChild(g);mxUtils.br(b);return{getColor:function(){return l},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createUrlParameters=function(b,c,d,e,g,k,n){n=null!=n?n:[];e&&("https://viewer.diagrams.net"==EditorUi.lightboxHost&&"1"!=urlParams.dev||n.push("lightbox=1"),"auto"!=b&&n.push("target="+b),null!=c&&c!=mxConstants.NONE&&n.push("highlight="+("#"==c.charAt(0)?c.substring(1):c)),null!=g&&0<g.length&&
-n.push("edit="+encodeURIComponent(g)),k&&n.push("layers=1"),this.editor.graph.foldingEnabled&&n.push("nav=1"));d&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&n.push("page-id="+this.currentPage.getId());return n};EditorUi.prototype.createLink=function(b,c,d,e,g,k,n,u,x,A){x=this.createUrlParameters(b,c,d,e,g,k,x);b=this.getCurrentFile();c=!0;null!=n?d="#U"+encodeURIComponent(n):(b=this.getCurrentFile(),u||null==b||b.constructor!=window.DriveFile?d="#R"+encodeURIComponent(d?
-this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(d="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=this.defaultFilename&&x.push("title="+encodeURIComponent(b.getTitle()));A&&1<d.length&&(x.push("open="+d.substring(1)),d="");return(e&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+
-"/"+(0<x.length?"?"+x.join("&"):"")+d};EditorUi.prototype.createHtml=function(b,c,d,e,g,k,n,u,x,A,z,B){this.getBasenames();var f={};""!=g&&g!=mxConstants.NONE&&(f.highlight=g);"auto"!==e&&(f.target=e);A||(f.lightbox=!1);f.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(f.zoom=d/100);d=[];n&&(d.push("pages"),f.resize=!0,null!=this.pages&&null!=this.currentPage&&(f.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(d.push("zoom"),f.resize=!0);u&&d.push("layers");x&&d.push("tags");
-0<d.length&&(A&&d.push("lightbox"),f.toolbar=d.join(" "));null!=z&&0<z.length&&(f.edit=z);null!=b?f.url=b:f.xml=this.getFileData(!0,null,null,null,null,!n);c='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=d?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(f))+'"></div>';b=null!=b?"&fetch="+encodeURIComponent(b):"";B(c,'<script type="text/javascript" src="'+(0<b.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+
+n.push("edit="+encodeURIComponent(g)),k&&n.push("layers=1"),this.editor.graph.foldingEnabled&&n.push("nav=1"));d&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&n.push("page-id="+this.currentPage.getId());return n};EditorUi.prototype.createLink=function(b,c,d,e,g,k,n,u,x,z){x=this.createUrlParameters(b,c,d,e,g,k,x);b=this.getCurrentFile();c=!0;null!=n?d="#U"+encodeURIComponent(n):(b=this.getCurrentFile(),u||null==b||b.constructor!=window.DriveFile?d="#R"+encodeURIComponent(d?
+this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))):(d="#"+b.getHash(),c=!1));c&&null!=b&&null!=b.getTitle()&&b.getTitle()!=this.defaultFilename&&x.push("title="+encodeURIComponent(b.getTitle()));z&&1<d.length&&(x.push("open="+d.substring(1)),d="");return(e&&"1"!=urlParams.dev?EditorUi.lightboxHost:mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host)+
+"/"+(0<x.length?"?"+x.join("&"):"")+d};EditorUi.prototype.createHtml=function(b,c,d,e,g,k,n,u,x,z,A,B){this.getBasenames();var f={};""!=g&&g!=mxConstants.NONE&&(f.highlight=g);"auto"!==e&&(f.target=e);z||(f.lightbox=!1);f.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(f.zoom=d/100);d=[];n&&(d.push("pages"),f.resize=!0,null!=this.pages&&null!=this.currentPage&&(f.page=mxUtils.indexOf(this.pages,this.currentPage)));c&&(d.push("zoom"),f.resize=!0);u&&d.push("layers");x&&d.push("tags");
+0<d.length&&(z&&d.push("lightbox"),f.toolbar=d.join(" "));null!=A&&0<A.length&&(f.edit=A);null!=b?f.url=b:f.xml=this.getFileData(!0,null,null,null,null,!n);c='<div class="mxgraph" style="'+(k?"max-width:100%;":"")+(""!=d?"border:1px solid transparent;":"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(f))+'"></div>';b=null!=b?"&fetch="+encodeURIComponent(b):"";B(c,'<script type="text/javascript" src="'+(0<b.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.lightboxHost+
"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,mxResources.get("html"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(l);var g=document.createElement("div");
g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var m=document.createElement("input");m.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";m.setAttribute("value","url");m.setAttribute("type","radio");m.setAttribute("name","type-embedhtmldialog");l=m.cloneNode(!0);l.setAttribute("value","copy");g.appendChild(l);var k=document.createElement("span");mxUtils.write(k,mxResources.get("includeCopyOfMyDiagram"));g.appendChild(k);mxUtils.br(g);g.appendChild(m);
k=document.createElement("span");mxUtils.write(k,mxResources.get("publicDiagramUrl"));g.appendChild(k);var p=this.getCurrentFile();null==d&&null!=p&&p.constructor==window.DriveFile&&(k=document.createElement("a"),k.style.paddingLeft="12px",k.style.color="gray",k.style.cursor="pointer",mxUtils.write(k,mxResources.get("share")),g.appendChild(k),mxEvent.addListener(k,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(p.getId())})));l.setAttribute("checked","checked");null==
-d&&m.setAttribute("disabled","disabled");f.appendChild(g);var n=this.addLinkSection(f),B=this.addCheckbox(f,mxResources.get("zoom"),!0,null,!0);mxUtils.write(f,":");var y=document.createElement("input");y.setAttribute("type","text");y.style.marginRight="16px";y.style.width="60px";y.style.marginLeft="4px";y.style.marginRight="12px";y.value="100%";f.appendChild(y);var C=this.addCheckbox(f,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,G=G=this.addCheckbox(f,mxResources.get("allPages"),
-g,!g),D=this.addCheckbox(f,mxResources.get("layers"),!0),E=this.addCheckbox(f,mxResources.get("tags"),!0),F=this.addCheckbox(f,mxResources.get("lightbox"),!0),J=this.addEditButton(f,F),K=J.getEditInput();K.style.marginBottom="16px";mxEvent.addListener(F,"change",function(){F.checked?K.removeAttribute("disabled"):K.setAttribute("disabled","disabled");K.checked&&F.checked?J.getEditSelect().removeAttribute("disabled"):J.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,f,
-mxUtils.bind(this,function(){e(m.checked?d:null,B.checked,y.value,n.getTarget(),n.getColor(),C.checked,G.checked,D.checked,E.checked,F.checked,J.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);l.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,d,e,g,k,n,u){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,b||mxResources.get("link"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
+d&&m.setAttribute("disabled","disabled");f.appendChild(g);var n=this.addLinkSection(f),B=this.addCheckbox(f,mxResources.get("zoom"),!0,null,!0);mxUtils.write(f,":");var y=document.createElement("input");y.setAttribute("type","text");y.style.marginRight="16px";y.style.width="60px";y.style.marginLeft="4px";y.style.marginRight="12px";y.value="100%";f.appendChild(y);var C=this.addCheckbox(f,mxResources.get("fit"),!0),g=null!=this.pages&&1<this.pages.length,E=E=this.addCheckbox(f,mxResources.get("allPages"),
+g,!g),D=this.addCheckbox(f,mxResources.get("layers"),!0),F=this.addCheckbox(f,mxResources.get("tags"),!0),G=this.addCheckbox(f,mxResources.get("lightbox"),!0),I=this.addEditButton(f,G),J=I.getEditInput();J.style.marginBottom="16px";mxEvent.addListener(G,"change",function(){G.checked?J.removeAttribute("disabled"):J.setAttribute("disabled","disabled");J.checked&&G.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,f,
+mxUtils.bind(this,function(){e(m.checked?d:null,B.checked,y.value,n.getTarget(),n.getColor(),C.checked,E.checked,D.checked,F.checked,G.checked,I.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);l.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,d,e,g,k,n,u){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,b||mxResources.get("link"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
f.appendChild(l);var m=this.getCurrentFile();b=0;if(null==m||m.constructor!=window.DriveFile||c)n=null!=n?n:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;n=null!=n?n:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";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 p=document.createElement("div");p.style.whiteSpace="normal";mxUtils.write(p,mxResources.get("linkAccountRequired"));
l.appendChild(p);p=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(m.getId())}));p.style.marginTop="12px";p.className="geBtn";l.appendChild(p);f.appendChild(l);p=document.createElement("a");p.style.paddingLeft="12px";p.style.color="gray";p.style.fontSize="11px";p.style.cursor="pointer";mxUtils.write(p,mxResources.get("check"));l.appendChild(p);mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&
-this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,300,80,!0,!1);b.init()}))}))}var t=null,q=null;if(null!=d||null!=e)b+=30,mxUtils.write(f,mxResources.get("width")+":"),t=document.createElement("input"),t.setAttribute("type","text"),t.style.marginRight="16px",t.style.width="50px",t.style.marginLeft="6px",t.style.marginRight=
-"16px",t.style.marginBottom="10px",t.value="100%",f.appendChild(t),mxUtils.write(f,mxResources.get("height")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.width="50px",q.style.marginLeft="6px",q.style.marginBottom="10px",q.value=e+"px",f.appendChild(q),mxUtils.br(f);var v=this.addLinkSection(f,k);d=null!=this.pages&&1<this.pages.length;var D=null;if(null==m||m.constructor!=window.DriveFile||c)D=this.addCheckbox(f,mxResources.get("allPages"),d,!d);var E=this.addCheckbox(f,
-mxResources.get("lightbox"),!0,null,null,!k),F=this.addEditButton(f,E),J=F.getEditInput();k&&(J.style.marginLeft=E.style.marginLeft,E.style.display="none",b-=20);var K=this.addCheckbox(f,mxResources.get("layers"),!0);K.style.marginLeft=J.style.marginLeft;K.style.marginTop="8px";var H=this.addCheckbox(f,mxResources.get("tags"),!0);H.style.marginLeft=J.style.marginLeft;H.style.marginBottom="16px";H.style.marginTop="16px";mxEvent.addListener(E,"change",function(){E.checked?(K.removeAttribute("disabled"),
-J.removeAttribute("disabled")):(K.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"));J.checked&&E.checked?F.getEditSelect().removeAttribute("disabled"):F.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,f,mxUtils.bind(this,function(){g(v.getTarget(),v.getColor(),null==D?!0:D.checked,E.checked,F.getLink(),K.checked,null!=t?t.value:null,null!=q?q.value:null,H.checked)}),null,mxResources.get("create"),n,u);this.showDialog(c.container,340,300+b,!0,
-!0);null!=t?(t.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null)):v.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,mxResources.get("image"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(g?"10":"4")+"px";f.appendChild(l);if(g){mxUtils.write(f,mxResources.get("zoom")+
+this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,300,80,!0,!1);b.init()}))}))}var q=null,t=null;if(null!=d||null!=e)b+=30,mxUtils.write(f,mxResources.get("width")+":"),q=document.createElement("input"),q.setAttribute("type","text"),q.style.marginRight="16px",q.style.width="50px",q.style.marginLeft="6px",q.style.marginRight=
+"16px",q.style.marginBottom="10px",q.value="100%",f.appendChild(q),mxUtils.write(f,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=e+"px",f.appendChild(t),mxUtils.br(f);var v=this.addLinkSection(f,k);d=null!=this.pages&&1<this.pages.length;var D=null;if(null==m||m.constructor!=window.DriveFile||c)D=this.addCheckbox(f,mxResources.get("allPages"),d,!d);var F=this.addCheckbox(f,
+mxResources.get("lightbox"),!0,null,null,!k),G=this.addEditButton(f,F),I=G.getEditInput();k&&(I.style.marginLeft=F.style.marginLeft,F.style.display="none",b-=20);var J=this.addCheckbox(f,mxResources.get("layers"),!0);J.style.marginLeft=I.style.marginLeft;J.style.marginTop="8px";var H=this.addCheckbox(f,mxResources.get("tags"),!0);H.style.marginLeft=I.style.marginLeft;H.style.marginBottom="16px";H.style.marginTop="16px";mxEvent.addListener(F,"change",function(){F.checked?(J.removeAttribute("disabled"),
+I.removeAttribute("disabled")):(J.setAttribute("disabled","disabled"),I.setAttribute("disabled","disabled"));I.checked&&F.checked?G.getEditSelect().removeAttribute("disabled"):G.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,f,mxUtils.bind(this,function(){g(v.getTarget(),v.getColor(),null==D?!0:D.checked,F.checked,G.getLink(),J.checked,null!=q?q.value:null,null!=t?t.value:null,H.checked)}),null,mxResources.get("create"),n,u);this.showDialog(c.container,340,300+b,!0,
+!0);null!=q?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)):v.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=document.createElement("h3");mxUtils.write(l,mxResources.get("image"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(g?"10":"4")+"px";f.appendChild(l);if(g){mxUtils.write(f,mxResources.get("zoom")+
":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.style.marginRight="12px";m.value=this.lastExportZoom||"100%";f.appendChild(m);mxUtils.write(f,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";f.appendChild(k);mxUtils.br(f)}var p=this.addCheckbox(f,
mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=e?null:this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),l=this.editor.graph,q=e?null:this.addCheckbox(f,mxResources.get("transparentBackground"),l.background==mxConstants.NONE||null==l.background);null!=q&&(q.style.marginBottom="16px");b=new CustomDialog(this,f,mxUtils.bind(this,function(){var b=parseInt(m.value)/100||1,c=parseInt(k.value)||0;d(!p.checked,null!=n?n.checked:!1,null!=
-q?q.checked:!1,b,c)}),null,b,c);this.showDialog(b.container,300,(g?25:0)+(e?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,d,e,g,k,n,u,x){n=null!=n?n:Editor.defaultIncludeDiagram;var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=this.editor.graph,m="jpeg"==u?220:300,p=document.createElement("h3");mxUtils.write(p,b);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";f.appendChild(p);mxUtils.write(f,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%";f.appendChild(t);mxUtils.write(f,mxResources.get("borderWidth")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.value=this.lastExportBorder||"0";f.appendChild(q);mxUtils.br(f);var v=this.addCheckbox(f,mxResources.get("selectionOnly"),
-!1,l.isSelectionEmpty()),E=document.createElement("input");E.style.marginTop="16px";E.style.marginRight="8px";E.style.marginLeft="24px";E.setAttribute("disabled","disabled");E.setAttribute("type","checkbox");var F=document.createElement("select");F.style.marginTop="16px";F.style.marginLeft="8px";b=["selectionOnly","diagram","page"];for(var J={},p=0;p<b.length;p++)if(!l.isSelectionEmpty()||"selectionOnly"!=b[p]){var K=document.createElement("option");mxUtils.write(K,mxResources.get(b[p]));K.setAttribute("value",
-b[p]);F.appendChild(K);J[b[p]]=K}x?(mxUtils.write(f,mxResources.get("size")+":"),f.appendChild(F),mxUtils.br(f),m+=26,mxEvent.addListener(F,"change",function(){"selectionOnly"==F.value&&(v.checked=!0)})):k&&(f.appendChild(E),mxUtils.write(f,mxResources.get("crop")),mxUtils.br(f),m+=30,mxEvent.addListener(v,"change",function(){v.checked?E.removeAttribute("disabled"):E.setAttribute("disabled","disabled")}));l.isSelectionEmpty()?x&&(v.style.display="none",v.nextSibling.style.display="none",v.nextSibling.nextSibling.style.display=
-"none",m-=30):(F.value="diagram",E.setAttribute("checked","checked"),E.defaultChecked=!0,mxEvent.addListener(v,"change",function(){F.value=v.checked?"selectionOnly":"diagram"}));var H=this.addCheckbox(f,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=u),I=null;Editor.isDarkMode()&&(I=this.addCheckbox(f,mxResources.get("dark"),!0),m+=26);var S=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible),P=null;if("png"==u||"jpeg"==u)P=this.addCheckbox(f,mxResources.get("grid"),!1,this.isOffline()||
-!this.canvasSupported,!1,!0),m+=30;var M=this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),n,null,null,"jpeg"!=u);M.style.marginBottom="16px";var W=document.createElement("input");W.style.marginBottom="16px";W.style.marginRight="8px";W.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||W.setAttribute("disabled","disabled");var X=document.createElement("select");X.style.maxWidth="260px";X.style.marginLeft="8px";X.style.marginRight="10px";X.style.marginBottom="16px";
-X.className="geBtn";k=document.createElement("option");k.setAttribute("value","none");mxUtils.write(k,mxResources.get("noChange"));X.appendChild(k);k=document.createElement("option");k.setAttribute("value","embedFonts");mxUtils.write(k,mxResources.get("embedFonts"));X.appendChild(k);k=document.createElement("option");k.setAttribute("value","lblToSvg");mxUtils.write(k,mxResources.get("lblToSvg"));X.appendChild(k);this.isOffline()&&k.setAttribute("disabled","disabled");mxEvent.addListener(X,"change",
-mxUtils.bind(this,function(){"lblToSvg"==X.value?(W.checked=!0,W.setAttribute("disabled","disabled"),J.page.style.display="none","page"==F.value&&(F.value="diagram"),S.checked=!1,S.setAttribute("disabled","disabled"),Q.style.display="inline-block",L.style.display="none"):"disabled"==W.getAttribute("disabled")&&(W.checked=!1,W.removeAttribute("disabled"),S.removeAttribute("disabled"),J.page.style.display="",Q.style.display="none",L.style.display="")}));c&&(f.appendChild(W),mxUtils.write(f,mxResources.get("embedImages")),
-mxUtils.br(f),mxUtils.write(f,mxResources.get("txtSettings")+":"),f.appendChild(X),mxUtils.br(f),m+=60);var L=document.createElement("select");L.style.maxWidth="260px";L.style.marginLeft="8px";L.style.marginRight="10px";L.className="geBtn";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));L.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));L.appendChild(c);
-c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));L.appendChild(c);var Q=document.createElement("div");mxUtils.write(Q,mxResources.get("LinksLost"));Q.style.margin="7px";Q.style.display="none";"svg"==u&&(mxUtils.write(f,mxResources.get("links")+":"),f.appendChild(L),f.appendChild(Q),mxUtils.br(f),mxUtils.br(f),m+=50);d=new CustomDialog(this,f,mxUtils.bind(this,function(){this.lastExportBorder=q.value;this.lastExportZoom=t.value;
-g(t.value,H.checked,!v.checked,S.checked,M.checked,W.checked,q.value,E.checked,!1,L.value,null!=P?P.checked:null,null!=I?I.checked:null,F.value,"embedFonts"==X.value,"lblToSvg"==X.value)}),null,d,e);this.showDialog(d.container,340,m,!0,!0,null,null,null,null,!0);t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?t.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace="nowrap";
-var l=this.editor.graph;if(null!=c){var m=document.createElement("h3");mxUtils.write(m,c);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(m)}var k=this.addCheckbox(f,mxResources.get("fit"),!0),p=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible&&e,!e),n=this.addCheckbox(f,d),q=this.addCheckbox(f,mxResources.get("lightbox"),!0),y=this.addEditButton(f,q),C=y.getEditInput(),G=1<l.model.getChildCount(l.model.getRoot()),D=this.addCheckbox(f,mxResources.get("layers"),
-G,!G);D.style.marginLeft=C.style.marginLeft;D.style.marginBottom="12px";D.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(G&&D.removeAttribute("disabled"),C.removeAttribute("disabled")):(D.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"));C.checked&&q.checked?y.getEditSelect().removeAttribute("disabled"):y.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,f,mxUtils.bind(this,function(){b(k.checked,p.checked,n.checked,
+q?q.checked:!1,b,c)}),null,b,c);this.showDialog(b.container,300,(g?25:0)+(e?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,d,e,g,k,n,u,x){n=null!=n?n:Editor.defaultIncludeDiagram;var f=document.createElement("div");f.style.whiteSpace="nowrap";var l=this.editor.graph,m="jpeg"==u?220:300,p=document.createElement("h3");mxUtils.write(p,b);p.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";f.appendChild(p);mxUtils.write(f,mxResources.get("zoom")+":");var q=
+document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight="12px";q.value=this.lastExportZoom||"100%";f.appendChild(q);mxUtils.write(f,mxResources.get("borderWidth")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.value=this.lastExportBorder||"0";f.appendChild(t);mxUtils.br(f);var v=this.addCheckbox(f,mxResources.get("selectionOnly"),
+!1,l.isSelectionEmpty()),F=document.createElement("input");F.style.marginTop="16px";F.style.marginRight="8px";F.style.marginLeft="24px";F.setAttribute("disabled","disabled");F.setAttribute("type","checkbox");var G=document.createElement("select");G.style.marginTop="16px";G.style.marginLeft="8px";b=["selectionOnly","diagram","page"];for(var I={},p=0;p<b.length;p++)if(!l.isSelectionEmpty()||"selectionOnly"!=b[p]){var J=document.createElement("option");mxUtils.write(J,mxResources.get(b[p]));J.setAttribute("value",
+b[p]);G.appendChild(J);I[b[p]]=J}x?(mxUtils.write(f,mxResources.get("size")+":"),f.appendChild(G),mxUtils.br(f),m+=26,mxEvent.addListener(G,"change",function(){"selectionOnly"==G.value&&(v.checked=!0)})):k&&(f.appendChild(F),mxUtils.write(f,mxResources.get("crop")),mxUtils.br(f),m+=30,mxEvent.addListener(v,"change",function(){v.checked?F.removeAttribute("disabled"):F.setAttribute("disabled","disabled")}));l.isSelectionEmpty()?x&&(v.style.display="none",v.nextSibling.style.display="none",v.nextSibling.nextSibling.style.display=
+"none",m-=30):(G.value="diagram",F.setAttribute("checked","checked"),F.defaultChecked=!0,mxEvent.addListener(v,"change",function(){G.value=v.checked?"selectionOnly":"diagram"}));var H=this.addCheckbox(f,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=u),K=null;Editor.isDarkMode()&&(K=this.addCheckbox(f,mxResources.get("dark"),!0),m+=26);var R=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible),O=null;if("png"==u||"jpeg"==u)O=this.addCheckbox(f,mxResources.get("grid"),!1,this.isOffline()||
+!this.canvasSupported,!1,!0),m+=30;var M=this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),n,null,null,"jpeg"!=u);M.style.marginBottom="16px";var V=document.createElement("input");V.style.marginBottom="16px";V.style.marginRight="8px";V.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||V.setAttribute("disabled","disabled");var W=document.createElement("select");W.style.maxWidth="260px";W.style.marginLeft="8px";W.style.marginRight="10px";W.style.marginBottom="16px";
+W.className="geBtn";k=document.createElement("option");k.setAttribute("value","none");mxUtils.write(k,mxResources.get("noChange"));W.appendChild(k);k=document.createElement("option");k.setAttribute("value","embedFonts");mxUtils.write(k,mxResources.get("embedFonts"));W.appendChild(k);k=document.createElement("option");k.setAttribute("value","lblToSvg");mxUtils.write(k,mxResources.get("lblToSvg"));W.appendChild(k);this.isOffline()&&k.setAttribute("disabled","disabled");mxEvent.addListener(W,"change",
+mxUtils.bind(this,function(){"lblToSvg"==W.value?(V.checked=!0,V.setAttribute("disabled","disabled"),I.page.style.display="none","page"==G.value&&(G.value="diagram"),R.checked=!1,R.setAttribute("disabled","disabled"),P.style.display="inline-block",L.style.display="none"):"disabled"==V.getAttribute("disabled")&&(V.checked=!1,V.removeAttribute("disabled"),R.removeAttribute("disabled"),I.page.style.display="",P.style.display="none",L.style.display="")}));c&&(f.appendChild(V),mxUtils.write(f,mxResources.get("embedImages")),
+mxUtils.br(f),mxUtils.write(f,mxResources.get("txtSettings")+":"),f.appendChild(W),mxUtils.br(f),m+=60);var L=document.createElement("select");L.style.maxWidth="260px";L.style.marginLeft="8px";L.style.marginRight="10px";L.className="geBtn";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));L.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));L.appendChild(c);
+c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));L.appendChild(c);var P=document.createElement("div");mxUtils.write(P,mxResources.get("LinksLost"));P.style.margin="7px";P.style.display="none";"svg"==u&&(mxUtils.write(f,mxResources.get("links")+":"),f.appendChild(L),f.appendChild(P),mxUtils.br(f),mxUtils.br(f),m+=50);d=new CustomDialog(this,f,mxUtils.bind(this,function(){this.lastExportBorder=t.value;this.lastExportZoom=q.value;
+g(q.value,H.checked,!v.checked,R.checked,M.checked,V.checked,t.value,F.checked,!1,L.value,null!=O?O.checked:null,null!=K?K.checked:null,G.value,"embedFonts"==W.value,"lblToSvg"==W.value)}),null,d,e);this.showDialog(d.container,340,m,!0,!0,null,null,null,null,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace="nowrap";
+var l=this.editor.graph;if(null!=c){var m=document.createElement("h3");mxUtils.write(m,c);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(m)}var k=this.addCheckbox(f,mxResources.get("fit"),!0),p=this.addCheckbox(f,mxResources.get("shadow"),l.shadowVisible&&e,!e),n=this.addCheckbox(f,d),q=this.addCheckbox(f,mxResources.get("lightbox"),!0),y=this.addEditButton(f,q),C=y.getEditInput(),E=1<l.model.getChildCount(l.model.getRoot()),D=this.addCheckbox(f,mxResources.get("layers"),
+E,!E);D.style.marginLeft=C.style.marginLeft;D.style.marginBottom="12px";D.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(E&&D.removeAttribute("disabled"),C.removeAttribute("disabled")):(D.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"));C.checked&&q.checked?y.getEditSelect().removeAttribute("disabled"):y.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,f,mxUtils.bind(this,function(){b(k.checked,p.checked,n.checked,
q.checked,y.getLink(),D.checked)}),null,mxResources.get("embed"),g);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,d,e,g,k,n,u){function f(c){var f=" ",p="";e&&(f=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
-EditorUi.lightboxHost+"/?client=1"+(null!=m?"&page="+m:"")+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");b&&(p+="max-width:100%;");var t="";d&&(t=' width="'+Math.round(l.width)+'" height="'+Math.round(l.height)+'"');n('<img src="'+c+'"'+t+(""!=p?' style="'+p+'"':"")+f+"/>")}var l=this.editor.graph.getGraphBounds(),m=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=e?this.getFileData(!0):null;b=
-this.createImageDataUri(b,c,"png");f(b)}),null,null,null,mxUtils.bind(this,function(b){u({message:mxResources.get("unknownError")})}),null,!0,d?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),l.width*l.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var p="";d&&(p="&w="+Math.round(2*l.width)+"&h="+Math.round(2*l.height));var t=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+p+"&xml="+encodeURIComponent(c));t.send(mxUtils.bind(this,function(){200<=t.getStatus()&&
-299>=t.getStatus()?f("data:image/png;base64,"+t.getText()):u({message:mxResources.get("unknownError")})}))}else u({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,d,e,g,k,n){var f=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!d),l=f.getElementsByTagName("a");if(null!=l)for(var m=0;m<l.length;m++){var p=l[m].getAttribute("href");null!=p&&"#"==p.charAt(0)&&"_blank"==l[m].getAttribute("target")&&l[m].removeAttribute("target")}e&&
-f.setAttribute("content",this.getFileData(!0));c&&this.editor.graph.addSvgShadow(f);if(d){var t=" ",q="";e&&(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.lightboxHost+"/?client=1"+(g?"&edit=_blank":"")+(k?"&layers=1":
-"")+"');}})(this);\"",q+="cursor:pointer;");b&&(q+="max-width:100%;");this.editor.convertImages(f,mxUtils.bind(this,function(b){n('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(b))+'"'+(""!=q?' style="'+q+'"':"")+t+"/>")}))}else q="",e&&(c=this.getSelectedPageIndex(),f.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
-EditorUi.lightboxHost+"/?client=1"+(null!=c?"&page="+c:"")+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}}})(this);"),q+="cursor:pointer;"),b&&(b=parseInt(f.getAttribute("width")),g=parseInt(f.getAttribute("height")),f.setAttribute("viewBox","-0.5 -0.5 "+b+" "+g),q+="max-width:100%;max-height:"+g+"px;",f.removeAttribute("height")),""!=q&&f.setAttribute("style",q),this.editor.addFontCss(f),this.editor.graph.mathEnabled&&this.editor.addMathCss(f),n(mxUtils.getXml(f))};EditorUi.prototype.timeSince=function(b){b=
+EditorUi.lightboxHost+"/?client=1"+(null!=m?"&page="+m:"")+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");b&&(p+="max-width:100%;");var q="";d&&(q=' width="'+Math.round(l.width)+'" height="'+Math.round(l.height)+'"');n('<img src="'+c+'"'+q+(""!=p?' style="'+p+'"':"")+f+"/>")}var l=this.editor.graph.getGraphBounds(),m=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=e?this.getFileData(!0):null;b=
+this.createImageDataUri(b,c,"png");f(b)}),null,null,null,mxUtils.bind(this,function(b){u({message:mxResources.get("unknownError")})}),null,!0,d?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),l.width*l.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var p="";d&&(p="&w="+Math.round(2*l.width)+"&h="+Math.round(2*l.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(e?"1":"0")+p+"&xml="+encodeURIComponent(c));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&
+299>=q.getStatus()?f("data:image/png;base64,"+q.getText()):u({message:mxResources.get("unknownError")})}))}else u({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,d,e,g,k,n){var f=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!d),l=f.getElementsByTagName("a");if(null!=l)for(var m=0;m<l.length;m++){var p=l[m].getAttribute("href");null!=p&&"#"==p.charAt(0)&&"_blank"==l[m].getAttribute("target")&&l[m].removeAttribute("target")}e&&
+f.setAttribute("content",this.getFileData(!0));c&&this.editor.graph.addSvgShadow(f);if(d){var q=" ",t="";e&&(q="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+EditorUi.lightboxHost+"/?client=1"+(g?"&edit=_blank":"")+(k?"&layers=1":
+"")+"');}})(this);\"",t+="cursor:pointer;");b&&(t+="max-width:100%;");this.editor.convertImages(f,mxUtils.bind(this,function(b){n('<img src="'+Editor.createSvgDataUri(mxUtils.getXml(b))+'"'+(""!=t?' style="'+t+'"':"")+q+"/>")}))}else t="",e&&(c=this.getSelectedPageIndex(),f.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+
+EditorUi.lightboxHost+"/?client=1"+(null!=c?"&page="+c:"")+(g?"&edit=_blank":"")+(k?"&layers=1":"")+"');}}})(this);"),t+="cursor:pointer;"),b&&(b=parseInt(f.getAttribute("width")),g=parseInt(f.getAttribute("height")),f.setAttribute("viewBox","-0.5 -0.5 "+b+" "+g),t+="max-width:100%;max-height:"+g+"px;",f.removeAttribute("height")),""!=t&&f.setAttribute("style",t),this.editor.addFontCss(f),this.editor.graph.mathEnabled&&this.editor.addMathCss(f),n(mxUtils.getXml(f))};EditorUi.prototype.timeSince=function(b){b=
Math.floor((new Date-b)/1E3);var c=Math.floor(b/31536E3);if(1<c)return c+" "+mxResources.get("years");c=Math.floor(b/2592E3);if(1<c)return c+" "+mxResources.get("months");c=Math.floor(b/86400);if(1<c)return c+" "+mxResources.get("days");c=Math.floor(b/3600);if(1<c)return c+" "+mxResources.get("hours");c=Math.floor(b/60);return 1<c?c+" "+mxResources.get("minutes"):1==c?c+" "+mxResources.get("minute"):null};EditorUi.prototype.decodeNodeIntoGraph=function(b,c){if(null!=b){var f=null;if("diagram"==b.nodeName)f=
b;else if("mxfile"==b.nodeName){var d=b.getElementsByTagName("diagram");if(0<d.length){var f=d[0],e=c.getGlobalVariable;c.getGlobalVariable=function(b){return"page"==b?f.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==b?1:e.apply(this,arguments)}}}null!=f&&(b=Editor.parseDiagramNode(f))}d=this.editor.graph;try{this.editor.graph=c,this.editor.setGraphXml(b)}catch(t){}finally{this.editor.graph=d}return b};EditorUi.prototype.getPngFileProperties=function(b){var c=1,f=0;if(null!=
b){if(b.hasAttribute("scale")){var d=parseFloat(b.getAttribute("scale"));!isNaN(d)&&0<d&&(c=d)}b.hasAttribute("border")&&(d=parseInt(b.getAttribute("border")),!isNaN(d)&&0<d&&(f=d))}return{scale:c,border:f}};EditorUi.prototype.getEmbeddedPng=function(b,c,d,e,g){try{var f=this.editor.graph,l=null!=f.themes&&"darkTheme"==f.defaultThemeName,m=null;if(null!=d&&0<d.length)f=this.createTemporaryGraph(l?f.getDefaultStylesheet():f.getStylesheet()),document.body.appendChild(f.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(d).documentElement,
!0),f),m=d;else if(l||null!=this.pages&&this.currentPage!=this.pages[0]){var f=this.createTemporaryGraph(l?f.getDefaultStylesheet():f.getStylesheet()),k=f.getGlobalVariable;f.setBackgroundImage=this.editor.graph.setBackgroundImage;var p=this.pages[0];this.currentPage==p?f.setBackgroundImage(this.editor.graph.backgroundImage):null!=p.viewState&&null!=p.viewState&&f.setBackgroundImage(p.viewState.backgroundImage);f.getGlobalVariable=function(b){return"page"==b?p.getName():"pagenumber"==b?1:k.apply(this,
arguments)};document.body.appendChild(f.container);f.model.setRoot(p.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(d){try{null==m&&(m=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var e=d.toDataURL("image/png"),e=Editor.writeGraphModelToPng(e,"tEXt","mxfile",encodeURIComponent(m));b(e.substring(e.lastIndexOf(",")+1));f!=this.editor.graph&&f.container.parentNode.removeChild(f.container)}catch(y){null!=c&&c(y)}}),null,null,null,mxUtils.bind(this,function(b){null!=c&&
-c(b)}),null,null,e,null,f.shadowVisible,null,f,g,null,null,null,"diagram",null)}catch(z){null!=c&&c(z)}};EditorUi.prototype.getEmbeddedSvg=function(b,c,d,e,g,k,n,u,x,A,z,B,y){u=null!=u?u:!0;z=null!=z?z:0;n=null!=x?x:c.background;n==mxConstants.NONE&&(n=null);k=c.getSvg(n,A,z,null,null,k,null,null,null,c.shadowVisible||B,null,y,"diagram");(c.shadowVisible||B)&&c.addSvgShadow(k,null,null,0==z);null!=b&&k.setAttribute("content",b);null!=d&&k.setAttribute("resource",d);var f=mxUtils.bind(this,function(b){b=
+c(b)}),null,null,e,null,f.shadowVisible,null,f,g,null,null,null,"diagram",null)}catch(A){null!=c&&c(A)}};EditorUi.prototype.getEmbeddedSvg=function(b,c,d,e,g,k,n,u,x,z,A,B,y){u=null!=u?u:!0;A=null!=A?A:0;n=null!=x?x:c.background;n==mxConstants.NONE&&(n=null);k=c.getSvg(n,z,A,null,null,k,null,null,null,c.shadowVisible||B,null,y,"diagram");(c.shadowVisible||B)&&c.addSvgShadow(k,null,null,0==A);null!=b&&k.setAttribute("content",b);null!=d&&k.setAttribute("resource",d);var f=mxUtils.bind(this,function(b){b=
(e?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(b);null!=g&&g(b);return b});c.mathEnabled&&this.editor.addMathCss(k);if(null!=g)this.embedFonts(k,mxUtils.bind(this,function(b){u?this.editor.convertImages(b,mxUtils.bind(this,function(b){f(b)})):f(b)}));else return f(k)};EditorUi.prototype.embedFonts=function(b,c){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(b,this.editor.resolvedFontCss),
-this.editor.embedExtFonts(mxUtils.bind(this,function(f){try{null!=f&&this.editor.addFontCss(b,f),c(b)}catch(p){c(b)}}))}catch(m){c(b)}}))};EditorUi.prototype.exportImage=function(b,c,d,e,g,k,n,u,x,A,z,B,y){x=null!=x?x:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var f=this.editor.graph.isSelectionEmpty();d=null!=d?d:f;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(b){this.spinner.stop();try{this.saveCanvas(b,
-g?this.getFileData(!0,null,null,null,d,u):null,x,null==this.pages||0==this.pages.length,z)}catch(D){this.handleError(D)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,d,b||1,c,e,null,null,k,n,A,B,y)}catch(G){this.spinner.stop(),this.handleError(G)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,d,e,g,k,n){c=null!=c?c:0;d=null!=d?d:0;var f=[];try{var l=
+this.editor.embedExtFonts(mxUtils.bind(this,function(f){try{null!=f&&this.editor.addFontCss(b,f),c(b)}catch(p){c(b)}}))}catch(m){c(b)}}))};EditorUi.prototype.exportImage=function(b,c,d,e,g,k,n,u,x,z,A,B,y){x=null!=x?x:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var f=this.editor.graph.isSelectionEmpty();d=null!=d?d:f;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(b){this.spinner.stop();try{this.saveCanvas(b,
+g?this.getFileData(!0,null,null,null,d,u):null,x,null==this.pages||0==this.pages.length,A)}catch(D){this.handleError(D)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,d,b||1,c,e,null,null,k,n,z,B,y)}catch(E){this.spinner.stop(),this.handleError(E)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,d,e,g,k,n){c=null!=c?c:0;d=null!=d?d:0;var f=[];try{var l=
this.editor.graph;if(null!=b&&0<b.length){l.model.beginUpdate();try{var m=mxUtils.parseXml(b);b={};var p=this.editor.extractGraphModel(m.documentElement,null!=this.pages);if(null!=p&&"mxfile"==p.nodeName&&null!=this.pages){var q=p.getElementsByTagName("diagram");if(1==q.length&&!k){if(p=Editor.parseDiagramNode(q[0]),null!=this.currentPage&&(b[q[0].getAttribute("id")]=this.currentPage.getId(),null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",
-[1]))){var t=q[0].getAttribute("name");null!=t&&""!=t&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,t))}}else if(0<q.length){k=[];var v=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[q[0].getAttribute("id")]=this.pages[0].getId(),p=Editor.parseDiagramNode(q[0]),e=!1,v=1);for(;v<q.length;v++){var G=q[v].getAttribute("id");q[v].removeAttribute("id");var D=this.updatePageRoot(new DiagramPage(q[v]));b[G]=q[v].getAttribute("id");var E=this.pages.length;null==
-D.getName()&&D.setName(mxResources.get("pageWithNumber",[E+1]));l.model.execute(new ChangePage(this,D,D,E,!0));k.push(D)}this.updatePageLinks(b,k)}}if(null!=p&&"mxGraphModel"===p.nodeName){f=l.importGraphModel(p,c,d,e);if(null!=f)for(v=0;v<f.length;v++)this.updatePageLinksForCell(b,f[v]);var F=l.parseBackgroundImage(p.getAttribute("backgroundImage"));if(null!=F&&null!=F.originalSrc){this.updateBackgroundPageLink(b,F);var J=new ChangePageSetup(this,null,F);J.ignoreColor=!0;l.model.execute(J)}}n&&this.insertHandler(f,
-null,null,l.defaultVertexStyle,l.defaultEdgeStyle,!1,!0)}finally{l.model.endUpdate()}}}catch(K){if(g)throw K;this.handleError(K)}return f};EditorUi.prototype.updatePageLinks=function(b,c){for(var f=0;f<c.length;f++)this.updatePageLinksForCell(b,c[f].root),null!=c[f].viewState&&this.updateBackgroundPageLink(b,c[f].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(b,c){try{if(null!=c&&Graph.isPageLink(c.originalSrc)){var f=b[c.originalSrc.substring(c.originalSrc.indexOf(",")+
-1)];null!=f&&(c.originalSrc="data:page/id,"+f)}}catch(p){}};EditorUi.prototype.updatePageLinksForCell=function(b,c){var f=document.createElement("div"),d=this.editor.graph,e=d.getLinkForCell(c);null!=e&&d.setLinkForCell(c,this.updatePageLink(b,e));if(d.isHtmlLabel(c)){f.innerHTML=d.sanitizeHtml(d.getLabel(c));for(var l=f.getElementsByTagName("a"),g=!1,k=0;k<l.length;k++)e=l[k].getAttribute("href"),null!=e&&(l[k].setAttribute("href",this.updatePageLink(b,e)),g=!0);g&&d.labelChanged(c,f.innerHTML)}for(k=
+[1]))){var t=q[0].getAttribute("name");null!=t&&""!=t&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,t))}}else if(0<q.length){k=[];var v=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[q[0].getAttribute("id")]=this.pages[0].getId(),p=Editor.parseDiagramNode(q[0]),e=!1,v=1);for(;v<q.length;v++){var E=q[v].getAttribute("id");q[v].removeAttribute("id");var D=this.updatePageRoot(new DiagramPage(q[v]));b[E]=q[v].getAttribute("id");var F=this.pages.length;null==
+D.getName()&&D.setName(mxResources.get("pageWithNumber",[F+1]));l.model.execute(new ChangePage(this,D,D,F,!0));k.push(D)}this.updatePageLinks(b,k)}}if(null!=p&&"mxGraphModel"===p.nodeName){f=l.importGraphModel(p,c,d,e);if(null!=f)for(v=0;v<f.length;v++)this.updatePageLinksForCell(b,f[v]);var G=l.parseBackgroundImage(p.getAttribute("backgroundImage"));if(null!=G&&null!=G.originalSrc){this.updateBackgroundPageLink(b,G);var I=new ChangePageSetup(this,null,G);I.ignoreColor=!0;l.model.execute(I)}}n&&this.insertHandler(f,
+null,null,l.defaultVertexStyle,l.defaultEdgeStyle,!1,!0)}finally{l.model.endUpdate()}}}catch(J){if(g)throw J;this.handleError(J)}return f};EditorUi.prototype.updatePageLinks=function(b,c){for(var f=0;f<c.length;f++)this.updatePageLinksForCell(b,c[f].root),null!=c[f].viewState&&this.updateBackgroundPageLink(b,c[f].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(b,c){try{if(null!=c&&Graph.isPageLink(c.originalSrc)){var f=b[c.originalSrc.substring(c.originalSrc.indexOf(",")+
+1)];null!=f&&(c.originalSrc="data:page/id,"+f)}}catch(p){}};EditorUi.prototype.updatePageLinksForCell=function(b,c){var f=document.createElement("div"),d=this.editor.graph,e=d.getLinkForCell(c);null!=e&&d.setLinkForCell(c,this.updatePageLink(b,e));if(d.isHtmlLabel(c)){f.innerHTML=d.sanitizeHtml(d.getLabel(c));for(var g=f.getElementsByTagName("a"),l=!1,k=0;k<g.length;k++)e=g[k].getAttribute("href"),null!=e&&(g[k].setAttribute("href",this.updatePageLink(b,e)),l=!0);l&&d.labelChanged(c,f.innerHTML)}for(k=
0;k<d.model.getChildCount(c);k++)this.updatePageLinksForCell(b,d.model.getChildAt(c,k))};EditorUi.prototype.updatePageLink=function(b,c){if(Graph.isPageLink(c)){var f=b[c.substring(c.indexOf(",")+1)];c=null!=f?"data:page/id,"+f:null}else if("data:action/json,"==c.substring(0,17))try{var d=JSON.parse(c.substring(17));if(null!=d.actions){for(var e=0;e<d.actions.length;e++){var g=d.actions[e];if(null!=g.open&&Graph.isPageLink(g.open)){var l=g.open.substring(g.open.indexOf(",")+1),f=b[l];null!=f?g.open=
"data:page/id,"+f:null==this.getPageById(l)&&delete g.open}}c="data:action/json,"+JSON.stringify(d)}}catch(u){}return c};EditorUi.prototype.isRemoteVisioFormat=function(b){return/(\.v(sd|dx))($|\?)/i.test(b)||/(\.vs(s|x))($|\?)/i.test(b)};EditorUi.prototype.importVisio=function(b,c,d,e,g){e=null!=e?e:b.name;d=null!=d?d:mxUtils.bind(this,function(b){this.handleError(b)});var f=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var f=this.isRemoteVisioFormat(e);try{var l=
"UNKNOWN-VISIO",k=e.lastIndexOf(".");if(0<=k&&k<e.length)l=e.substring(k+1).toUpperCase();else{var m=e.lastIndexOf("/");0<=m&&m<e.length&&(e=e.substring(m+1))}EditorUi.logEvent({category:l+"-MS-IMPORT-FILE",action:"filename_"+e,label:f?"remote":"local"})}catch(B){}if(f)if(null==VSD_CONVERT_URL||this.isOffline())d({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{f=new FormData;f.append("file1",b,e);var p=new XMLHttpRequest;
-p.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(e)?"?stencil=1":""));p.responseType="blob";this.addRemoteServiceSecurityCheck(p);null!=g&&p.setRequestHeader("x-convert-custom",g);p.onreadystatechange=mxUtils.bind(this,function(){if(4==p.readyState)if(200<=p.status&&299>=p.status)try{var b=p.response;if("text/xml"==b.type){var f=new FileReader;f.onload=mxUtils.bind(this,function(b){try{c(b.target.result)}catch(G){d({message:mxResources.get("errorLoadingFile")})}});f.readAsText(b)}else this.doImportVisio(b,
+p.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(e)?"?stencil=1":""));p.responseType="blob";this.addRemoteServiceSecurityCheck(p);null!=g&&p.setRequestHeader("x-convert-custom",g);p.onreadystatechange=mxUtils.bind(this,function(){if(4==p.readyState)if(200<=p.status&&299>=p.status)try{var b=p.response;if("text/xml"==b.type){var f=new FileReader;f.onload=mxUtils.bind(this,function(b){try{c(b.target.result)}catch(E){d({message:mxResources.get("errorLoadingFile")})}});f.readAsText(b)}else this.doImportVisio(b,
c,d,e)}catch(C){d(C)}else try{""==p.responseType||"text"==p.responseType?d({message:p.responseText}):(f=new FileReader,f.onload=function(){d({message:JSON.parse(f.result).Message})},f.readAsText(p.response))}catch(C){d({})}});p.send(f)}else try{this.doImportVisio(b,c,d,e)}catch(B){d(B)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
f))};EditorUi.prototype.importGraphML=function(b,c,d){d=null!=d?d:mxUtils.bind(this,function(b){this.handleError(b)});var f=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(b,c,d)}catch(q){d(q)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.exportVisio=
function(b){var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(b)||this.handleError({message:mxResources.get("unknownError")})}catch(m){this.handleError(m)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",c))};EditorUi.prototype.convertLucidChart=
@@ -11002,7 +11012,7 @@ function(){mxscript("js/orgchart/mxOrgChartLayout.js",f)})})})}):mxscript("js/ex
b.replace(/ xmlns:\S*="http:\/\/www.w3.org\/XML\/1998\/namespace"/g,"").replace(/ (NS xml|\S*):space="preserve"/g,' xml:space="preserve"');var c=mxUtils.parseXml(b).getElementsByTagName("svg");if(0<c.length){var g=parseFloat(c[0].getAttribute("width")),l=parseFloat(c[0].getAttribute("height"));if(isNaN(g)||isNaN(l))try{var k=c[0].getAttribute("viewBox").split(/\s+/),g=parseFloat(k[2]),l=parseFloat(k[3])}catch(B){g=g||100,l=l||100}d(f.convertDataUri(Editor.createSvgDataUri(b)),g,l)}else e({message:mxResources.get("invalidInput")})}catch(B){e(B)}})}catch(v){e(v)}};
"undefined"!==typeof mermaid||this.loadingMermaid||this.isOffline(!0)?g():(this.loadingMermaid=!0,"1"==urlParams.dev?mxscript("js/mermaid/mermaid.min.js",g):mxscript("js/extensions.min.js",g))};EditorUi.prototype.generatePlantUmlImage=function(b,c,d,e){function f(b,c,f){c1=b>>2;c2=(b&3)<<4|c>>4;c3=(c&15)<<2|f>>6;c4=f&63;r="";r+=g(c1&63);r+=g(c2&63);r+=g(c3&63);return r+=g(c4&63)}function g(b){if(10>b)return String.fromCharCode(48+b);b-=10;if(26>b)return String.fromCharCode(65+b);b-=26;if(26>b)return String.fromCharCode(97+
b);b-=26;return 0==b?"-":1==b?"_":"?"}var l=new XMLHttpRequest;l.open("GET",("txt"==c?PLANT_URL+"/txt/":"png"==c?PLANT_URL+"/png/":PLANT_URL+"/svg/")+function(b){r="";for(i=0;i<b.length;i+=3)r=i+2==b.length?r+f(b.charCodeAt(i),b.charCodeAt(i+1),0):i+1==b.length?r+f(b.charCodeAt(i),0,0):r+f(b.charCodeAt(i),b.charCodeAt(i+1),b.charCodeAt(i+2));return r}(Graph.arrayBufferToString(pako.deflateRaw(b))),!0);"txt"!=c&&(l.responseType="blob");l.onload=function(b){if(200<=this.status&&300>this.status)if("txt"==
-c)d(this.response);else{var f=new FileReader;f.readAsDataURL(this.response);f.onloadend=function(b){var c=new Image;c.onload=function(){try{var b=c.width,g=c.height;if(0==b&&0==g){var l=f.result,k=l.indexOf(","),m=decodeURIComponent(escape(atob(l.substring(k+1)))),p=mxUtils.parseXml(m).getElementsByTagName("svg");0<p.length&&(b=parseFloat(p[0].getAttribute("width")),g=parseFloat(p[0].getAttribute("height")))}d(f.result,b,g)}catch(F){e(F)}};c.src=f.result};f.onerror=function(b){e(b)}}else e(b)};l.onerror=
+c)d(this.response);else{var f=new FileReader;f.readAsDataURL(this.response);f.onloadend=function(b){var c=new Image;c.onload=function(){try{var b=c.width,g=c.height;if(0==b&&0==g){var l=f.result,k=l.indexOf(","),m=decodeURIComponent(escape(atob(l.substring(k+1)))),p=mxUtils.parseXml(m).getElementsByTagName("svg");0<p.length&&(b=parseFloat(p[0].getAttribute("width")),g=parseFloat(p[0].getAttribute("height")))}d(f.result,b,g)}catch(G){e(G)}};c.src=f.result};f.onerror=function(b){e(b)}}else e(b)};l.onerror=
function(b){e(b)};l.send()};EditorUi.prototype.insertAsPreText=function(b,c,d){var f=this.editor.graph,e=null;f.getModel().beginUpdate();try{e=f.insertVertex(null,null,"<pre>"+b+"</pre>",c,d,1,1,"text;html=1;align=left;verticalAlign=top;"),f.updateCellSize(e,!0)}finally{f.getModel().endUpdate()}return e};EditorUi.prototype.insertTextAt=function(b,c,d,e,g,k,n,u){k=null!=k?k:!0;n=null!=n?n:!0;if(null!=b)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b))this.parseFileData(b.replace(/\s+/g,
" "),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&this.editor.graph.setSelectionCells(this.insertTextAt(b.responseText,c,d,!0))}));else if("data:"==b.substring(0,5)||!this.isOffline()&&(g||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b))){var f=this.editor.graph;if("data:application/pdf;base64,"==b.substring(0,28)){var l=Editor.extractGraphModelFromPdf(b);if(null!=l&&0<l.length)return this.importXml(l,c,d,k,!0,u)}if(Editor.isPngDataUrl(b)&&(l=Editor.extractGraphModelFromPng(b),
null!=l&&0<l.length))return this.importXml(l,c,d,k,!0,u);if("data:image/svg+xml;"==b.substring(0,19))try{l=null;"data:image/svg+xml;base64,"==b.substring(0,26)?(l=b.substring(b.indexOf(",")+1),l=window.atob&&!mxClient.IS_SF?atob(l):Base64.decode(l,!0)):l=decodeURIComponent(b.substring(b.indexOf(",")+1));var m=this.importXml(l,c,d,k,!0,u);if(0<m.length)return m}catch(y){}this.loadImage(b,mxUtils.bind(this,function(e){if("data:"==b.substring(0,5))this.resizeImage(e,b,mxUtils.bind(this,function(b,e,
@@ -11015,52 +11025,52 @@ this.importFileInputElt){var f=document.createElement("input");f.setAttribute("t
"F",b,c)});window.openBrowserFile=mxUtils.bind(this,function(b,c,f){StorageFile.getFileContent(this,b,c,f)});window.deleteBrowserFile=mxUtils.bind(this,function(b,c,f){StorageFile.deleteFile(this,b,c,f)});if(!c){var d=Editor.useLocalStorage;Editor.useLocalStorage=!b}window.openFile=new OpenFile(mxUtils.bind(this,function(b){this.hideDialog(b)}));window.openFile.setConsumer(mxUtils.bind(this,function(b,c){if(null!=c&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(c)){var f=new Blob([b],{type:"application/octet-stream"});
this.importVisio(f,mxUtils.bind(this,function(b){this.importXml(b,0,0,!0)}),null,c)}else this.editor.graph.setSelectionCells(this.importXml(b,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:360,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null});if(!c){var e=this.dialog,g=e.close;this.dialog.close=mxUtils.bind(this,function(b){Editor.useLocalStorage=d;g.apply(e,arguments);b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};
EditorUi.prototype.importZipFile=function(b,c,d){var f=this,e=mxUtils.bind(this,function(){this.loadingExtensions=!1;"undefined"!==typeof JSZip?JSZip.loadAsync(b).then(function(e){if(0==Object.keys(e.files).length)d();else{var g=0,l,k=!1;e.forEach(function(b,f){var e=f.name.toLowerCase();"diagram/diagram.xml"==e?(k=!0,f.async("string").then(function(b){0==b.indexOf("<mxfile ")?c(b):d()})):0==e.indexOf("versions/")&&(e=parseInt(e.substr(9)),e>g&&(g=e,l=f))});0<g?l.async("string").then(function(e){!f.isOffline()&&
-(new XMLHttpRequest).upload&&f.isRemoteFileFormat(e,b.name)?f.parseFileData(e,mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?c(b.responseText):d())}),b.name):d()}):k||d()}},function(b){d(b)}):d()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importFile=function(b,c,d,e,g,k,n,u,x,A,z,B){A=null!=A?A:!0;var f=!1,l=null,m=mxUtils.bind(this,function(b){var c=null;
-null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,n)):c=this.importXml(b,d,e,A,null,null!=B?mxEvent.isControlDown(B):null);null!=u&&u(c)});"image"==c.substring(0,5)?(x=!1,"image/png"==c.substring(0,9)&&(c=z?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(l=this.importXml(c,d,e,A,null,null!=B?mxEvent.isControlDown(B):null),x=!0)),x||(c=this.editor.graph,x=b.indexOf(";"),0<x&&(b=b.substring(0,x)+b.substring(b.indexOf(",",x+1))),A&&c.isGridEnabled()&&(d=c.snap(d),
+(new XMLHttpRequest).upload&&f.isRemoteFileFormat(e,b.name)?f.parseFileData(e,mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&299>=b.status?c(b.responseText):d())}),b.name):d()}):k||d()}},function(b){d(b)}):d()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importFile=function(b,c,d,e,g,k,n,u,x,z,A,B){z=null!=z?z:!0;var f=!1,l=null,m=mxUtils.bind(this,function(b){var c=null;
+null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,n)):c=this.importXml(b,d,e,z,null,null!=B?mxEvent.isControlDown(B):null);null!=u&&u(c)});"image"==c.substring(0,5)?(x=!1,"image/png"==c.substring(0,9)&&(c=A?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(l=this.importXml(c,d,e,z,null,null!=B?mxEvent.isControlDown(B):null),x=!0)),x||(c=this.editor.graph,x=b.indexOf(";"),0<x&&(b=b.substring(0,x)+b.substring(b.indexOf(",",x+1))),z&&c.isGridEnabled()&&(d=c.snap(d),
e=c.snap(e)),l=[c.insertVertex(null,null,"",d,e,g,k,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b+";")])):/(\.*<graphml )/.test(b)?(f=!0,this.importGraphML(b,m)):null!=x&&null!=n&&(/(\.v(dx|sdx?))($|\?)/i.test(n)||/(\.vs(x|sx?))($|\?)/i.test(n))?(f=!0,this.importVisio(x,m)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,n)?(f=!0,g=mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&
-299>=b.status?m(b.responseText):null!=u&&u(null))}),null!=b?this.parseFileData(b,g,n):this.parseFile(x,g,n)):0==b.indexOf("PK")&&null!=x?(f=!0,this.importZipFile(x,m,mxUtils.bind(this,function(){l=this.insertTextAt(this.validateFileData(b),d,e,!0,null,A);u(l)}))):/(\.v(sd|dx))($|\?)/i.test(n)||/(\.vs(s|x))($|\?)/i.test(n)||(l=this.insertTextAt(this.validateFileData(b),d,e,!0,null,A,null,null!=B?mxEvent.isControlDown(B):null));f||null==u||u(l);return l};EditorUi.prototype.importFiles=function(b,c,
-d,e,g,k,n,u,x,A,z,B,y){e=null!=e?e:this.maxImageSize;A=null!=A?A:this.maxImageBytes;var f=null!=c&&null!=d,l=!0;c=null!=c?c:0;d=null!=d?d:0;var m=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var p=z||this.resampleThreshold,q=0;q<b.length;q++)if("image/"==b[q].type.substring(0,6)&&b[q].size>p){m=!0;break}var t=mxUtils.bind(this,function(){var m=this.editor.graph,p=m.gridSize;g=null!=g?g:mxUtils.bind(this,function(b,c,d,e,g,l,k,m,p){try{return null!=b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),
-this.loadLibrary(new LocalLibrary(this,b,k)),null):this.importFile(b,c,d,e,g,l,k,m,p,f,B,y)}catch(sa){return this.handleError(sa),null}});k=null!=k?k:mxUtils.bind(this,function(b){m.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=b.length,t=q,v=[],C=mxUtils.bind(this,function(b,c){v[b]=c;if(0==--t){this.spinner.stop();if(null!=u)u(v);else{var d=[];m.getModel().beginUpdate();try{for(var f=0;f<v.length;f++){var e=v[f]();null!=e&&(d=d.concat(e))}}finally{m.getModel().endUpdate()}}k(d)}}),
+299>=b.status?m(b.responseText):null!=u&&u(null))}),null!=b?this.parseFileData(b,g,n):this.parseFile(x,g,n)):0==b.indexOf("PK")&&null!=x?(f=!0,this.importZipFile(x,m,mxUtils.bind(this,function(){l=this.insertTextAt(this.validateFileData(b),d,e,!0,null,z);u(l)}))):/(\.v(sd|dx))($|\?)/i.test(n)||/(\.vs(s|x))($|\?)/i.test(n)||(l=this.insertTextAt(this.validateFileData(b),d,e,!0,null,z,null,null!=B?mxEvent.isControlDown(B):null));f||null==u||u(l);return l};EditorUi.prototype.importFiles=function(b,c,
+d,e,g,k,n,u,x,z,A,B,y){e=null!=e?e:this.maxImageSize;z=null!=z?z:this.maxImageBytes;var f=null!=c&&null!=d,l=!0;c=null!=c?c:0;d=null!=d?d:0;var m=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var p=A||this.resampleThreshold,q=0;q<b.length;q++)if("image/"==b[q].type.substring(0,6)&&b[q].size>p){m=!0;break}var t=mxUtils.bind(this,function(){var m=this.editor.graph,p=m.gridSize;g=null!=g?g:mxUtils.bind(this,function(b,c,d,e,g,l,k,m,p){try{return null!=b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),
+this.loadLibrary(new LocalLibrary(this,b,k)),null):this.importFile(b,c,d,e,g,l,k,m,p,f,B,y)}catch(ra){return this.handleError(ra),null}});k=null!=k?k:mxUtils.bind(this,function(b){m.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q=b.length,t=q,v=[],C=mxUtils.bind(this,function(b,c){v[b]=c;if(0==--t){this.spinner.stop();if(null!=u)u(v);else{var d=[];m.getModel().beginUpdate();try{for(var f=0;f<v.length;f++){var e=v[f]();null!=e&&(d=d.concat(e))}}finally{m.getModel().endUpdate()}}k(d)}}),
D=0;D<q;D++)mxUtils.bind(this,function(f){var k=b[f];if(null!=k){var q=new FileReader;q.onload=mxUtils.bind(this,function(b){if(null==n||n(k))if("image/"==k.type.substring(0,6))if("image/svg"==k.type.substring(0,9)){var q=Graph.clipSvgDataUri(b.target.result),t=q.indexOf(","),y=decodeURIComponent(escape(atob(q.substring(t+1)))),v=mxUtils.parseXml(y),y=v.getElementsByTagName("svg");if(0<y.length){var y=y[0],u=B?null:y.getAttribute("content");null!=u&&"<"!=u.charAt(0)&&"%"!=u.charAt(0)&&(u=unescape(window.atob?
atob(u):Base64.decode(u,!0)));null!=u&&"%"==u.charAt(0)&&(u=decodeURIComponent(u));null==u||"<mxfile "!==u.substring(0,8)&&"<mxGraphModel "!==u.substring(0,14)?C(f,mxUtils.bind(this,function(){try{if(q.substring(0,t+1),null!=v){var b=v.getElementsByTagName("svg");if(0<b.length){var l=b[0],n=l.getAttribute("width"),y=l.getAttribute("height"),n=null!=n&&"%"!=n.charAt(n.length-1)?parseFloat(n):NaN,y=null!=y&&"%"!=y.charAt(y.length-1)?parseFloat(y):NaN,u=l.getAttribute("viewBox");if(null==u||0==u.length)l.setAttribute("viewBox",
-"0 0 "+n+" "+y);else if(isNaN(n)||isNaN(y)){var C=u.split(" ");3<C.length&&(n=parseFloat(C[2]),y=parseFloat(C[3]))}q=Editor.createSvgDataUri(mxUtils.getXml(l));var D=Math.min(1,Math.min(e/Math.max(1,n)),e/Math.max(1,y)),x=g(q,k.type,c+f*p,d+f*p,Math.max(1,Math.round(n*D)),Math.max(1,Math.round(y*D)),k.name);if(isNaN(n)||isNaN(y)){var A=new Image;A.onload=mxUtils.bind(this,function(){n=Math.max(1,A.width);y=Math.max(1,A.height);x[0].geometry.width=n;x[0].geometry.height=y;l.setAttribute("viewBox",
-"0 0 "+n+" "+y);q=Editor.createSvgDataUri(mxUtils.getXml(l));var b=q.indexOf(";");0<b&&(q=q.substring(0,b)+q.substring(q.indexOf(",",b+1)));m.setCellStyles("image",q,[x[0]])});A.src=Editor.createSvgDataUri(mxUtils.getXml(l))}return x}}}catch(U){}return null})):C(f,mxUtils.bind(this,function(){return g(u,"text/xml",c+f*p,d+f*p,0,0,k.name)}))}else C(f,mxUtils.bind(this,function(){return null}))}else{y=!1;if("image/png"==k.type){var D=B?null:this.extractGraphModelFromPng(b.target.result);if(null!=D&&
+"0 0 "+n+" "+y);else if(isNaN(n)||isNaN(y)){var C=u.split(" ");3<C.length&&(n=parseFloat(C[2]),y=parseFloat(C[3]))}q=Editor.createSvgDataUri(mxUtils.getXml(l));var D=Math.min(1,Math.min(e/Math.max(1,n)),e/Math.max(1,y)),x=g(q,k.type,c+f*p,d+f*p,Math.max(1,Math.round(n*D)),Math.max(1,Math.round(y*D)),k.name);if(isNaN(n)||isNaN(y)){var z=new Image;z.onload=mxUtils.bind(this,function(){n=Math.max(1,z.width);y=Math.max(1,z.height);x[0].geometry.width=n;x[0].geometry.height=y;l.setAttribute("viewBox",
+"0 0 "+n+" "+y);q=Editor.createSvgDataUri(mxUtils.getXml(l));var b=q.indexOf(";");0<b&&(q=q.substring(0,b)+q.substring(q.indexOf(",",b+1)));m.setCellStyles("image",q,[x[0]])});z.src=Editor.createSvgDataUri(mxUtils.getXml(l))}return x}}}catch(S){}return null})):C(f,mxUtils.bind(this,function(){return g(u,"text/xml",c+f*p,d+f*p,0,0,k.name)}))}else C(f,mxUtils.bind(this,function(){return null}))}else{y=!1;if("image/png"==k.type){var D=B?null:this.extractGraphModelFromPng(b.target.result);if(null!=D&&
0<D.length){var x=new Image;x.src=b.target.result;C(f,mxUtils.bind(this,function(){return g(D,"text/xml",c+f*p,d+f*p,x.width,x.height,k.name)}));y=!0}}y||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"),mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(b.target.result,mxUtils.bind(this,function(m){this.resizeImage(m,
-b.target.result,mxUtils.bind(this,function(b,m,n){C(f,mxUtils.bind(this,function(){if(null!=b&&b.length<A){var q=l&&this.isResampleImageSize(k.size,z)?Math.min(1,Math.min(e/m,e/n)):1;return g(b,k.type,c+f*p,d+f*p,Math.round(m*q),Math.round(n*q),k.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),l,e,z,k.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else q=b.target.result,g(q,k.type,c+f*p,d+f*p,240,160,k.name,
+b.target.result,mxUtils.bind(this,function(b,m,n){C(f,mxUtils.bind(this,function(){if(null!=b&&b.length<z){var q=l&&this.isResampleImageSize(k.size,A)?Math.min(1,Math.min(e/m,e/n)):1;return g(b,k.type,c+f*p,d+f*p,Math.round(m*q),Math.round(n*q),k.name)}this.handleError({message:mxResources.get("imageTooBig")});return null}))}),l,e,A,k.size)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else q=b.target.result,g(q,k.type,c+f*p,d+f*p,240,160,k.name,
function(b){C(f,function(){return b})},k)});/(\.v(dx|sdx?))($|\?)/i.test(k.name)||/(\.vs(x|sx?))($|\?)/i.test(k.name)?g(null,k.type,c+f*p,d+f*p,240,160,k.name,function(b){C(f,function(){return b})},k):"image"==k.type.substring(0,5)||"application/pdf"==k.type?q.readAsDataURL(k):q.readAsText(k)}})(D)});if(m){m=[];for(q=0;q<b.length;q++)m.push(b[q]);b=m;this.confirmImageResize(function(b){l=b;t()},x)}else t()};EditorUi.prototype.confirmImageResize=function(b,c){c=null!=c?c:!1;var d=null!=this.spinner&&
null!=this.spinner.pause?this.spinner.pause():function(){},f=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,e=function(f,e){if(f||c)mxSettings.setResizeImages(f?e:null),mxSettings.save();d();b(e)};null==f||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){e(b,!0)},function(b){e(b,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+
Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):e(!1,f)};EditorUi.prototype.parseFile=function(b,c,d){d=null!=d?d:b.name;var f=new FileReader;f.onload=mxUtils.bind(this,function(){this.parseFileData(f.result,c,d)});f.readAsText(b)};EditorUi.prototype.parseFileData=function(b,c,d){var f=new XMLHttpRequest;f.open("POST",OPEN_URL);f.setRequestHeader("Content-Type","application/x-www-form-urlencoded");f.onreadystatechange=
function(){c(f)};f.send("format=xml&filename="+encodeURIComponent(d)+"&data="+encodeURIComponent(b));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(q){}};EditorUi.prototype.isResampleImageSize=function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,d,e,g,k,n){g=null!=g?g:this.maxImageSize;var f=Math.max(1,b.width),l=Math.max(1,b.height);if(e&&this.isResampleImageSize(null!=n?n:c.length,k))try{var m=Math.max(f/
-g,l/g);if(1<m){var p=Math.round(f/m),q=Math.round(l/m),t=document.createElement("canvas");t.width=p;t.height=q;t.getContext("2d").drawImage(b,0,0,p,q);var v=t.toDataURL();if(v.length<c.length){var G=document.createElement("canvas");G.width=p;G.height=q;var D=G.toDataURL();v!==D&&(c=v,f=p,l=q)}}}catch(E){}d(c,f,l)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,d){try{var f=new Image;f.onload=function(){f.width=
+g,l/g);if(1<m){var p=Math.round(f/m),q=Math.round(l/m),t=document.createElement("canvas");t.width=p;t.height=q;t.getContext("2d").drawImage(b,0,0,p,q);var v=t.toDataURL();if(v.length<c.length){var E=document.createElement("canvas");E.width=p;E.height=q;var D=E.toDataURL();v!==D&&(c=v,f=p,l=q)}}}catch(F){}d(c,f,l)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,d){try{var f=new Image;f.onload=function(){f.width=
0<f.width?f.width:120;f.height=0<f.height?f.height:120;c(f)};null!=d&&(f.onerror=d);f.src=b}catch(q){if(null!=d)d(q);else throw q;}};EditorUi.prototype.getDefaultSketchMode=function(){var b="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?urlParams.rough:b)};var g=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=
mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:this.getDefaultSketchMode()),null!=mxSettings.settings.sidebarTitles&&(Sidebar.prototype.sidebarTitles=mxSettings.settings.sidebarTitles),this.formatWidth=mxSettings.getFormatWidth());var b=this,c=this.editor.graph;Editor.isDarkMode()&&(c.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);Graph.touchStyle&&(c.panningHandler.isPanningTrigger=function(b){var d=b.getEvent();return null==b.getState()&&
-!mxEvent.isMouseEvent(d)&&!c.freehand.isDrawing()||mxEvent.isPopupTrigger(d)&&(null==b.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))});c.cellEditor.editPlantUmlData=function(d,f,e){var g=JSON.parse(e);f=new TextareaDialog(b,mxResources.get("plantUml")+":",g.data,function(f){null!=f&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generatePlantUmlImage(f,g.format,function(e,l,k){b.spinner.stop();c.getModel().beginUpdate();try{if("txt"==g.format)c.labelChanged(d,"<pre>"+
-e+"</pre>"),c.updateCellSize(d,!0);else{c.setCellStyles("image",b.convertDataUri(e),[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=l,m.height=k,c.cellsResized([d],[m],!1))}c.setAttributeForCell(d,"plantUmlData",JSON.stringify({data:f,format:g.format}))}finally{c.getModel().endUpdate()}},function(c){b.handleError(c)})},null,null,400,220);b.showDialog(f.container,420,300,!0,!0);f.init()};c.cellEditor.editMermaidData=function(d,f,e){var g=JSON.parse(e);f=new TextareaDialog(b,mxResources.get("mermaid")+
-":",g.data,function(f){null!=f&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generateMermaidImage(f,g.config,function(e,l,k){b.spinner.stop();c.getModel().beginUpdate();try{c.setCellStyles("image",e,[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=Math.max(m.width,l),m.height=Math.max(m.height,k),c.cellsResized([d],[m],!1));c.setAttributeForCell(d,"mermaidData",JSON.stringify({data:f,config:g.config},null,2))}finally{c.getModel().endUpdate()}},function(c){b.handleError(c)})},
-null,null,400,220);b.showDialog(f.container,420,300,!0,!0);f.init()};var d=c.cellEditor.startEditing;c.cellEditor.startEditing=function(f,e){try{var g=this.graph.getAttributeForCell(f,"plantUmlData");if(null!=g)this.editPlantUmlData(f,e,g);else if(g=this.graph.getAttributeForCell(f,"mermaidData"),null!=g)this.editMermaidData(f,e,g);else{var l=c.getCellStyle(f);"1"==mxUtils.getValue(l,"metaEdit","0")?b.showDataDialog(f):d.apply(this,arguments)}}catch(H){b.handleError(H)}};c.getLinkTitle=function(c){return b.getLinkTitle(c)};
-c.customLinkClicked=function(c){var d=!1;try{b.handleCustomLink(c),d=!0}catch(J){b.handleError(J)}return d};var e=c.parseBackgroundImage;c.parseBackgroundImage=function(b){var c=e.apply(this,arguments);null!=c&&null!=c.src&&Graph.isPageLink(c.src)&&(c={originalSrc:c.src});return c};var k=c.setBackgroundImage;c.setBackgroundImage=function(c){null!=c&&null!=c.originalSrc&&(c=b.createImageForPageLink(c.originalSrc,b.currentPage,this));k.apply(this,arguments)};this.editor.addListener("pageRenamed",mxUtils.bind(this,
+!mxEvent.isMouseEvent(d)&&!c.freehand.isDrawing()||mxEvent.isPopupTrigger(d)&&(null==b.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))});c.cellEditor.editPlantUmlData=function(d,f,e){var g=JSON.parse(e);f=new TextareaDialog(b,mxResources.get("plantUml")+":",g.data,function(f){null!=f&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generatePlantUmlImage(f,g.format,function(e,k,l){b.spinner.stop();c.getModel().beginUpdate();try{if("txt"==g.format)c.labelChanged(d,"<pre>"+
+e+"</pre>"),c.updateCellSize(d,!0);else{c.setCellStyles("image",b.convertDataUri(e),[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=k,m.height=l,c.cellsResized([d],[m],!1))}c.setAttributeForCell(d,"plantUmlData",JSON.stringify({data:f,format:g.format}))}finally{c.getModel().endUpdate()}},function(c){b.handleError(c)})},null,null,400,220);b.showDialog(f.container,420,300,!0,!0);f.init()};c.cellEditor.editMermaidData=function(d,f,e){var g=JSON.parse(e);f=new TextareaDialog(b,mxResources.get("mermaid")+
+":",g.data,function(f){null!=f&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generateMermaidImage(f,g.config,function(e,k,l){b.spinner.stop();c.getModel().beginUpdate();try{c.setCellStyles("image",e,[d]);var m=c.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=Math.max(m.width,k),m.height=Math.max(m.height,l),c.cellsResized([d],[m],!1));c.setAttributeForCell(d,"mermaidData",JSON.stringify({data:f,config:g.config},null,2))}finally{c.getModel().endUpdate()}},function(c){b.handleError(c)})},
+null,null,400,220);b.showDialog(f.container,420,300,!0,!0);f.init()};var d=c.cellEditor.startEditing;c.cellEditor.startEditing=function(f,e){try{var g=this.graph.getAttributeForCell(f,"plantUmlData");if(null!=g)this.editPlantUmlData(f,e,g);else if(g=this.graph.getAttributeForCell(f,"mermaidData"),null!=g)this.editMermaidData(f,e,g);else{var k=c.getCellStyle(f);"1"==mxUtils.getValue(k,"metaEdit","0")?b.showDataDialog(f):d.apply(this,arguments)}}catch(H){b.handleError(H)}};c.getLinkTitle=function(c){return b.getLinkTitle(c)};
+c.customLinkClicked=function(c){var d=!1;try{b.handleCustomLink(c),d=!0}catch(I){b.handleError(I)}return d};var e=c.parseBackgroundImage;c.parseBackgroundImage=function(b){var c=e.apply(this,arguments);null!=c&&null!=c.src&&Graph.isPageLink(c.src)&&(c={originalSrc:c.src});return c};var k=c.setBackgroundImage;c.setBackgroundImage=function(c){null!=c&&null!=c.originalSrc&&(c=b.createImageForPageLink(c.originalSrc,b.currentPage,this));k.apply(this,arguments)};this.editor.addListener("pageRenamed",mxUtils.bind(this,
function(){c.refreshBackgroundImage()}));this.editor.addListener("pageMoved",mxUtils.bind(this,function(){c.refreshBackgroundImage()}));this.editor.addListener("pagesPatched",mxUtils.bind(this,function(b,d){var f=null!=c.backgroundImage?c.backgroundImage.originalSrc:null;if(null!=f){var e=f.indexOf(",");if(0<e)for(var f=f.substring(e+1),e=d.getProperty("patches"),g=0;g<e.length;g++)if(null!=e[g][EditorUi.DIFF_UPDATE]&&null!=e[g][EditorUi.DIFF_UPDATE][f]){c.refreshBackgroundImage();break}}}));var n=
-c.getBackgroundImageObject;c.getBackgroundImageObject=function(c,d){var f=n.apply(this,arguments);if(null!=f&&null!=f.originalSrc)if(!d)f={src:f.originalSrc};else if(d&&null!=this.themes&&"darkTheme"==this.defaultThemeName){var e=this.stylesheet,g=this.shapeForegroundColor,l=this.shapeBackgroundColor;this.stylesheet=this.getDefaultStylesheet();this.shapeBackgroundColor="#ffffff";this.shapeForegroundColor="#000000";f=b.createImageForPageLink(f.originalSrc);this.shapeBackgroundColor=l;this.shapeForegroundColor=
+c.getBackgroundImageObject;c.getBackgroundImageObject=function(c,d){var f=n.apply(this,arguments);if(null!=f&&null!=f.originalSrc)if(!d)f={src:f.originalSrc};else if(d&&null!=this.themes&&"darkTheme"==this.defaultThemeName){var e=this.stylesheet,g=this.shapeForegroundColor,k=this.shapeBackgroundColor;this.stylesheet=this.getDefaultStylesheet();this.shapeBackgroundColor="#ffffff";this.shapeForegroundColor="#000000";f=b.createImageForPageLink(f.originalSrc);this.shapeBackgroundColor=k;this.shapeForegroundColor=
g;this.stylesheet=e}return f};var v=this.clearDefaultStyle;this.clearDefaultStyle=function(){v.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://www.diagrams.net/doc/faq/predefined-placeholders");if(/viewer\.diagrams\.net$/.test(window.location.hostname)||/embed\.diagrams\.net$/.test(window.location.hostname))this.editor.editBlankUrl="https://app.diagrams.net/";var u=b.editor.getEditBlankUrl;this.editor.getEditBlankUrl=
function(b){b=null!=b?b:"";"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1");return u.apply(this,arguments)};var x=c.addClickHandler;c.addClickHandler=function(b,d,f){var e=d;d=function(b,d){if(null==d){var f=mxEvent.getSource(b);"a"==f.nodeName.toLowerCase()&&(d=f.getAttribute("href"))}null!=d&&c.isCustomLink(d)&&(mxEvent.isTouchEvent(b)||!mxEvent.isPopupTrigger(b))&&c.customLinkClicked(d)&&mxEvent.consume(b);null!=e&&e(b,d)};x.call(this,b,d,f)};g.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(c.view.canvas.ownerSVGElement,
-null,!0);if(null!=this.menus){var A=Menus.prototype.addPopupMenuEditItems;this.menus.addPopupMenuEditItems=function(c,d,f){b.editor.graph.isSelectionEmpty()?A.apply(this,arguments):b.menus.addMenuItems(c,"delete - cut copy copyAsImage - duplicate".split(" "),null,f)}}b.actions.get("print").funct=function(){b.showDialog((new PrintDialog(b)).container,360,null!=b.pages&&1<b.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var z=c.getExportVariables;c.getExportVariables=
-function(){var c=z.apply(this,arguments),d=b.getCurrentFile();null!=d&&(c.filename=d.getTitle());c.pagecount=null!=b.pages?b.pages.length:1;c.page=null!=b.currentPage?b.currentPage.getName():"";c.pagenumber=null!=b.pages&&null!=b.currentPage?mxUtils.indexOf(b.pages,b.currentPage)+1:1;return c};var B=c.getGlobalVariable;c.getGlobalVariable=function(c){var d=b.getCurrentFile();return"filename"==c&&null!=d?d.getTitle():"page"==c&&null!=b.currentPage?b.currentPage.getName():"pagenumber"==c?null!=b.currentPage&&
+null,!0);if(null!=this.menus){var z=Menus.prototype.addPopupMenuEditItems;this.menus.addPopupMenuEditItems=function(c,d,f){b.editor.graph.isSelectionEmpty()?z.apply(this,arguments):b.menus.addMenuItems(c,"delete - cut copy copyAsImage - duplicate".split(" "),null,f)}}b.actions.get("print").funct=function(){b.showDialog((new PrintDialog(b)).container,360,null!=b.pages&&1<b.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var A=c.getExportVariables;c.getExportVariables=
+function(){var c=A.apply(this,arguments),d=b.getCurrentFile();null!=d&&(c.filename=d.getTitle());c.pagecount=null!=b.pages?b.pages.length:1;c.page=null!=b.currentPage?b.currentPage.getName():"";c.pagenumber=null!=b.pages&&null!=b.currentPage?mxUtils.indexOf(b.pages,b.currentPage)+1:1;return c};var B=c.getGlobalVariable;c.getGlobalVariable=function(c){var d=b.getCurrentFile();return"filename"==c&&null!=d?d.getTitle():"page"==c&&null!=b.currentPage?b.currentPage.getName():"pagenumber"==c?null!=b.currentPage&&
null!=b.pages?mxUtils.indexOf(b.pages,b.currentPage)+1:1:"pagecount"==c?null!=b.pages?b.pages.length:1:B.apply(this,arguments)};var y=c.labelLinkClicked;c.labelLinkClicked=function(b,d,f){var e=d.getAttribute("href");if(null==e||!c.isCustomLink(e)||!mxEvent.isTouchEvent(f)&&mxEvent.isPopupTrigger(f))y.apply(this,arguments);else{if(!c.isEnabled()||null!=b&&c.isCellLocked(b.cell))c.customLinkClicked(e),c.getRubberband().reset();mxEvent.consume(f)}};this.editor.getOrCreateFilename=function(){var c=b.defaultFilename,
d=b.getCurrentFile();null!=d&&(c=null!=d.getTitle()?d.getTitle():c);return c};var C=this.actions.get("print");C.setEnabled(!mxClient.IS_IOS||!navigator.standalone);C.visible=C.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,
!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.spinner=this.createSpinner(null,null,24);Graph.fileSupport&&c.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(b){var d=c.cellEditor.text2,f=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(b){null!=f&&(f.parentNode.removeChild(f),f=null);b.stopPropagation();b.preventDefault()}),mxEvent.addListener(d,
-"dragover",mxUtils.bind(this,function(b){null==f&&(!mxClient.IS_IE||10<document.documentMode)&&(f=this.highlightElement(d));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(d,"drop",mxUtils.bind(this,function(b){null!=f&&(f.parentNode.removeChild(f),f=null);if(0<b.dataTransfer.files.length)this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,function(b,d,f,e,g,l){c.insertImage(b,g,l)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var c=0;c<b.length;c++)b[c]()},
+"dragover",mxUtils.bind(this,function(b){null==f&&(!mxClient.IS_IE||10<document.documentMode)&&(f=this.highlightElement(d));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(d,"drop",mxUtils.bind(this,function(b){null!=f&&(f.parentNode.removeChild(f),f=null);if(0<b.dataTransfer.files.length)this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,function(b,d,f,e,g,k){c.insertImage(b,g,k)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var c=0;c<b.length;c++)b[c]()},
mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(b){var f=Math.max(1,b.width);b=Math.max(1,b.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,f)),e/Math.max(1,b));c.insertImage(decodeURIComponent(d),f*e,b*e)})):document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"))}else 0<=
mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"));b.stopPropagation();b.preventDefault()})))}));this.isSettingsEnabled()&&(C=this.editor.graph.view,C.setUnit(mxSettings.getUnit()),C.addListener("unitChanged",function(b,c){mxSettings.setUnit(c.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,C.unit),this.refresh());if("1"==urlParams.styledev){C=document.getElementById("geFooter");null!=C&&(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)})),C.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,c){if(0<this.editor.graph.getSelectionCount()){var d=this.editor.graph.getSelectionCell(),d=this.editor.graph.getModel().getStyle(d);this.styleInput.value=d||
-"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var G=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:G.apply(this,arguments)}}C=document.getElementById("geInfo");null!=C&&C.parentNode.removeChild(C);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var D=null;mxEvent.addListener(c.container,"dragleave",function(b){c.isEnabled()&&(null!=D&&(D.parentNode.removeChild(D),
+"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var E=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:E.apply(this,arguments)}}C=document.getElementById("geInfo");null!=C&&C.parentNode.removeChild(C);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var D=null;mxEvent.addListener(c.container,"dragleave",function(b){c.isEnabled()&&(null!=D&&(D.parentNode.removeChild(D),
D=null),b.stopPropagation(),b.preventDefault())});mxEvent.addListener(c.container,"dragover",mxUtils.bind(this,function(b){null==D&&(!mxClient.IS_IE||10<document.documentMode)&&(D=this.highlightElement(c.container));null!=this.sidebar&&this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(b){null!=D&&(D.parentNode.removeChild(D),D=null);if(c.isEnabled()){var d=mxUtils.convertPoint(c.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),
-f=c.view.translate,e=c.view.scale,g=d.x/e-f.x,l=d.y/e-f.y;if(0<b.dataTransfer.files.length)mxEvent.isShiftDown(b)?this.openFiles(b.dataTransfer.files,!0):(mxEvent.isAltDown(b)&&(l=g=null),this.importFiles(b.dataTransfer.files,g,l,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(b),null,null,mxEvent.isShiftDown(b),b));else{mxEvent.isAltDown(b)&&(l=g=0);var k=0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(b,
-null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,g,l,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var n=null,f=d.getElementsByTagName("img");null!=f&&1==f.length?(m=f[0].getAttribute("src"),null==m&&(m=f[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(n=!0)):(f=d.getElementsByTagName("a"),null!=f&&1==f.length?m=f[0].getAttribute("href"):
-(d=d.getElementsByTagName("pre"),null!=d&&1==d.length&&(m=mxUtils.getTextContent(d[0]))));var p=!0,q=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,g,l,!0,n,null,p,mxEvent.isControlDown(b)))});n&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(b){p=b;q()},mxEvent.isControlDown(b)):q()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this,function(b){var d=Math.max(1,b.width);b=Math.max(1,b.height);
-var f=this.maxImageSize,f=Math.min(1,Math.min(f/Math.max(1,d)),f/Math.max(1,b));c.setSelectionCell(c.insertVertex(null,null,"",g,l,d*f,b*f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+k+";"))}),mxUtils.bind(this,function(b){c.setSelectionCells(this.insertTextAt(k,g,l,!0))})):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&c.setSelectionCells(this.insertTextAt(b.dataTransfer.getData("text/plain"),g,l,!0))}}b.stopPropagation();
-b.preventDefault()}),!1)}c.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var b=this.editor.graph;b.container.addEventListener("paste",mxUtils.bind(this,function(c){if(!mxEvent.isConsumed(c))try{for(var d=c.clipboardData||c.originalEvent.clipboardData,f=!1,e=0;e<d.types.length;e++)if("text/"===d.types[e].substring(0,5)){f=!0;break}if(!f){var g=d.items;for(index in g){var l=
-g[index];if("file"===l.kind){if(b.isEditing())this.importFiles([l.getAsFile()],0,0,this.maxImageSize,function(c,d,f,e,g,l){b.insertImage(c,g,l)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var c=0;c<b.length;c++)b[c]()});else{var k=this.editor.graph.getInsertPoint();this.importFiles([l.getAsFile()],k.x,k.y,this.maxImageSize);mxEvent.consume(c)}break}}}}catch(x){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function b(){window.setTimeout(function(){d.innerHTML=
+f=c.view.translate,e=c.view.scale,g=d.x/e-f.x,k=d.y/e-f.y;if(0<b.dataTransfer.files.length)mxEvent.isShiftDown(b)?this.openFiles(b.dataTransfer.files,!0):(mxEvent.isAltDown(b)&&(k=g=null),this.importFiles(b.dataTransfer.files,g,k,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(b),null,null,mxEvent.isShiftDown(b),b));else{mxEvent.isAltDown(b)&&(k=g=0);var l=0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(b,
+null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,g,k,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var n=null,f=d.getElementsByTagName("img");null!=f&&1==f.length?(m=f[0].getAttribute("src"),null==m&&(m=f[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(n=!0)):(f=d.getElementsByTagName("a"),null!=f&&1==f.length?m=f[0].getAttribute("href"):
+(d=d.getElementsByTagName("pre"),null!=d&&1==d.length&&(m=mxUtils.getTextContent(d[0]))));var p=!0,q=mxUtils.bind(this,function(){c.setSelectionCells(this.insertTextAt(m,g,k,!0,n,null,p,mxEvent.isControlDown(b)))});n&&null!=m&&m.length>this.resampleThreshold?this.confirmImageResize(function(b){p=b;q()},mxEvent.isControlDown(b)):q()}else null!=l&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)?this.loadImage(decodeURIComponent(l),mxUtils.bind(this,function(b){var d=Math.max(1,b.width);b=Math.max(1,b.height);
+var f=this.maxImageSize,f=Math.min(1,Math.min(f/Math.max(1,d)),f/Math.max(1,b));c.setSelectionCell(c.insertVertex(null,null,"",g,k,d*f,b*f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+l+";"))}),mxUtils.bind(this,function(b){c.setSelectionCells(this.insertTextAt(l,g,k,!0))})):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&c.setSelectionCells(this.insertTextAt(b.dataTransfer.getData("text/plain"),g,k,!0))}}b.stopPropagation();
+b.preventDefault()}),!1)}c.enableFlowAnimation=!0;this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var b=this.editor.graph;b.container.addEventListener("paste",mxUtils.bind(this,function(c){if(!mxEvent.isConsumed(c))try{for(var d=c.clipboardData||c.originalEvent.clipboardData,f=!1,e=0;e<d.types.length;e++)if("text/"===d.types[e].substring(0,5)){f=!0;break}if(!f){var g=d.items;for(index in g){var k=
+g[index];if("file"===k.kind){if(b.isEditing())this.importFiles([k.getAsFile()],0,0,this.maxImageSize,function(c,d,f,e,g,k){b.insertImage(c,g,k)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var c=0;c<b.length;c++)b[c]()});else{var l=this.editor.graph.getInsertPoint();this.importFiles([k.getAsFile()],l.x,l.y,this.maxImageSize);mxEvent.consume(c)}break}}}}catch(x){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function b(){window.setTimeout(function(){d.innerHTML=
"&nbsp;";d.focus();document.execCommand("selectAll",!1,null)},0)}var c=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.fontFamily="monospace";d.style.wordBreak="break-all";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 e=!1;this.keyHandler.bindControlKey(88,null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(b){var f=mxEvent.getSource(b);null==c.container||!c.isEnabled()||c.isMouseDown||
c.isEditing()||null!=this.dialog||"INPUT"==f.nodeName||"TEXTAREA"==f.nodeName||224!=b.keyCode&&(mxClient.IS_MAC||17!=b.keyCode)&&(!mxClient.IS_MAC||91!=b.keyCode&&93!=b.keyCode)||e||(d.style.left=c.container.scrollLeft+10+"px",d.style.top=c.container.scrollTop+10+"px",c.container.appendChild(d),e=!0,d.focus(),document.execCommand("selectAll",!1,null))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(b){var f=b.keyCode;window.setTimeout(mxUtils.bind(this,function(){!e||224!=f&&17!=
@@ -11104,59 +11114,59 @@ b);var c=[],d;for(d in b)c.push(d);return c};EditorUi.prototype.addBasenamesForC
g=0;g<e;g++)this.addBasenamesForCell(f.model.getChildAt(b,g),c)};EditorUi.prototype.setGraphEnabled=function(b){this.diagramContainer.style.visibility=b?"":"hidden";this.formatContainer.style.visibility=b?"":"hidden";this.sidebarFooterContainer.style.display=b?"":"none";this.sidebarContainer.style.display=b?"":"none";this.hsplit.style.display=b?"":"none";this.editor.graph.setEnabled(b);null!=this.ruler&&(this.ruler.hRuler.container.style.visibility=b?"":"hidden",this.ruler.vRuler.container.style.visibility=
b?"":"hidden");null!=this.tabContainer&&(this.tabContainer.style.visibility=b?"":"hidden");b||(null!=this.actions.outlineWindow&&this.actions.outlineWindow.window.setVisible(!1),null!=this.actions.layersWindow&&this.actions.layersWindow.window.setVisible(!1),null!=this.menus.tagsWindow&&this.menus.tagsWindow.window.setVisible(!1),null!=this.menus.findWindow&&this.menus.findWindow.window.setVisible(!1),null!=this.menus.findReplaceWindow&&this.menus.findReplaceWindow.window.setVisible(!1))};EditorUi.prototype.initializeEmbedMode=
function(){this.setGraphEnabled(!1);if((window.opener||window.parent)!=window&&("1"!=urlParams.spin||this.spinner.spin(document.body,mxResources.get("loading")))){var b=!1;this.installMessageHandler(mxUtils.bind(this,function(c,d,f,e){b||(b=!0,this.spinner.stop(),this.addEmbedButtons(),this.setGraphEnabled(!0));if(null==c||0==c.length)c=this.emptyDiagramXml;this.setCurrentFile(new EmbedFile(this,c,{}));this.mode=App.MODE_EMBED;this.setFileData(c);if(e)try{var g=this.editor.graph;g.setGridEnabled(!1);
-g.pageVisible=!1;var k=g.model.cells,l;for(l in k){var m=k[l];null!=m&&null!=m.style&&(m.style+=";sketch=1;"+(-1==m.style.indexOf("fontFamily=")||-1<m.style.indexOf("fontFamily=Helvetica;")?"fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;":""))}}catch(A){console.log(A)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();
+g.pageVisible=!1;var k=g.model.cells,l;for(l in k){var m=k[l];null!=m&&null!=m.style&&(m.style+=";sketch=1;"+(-1==m.style.indexOf("fontFamily=")||-1<m.style.indexOf("fontFamily=Helvetica;")?"fontFamily=Architects Daughter;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DArchitects%2BDaughter;":""))}}catch(z){console.log(z)}this.editor.isChromelessView()?this.editor.graph.isLightboxView()&&this.lightboxFit():this.showLayersDialog();this.chromelessResize&&this.chromelessResize();this.editor.undoManager.clear();
this.editor.modified=null!=f?f:!1;this.updateUi();window.self!==window.top&&window.focus();null!=this.format&&this.format.refresh()}))}};EditorUi.prototype.showLayersDialog=function(){1<this.editor.graph.getModel().getChildCount(this.editor.graph.getModel().getRoot())&&(null==this.actions.layersWindow?this.actions.get("layers").funct():this.actions.layersWindow.window.setVisible(!0))};EditorUi.prototype.getPublicUrl=function(b,c){null!=b?b.getPublicUrl(c):c(null)};EditorUi.prototype.createLoadMessage=
function(b){var c=this.editor.graph;return{event:b,pageVisible:c.pageVisible,translate:c.view.translate,bounds:c.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:c.view.scale,page:c.view.getBackgroundPageBounds()}};EditorUi.prototype.sendEmbeddedSvgExport=function(b){var c=this.editor.graph;c.isEditing()&&c.stopEditing(!c.isInvokesStopCellEditing());var d=window.opener||window.parent;if(this.editor.modified){var f=c.background;if(null==f||f==mxConstants.NONE)f=this.embedExportBackground;
this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),c,null,!0,mxUtils.bind(this,function(c){d.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=b?!b:!0,data:Editor.createSvgDataUri(c)}),"*")}),null,null,!0,f,1,this.embedExportBorder)}else b||d.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");b||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,c.model.clear(),this.editor.undoManager.clear(),
this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(b){var c=null,d=!1,f=!1,e=null,g=mxUtils.bind(this,function(b,c){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(g){if(g.source==(window.opener||window.parent)){var l=g.data,m=null,n=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):"data:image/svg+xml;utf8,"==b.substring(0,24)&&(b=b.substring(24)),null!=b&&("%"==b.charAt(0)?b=decodeURIComponent(b):"<"!=b.charAt(0)&&(b=Graph.decompress(b)))}catch(ha){}return b});if("json"==urlParams.proto){var p=
-!1;try{l=JSON.parse(l)}catch(N){l=null}try{if(null==l)return;if("dialog"==l.action){this.showError(null!=l.titleKey?mxResources.get(l.titleKey):l.title,null!=l.messageKey?mxResources.get(l.messageKey):l.message,null!=l.buttonKey?mxResources.get(l.buttonKey):l.button);null!=l.modified&&(this.editor.modified=l.modified);return}if("layout"==l.action){this.executeLayoutList(l.layouts);return}if("prompt"==l.action){this.spinner.stop();var q=new FilenameDialog(this,l.defaultValue||"",null!=l.okKey?mxResources.get(l.okKey):
+!1;try{l=JSON.parse(l)}catch(T){l=null}try{if(null==l)return;if("dialog"==l.action){this.showError(null!=l.titleKey?mxResources.get(l.titleKey):l.title,null!=l.messageKey?mxResources.get(l.messageKey):l.message,null!=l.buttonKey?mxResources.get(l.buttonKey):l.button);null!=l.modified&&(this.editor.modified=l.modified);return}if("layout"==l.action){this.executeLayoutList(l.layouts);return}if("prompt"==l.action){this.spinner.stop();var q=new FilenameDialog(this,l.defaultValue||"",null!=l.okKey?mxResources.get(l.okKey):
l.ok,function(b){null!=b?k.postMessage(JSON.stringify({event:"prompt",value:b,message:l}),"*"):k.postMessage(JSON.stringify({event:"prompt-cancel",message:l}),"*")},null!=l.titleKey?mxResources.get(l.titleKey):l.title);this.showDialog(q.container,300,80,!0,!1);q.init();return}if("draft"==l.action){var t=n(l.xml);this.spinner.stop();q=new DraftDialog(this,mxResources.get("draftFound",[l.name||this.defaultFilename]),t,mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",
result:"edit",message:l}),"*")}),mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"discard",message:l}),"*")}),l.editKey?mxResources.get(l.editKey):null,l.discardKey?mxResources.get(l.discardKey):null,l.ignore?mxUtils.bind(this,function(){this.hideDialog();k.postMessage(JSON.stringify({event:"draft",result:"ignore",message:l}),"*")}):null);this.showDialog(q.container,640,480,!0,!1,mxUtils.bind(this,function(b){b&&this.actions.get("exit").funct()}));
-try{q.init()}catch(N){k.postMessage(JSON.stringify({event:"draft",error:N.toString(),message:l}),"*")}return}if("template"==l.action){this.spinner.stop();var u=1==l.enableRecent,v=1==l.enableSearch,x=1==l.enableCustomTemp;if("1"==urlParams.newTempDlg&&!l.templatesOnly&&null!=l.callback){var J=this.getCurrentUser(),K=new TemplatesDialog(this,function(b,c,d){b=b||this.emptyDiagramXml;k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,tempUrl:d.url,libs:d.libs,
-builtIn:null!=d.info&&null!=d.info.custContentId,message:l}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=J?J.id:null,u?mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getRecentDiagrams",[d],null,b,c)}):null,v?mxUtils.bind(this,function(b,c,d,f){this.remoteInvoke("searchDiagrams",[b,f],null,c,d)}):null,mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getFileContent",[b.url],null,c,d)}),null,x?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",
-null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(K.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,l.templatesOnly?!1:null!=l.callback,mxUtils.bind(this,function(c,d,f,e){c=c||this.emptyDiagramXml;null!=l.callback?k.postMessage(JSON.stringify({event:"template",xml:c,blank:c==this.emptyDiagramXml,name:d,tempUrl:f,libs:e,builtIn:!0,message:l}),"*"):(b(c,g,c!=this.emptyDiagramXml,l.toSketch),this.editor.modified||this.editor.setStatus(""))}),
-null,null,null,null,null,null,null,u?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,v?mxUtils.bind(this,function(b,c){this.remoteInvoke("searchDiagrams",[b,null],null,c,function(){c(null,"Network Error!")})}):null,mxUtils.bind(this,function(b,c,d){k.postMessage(JSON.stringify({event:"template",docUrl:b,info:c,name:d}),"*")}),null,null,x?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},
+try{q.init()}catch(T){k.postMessage(JSON.stringify({event:"draft",error:T.toString(),message:l}),"*")}return}if("template"==l.action){this.spinner.stop();var v=1==l.enableRecent,u=1==l.enableSearch,x=1==l.enableCustomTemp;if("1"==urlParams.newTempDlg&&!l.templatesOnly&&null!=l.callback){var I=this.getCurrentUser(),J=new TemplatesDialog(this,function(b,c,d){b=b||this.emptyDiagramXml;k.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c,tempUrl:d.url,libs:d.libs,
+builtIn:null!=d.info&&null!=d.info.custContentId,message:l}),"*")},mxUtils.bind(this,function(){this.actions.get("exit").funct()}),null,null,null!=I?I.id:null,v?mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getRecentDiagrams",[d],null,b,c)}):null,u?mxUtils.bind(this,function(b,c,d,f){this.remoteInvoke("searchDiagrams",[b,f],null,c,d)}):null,mxUtils.bind(this,function(b,c,d){this.remoteInvoke("getFileContent",[b.url],null,c,d)}),null,x?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",
+null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(J.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,l.templatesOnly?!1:null!=l.callback,mxUtils.bind(this,function(c,d,f,e){c=c||this.emptyDiagramXml;null!=l.callback?k.postMessage(JSON.stringify({event:"template",xml:c,blank:c==this.emptyDiagramXml,name:d,tempUrl:f,libs:e,builtIn:!0,message:l}),"*"):(b(c,g,c!=this.emptyDiagramXml,l.toSketch),this.editor.modified||this.editor.setStatus(""))}),
+null,null,null,null,null,null,null,v?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,u?mxUtils.bind(this,function(b,c){this.remoteInvoke("searchDiagrams",[b,null],null,c,function(){c(null,"Network Error!")})}):null,mxUtils.bind(this,function(b,c,d){k.postMessage(JSON.stringify({event:"template",docUrl:b,info:c,name:d}),"*")}),null,null,x?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},
0)})}):null,1==l.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==l.action){var H=this.getDiagramTextContent();k.postMessage(JSON.stringify({event:"textContent",data:H,message:l}),"*");return}if("status"==l.action){null!=l.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(l.messageKey))):null!=l.message&&this.editor.setStatus(mxUtils.htmlEntities(l.message));
-null!=l.modified&&(this.editor.modified=l.modified);return}if("spinner"==l.action){var I=null!=l.messageKey?mxResources.get(l.messageKey):l.message;null==l.show||l.show?this.spinner.spin(document.body,I):this.spinner.stop();return}if("exit"==l.action){this.actions.get("exit").funct();return}if("viewport"==l.action){null!=l.viewport&&(this.embedViewport=l.viewport);return}if("snapshot"==l.action){this.sendEmbeddedSvgExport(!0);return}if("export"==l.action){if("png"==l.format||"xmlpng"==l.format){if(null==
-l.spin&&null==l.spinKey||this.spinner.spin(document.body,null!=l.spinKey?mxResources.get(l.spinKey):l.spin)){var S=null!=l.xml?l.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var P=this.editor.graph,M=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var c=this.createLoadMessage("export");c.format=l.format;c.message=l;c.data=b;c.xml=S;k.postMessage(JSON.stringify(c),"*")}),W=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==l.format&&
-(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(S)));P!=this.editor.graph&&P.container.parentNode.removeChild(P.container);M(b)}),X=l.pageId||(null!=this.pages?l.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var L=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=X){var b=P.getGlobalVariable;P=this.createTemporaryGraph(P.getStylesheet());for(var c,d=0;d<this.pages.length;d++)if(this.pages[d].getId()==X){c=
-this.updatePageRoot(this.pages[d]);break}null==c&&(c=this.currentPage);P.getGlobalVariable=function(d){return"page"==d?c.getName():"pagenumber"==d?1:b.apply(this,arguments)};document.body.appendChild(P.container);P.model.setRoot(c.root)}if(null!=l.layerIds){for(var f=P.model,e=f.getChildCells(f.getRoot()),g={},d=0;d<l.layerIds.length;d++)g[l.layerIds[d]]=!0;for(d=0;d<e.length;d++)f.setVisible(e[d],g[e[d].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){W(b.toDataURL("image/png"))}),
-l.width,null,l.background,mxUtils.bind(this,function(){W(null)}),null,null,l.scale,l.transparent,l.shadow,null,P,l.border,null,l.grid,l.keepTheme)});null!=l.xml&&0<l.xml.length?(d=!0,this.setFileData(S),d=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(L)},0):L()):L()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==l.format?"1":"0")+(null!=X?"&pageId="+X:"")+(null!=l.layerIds&&0<l.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:l.layerIds})):
-"")+(null!=l.scale?"&scale="+l.scale:"")+"&base64=1&xml="+encodeURIComponent(S))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?M("data:image/png;base64,"+b.getText()):W(null)}),mxUtils.bind(this,function(){W(null)}))}}else L=mxUtils.bind(this,function(){var b=this.createLoadMessage("export");b.message=l;if("html2"==l.format||"html"==l.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var c=this.getXmlFileData();b.xml=mxUtils.getXml(c);b.data=this.getFileData(null,
+null!=l.modified&&(this.editor.modified=l.modified);return}if("spinner"==l.action){var K=null!=l.messageKey?mxResources.get(l.messageKey):l.message;null==l.show||l.show?this.spinner.spin(document.body,K):this.spinner.stop();return}if("exit"==l.action){this.actions.get("exit").funct();return}if("viewport"==l.action){null!=l.viewport&&(this.embedViewport=l.viewport);return}if("snapshot"==l.action){this.sendEmbeddedSvgExport(!0);return}if("export"==l.action){if("png"==l.format||"xmlpng"==l.format){if(null==
+l.spin&&null==l.spinKey||this.spinner.spin(document.body,null!=l.spinKey?mxResources.get(l.spinKey):l.spin)){var R=null!=l.xml?l.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var O=this.editor.graph,M=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var c=this.createLoadMessage("export");c.format=l.format;c.message=l;c.data=b;c.xml=R;k.postMessage(JSON.stringify(c),"*")}),V=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==l.format&&
+(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(R)));O!=this.editor.graph&&O.container.parentNode.removeChild(O.container);M(b)}),W=l.pageId||(null!=this.pages?l.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var L=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=W){var b=O.getGlobalVariable;O=this.createTemporaryGraph(O.getStylesheet());for(var c,d=0;d<this.pages.length;d++)if(this.pages[d].getId()==W){c=
+this.updatePageRoot(this.pages[d]);break}null==c&&(c=this.currentPage);O.getGlobalVariable=function(d){return"page"==d?c.getName():"pagenumber"==d?1:b.apply(this,arguments)};document.body.appendChild(O.container);O.model.setRoot(c.root)}if(null!=l.layerIds){for(var f=O.model,e=f.getChildCells(f.getRoot()),g={},d=0;d<l.layerIds.length;d++)g[l.layerIds[d]]=!0;for(d=0;d<e.length;d++)f.setVisible(e[d],g[e[d].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){V(b.toDataURL("image/png"))}),
+l.width,null,l.background,mxUtils.bind(this,function(){V(null)}),null,null,l.scale,l.transparent,l.shadow,null,O,l.border,null,l.grid,l.keepTheme)});null!=l.xml&&0<l.xml.length?(d=!0,this.setFileData(R),d=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(L)},0):L()):L()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==l.format?"1":"0")+(null!=W?"&pageId="+W:"")+(null!=l.layerIds&&0<l.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:l.layerIds})):
+"")+(null!=l.scale?"&scale="+l.scale:"")+"&base64=1&xml="+encodeURIComponent(R))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?M("data:image/png;base64,"+b.getText()):V(null)}),mxUtils.bind(this,function(){V(null)}))}}else L=mxUtils.bind(this,function(){var b=this.createLoadMessage("export");b.message=l;if("html2"==l.format||"html"==l.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var c=this.getXmlFileData();b.xml=mxUtils.getXml(c);b.data=this.getFileData(null,
null,!0,null,null,null,c);b.format=l.format}else if("html"==l.format)c=this.editor.getGraphXml(),b.data=this.getHtml(c,this.editor.graph),b.xml=mxUtils.getXml(c),b.format=l.format;else{mxSvgCanvas2D.prototype.foAltText=null;c=null!=l.background?l.background:this.editor.graph.background;c==mxConstants.NONE&&(c=null);b.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);b.format="svg";var d=mxUtils.bind(this,function(c){this.editor.graph.setEnabled(!0);this.spinner.stop();b.data=Editor.createSvgDataUri(c);
k.postMessage(JSON.stringify(b),"*")});if("xmlsvg"==l.format)(null==l.spin&&null==l.spinKey||this.spinner.spin(document.body,null!=l.spinKey?mxResources.get(l.spinKey):l.spin))&&this.getEmbeddedSvg(b.xml,this.editor.graph,null,!0,d,null,null,l.embedImages,c,l.scale,l.border,l.shadow,l.keepTheme);else if(null==l.spin&&null==l.spinKey||this.spinner.spin(document.body,null!=l.spinKey?mxResources.get(l.spinKey):l.spin))this.editor.graph.setEnabled(!1),c=this.editor.graph.getSvg(c,l.scale,l.border,null,
null,null,null,null,null,this.editor.graph.shadowVisible||l.shadow,null,l.keepTheme),(this.editor.graph.shadowVisible||l.shadow)&&this.editor.graph.addSvgShadow(c),this.embedFonts(c,mxUtils.bind(this,function(b){l.embedImages||null==l.embedImages?this.editor.convertImages(b,mxUtils.bind(this,function(b){d(mxUtils.getXml(b))})):d(mxUtils.getXml(b))}));return}k.postMessage(JSON.stringify(b),"*")}),null!=l.xml&&0<l.xml.length?(d=!0,this.setFileData(l.xml),d=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(L)},
-0):L()):L();return}if("load"==l.action){p=l.toSketch;f=1==l.autosave;this.hideDialog();null!=l.modified&&null==urlParams.modified&&(urlParams.modified=l.modified);null!=l.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=l.saveAndExit);null!=l.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=l.noSaveBtn);if(null!=l.rough){var Q=Editor.sketchMode;this.doSetSketchMode(l.rough);Q!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=l.dark&&(Q=Editor.darkMode,
-this.doSetDarkMode(l.dark),Q!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=l.border&&(this.embedExportBorder=l.border);null!=l.background&&(this.embedExportBackground=l.background);null!=l.viewport&&(this.embedViewport=l.viewport);this.embedExitPoint=null;if(null!=l.rect){var T=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=l.rect.top+"px";this.diagramContainer.style.left=l.rect.left+"px";this.diagramContainer.style.height=
-l.rect.height+"px";this.diagramContainer.style.width=l.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";m=mxUtils.bind(this,function(){var b=this.editor.graph,c=b.maxFitScale;b.maxFitScale=l.maxFitScale;b.fit(2*T);b.maxFitScale=c;b.container.scrollTop-=2*T;b.container.scrollLeft-=2*T;this.fireEvent(new mxEventObject("editInlineStart","data",[l]))})}null!=l.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=l.noExitBtn);null!=l.title&&null!=this.buttonContainer&&
-(t=document.createElement("span"),mxUtils.write(t,l.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=t);try{l.libs&&this.sidebar.showEntries(l.libs)}catch(N){}l=null!=l.xmlpng?this.extractGraphModelFromPng(l.xmlpng):null!=l.descriptor?l.descriptor:l.xml}else{if("merge"==l.action){var da=this.getCurrentFile();null!=da&&(t=n(l.xml),null!=t&&""!=t&&da.mergeFile(new LocalFile(this,t),function(){k.postMessage(JSON.stringify({event:"merge",
-message:l}),"*")},function(b){k.postMessage(JSON.stringify({event:"merge",message:l,error:b}),"*")}))}else"remoteInvokeReady"==l.action?this.handleRemoteInvokeReady(k):"remoteInvoke"==l.action?this.handleRemoteInvoke(l,g.origin):"remoteInvokeResponse"==l.action?this.handleRemoteInvokeResponse(l):k.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(l)}),"*");return}}catch(N){this.handleError(N)}}var oa=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<
-this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),ea=mxUtils.bind(this,function(g,l){d=!0;try{b(g,l,null,p)}catch(la){this.handleError(la)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");e=oa();f&&null==c&&(c=mxUtils.bind(this,function(b,c){var f=oa();if(f!=e&&!d){var g=this.createLoadMessage("autosave");g.xml=f;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}e=f}),this.editor.graph.model.addListener(mxEvent.CHANGE,c),this.editor.graph.addListener("gridSizeChanged",
+0):L()):L();return}if("load"==l.action){p=l.toSketch;f=1==l.autosave;this.hideDialog();null!=l.modified&&null==urlParams.modified&&(urlParams.modified=l.modified);null!=l.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=l.saveAndExit);null!=l.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=l.noSaveBtn);if(null!=l.rough){var P=Editor.sketchMode;this.doSetSketchMode(l.rough);P!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=l.dark&&(P=Editor.darkMode,
+this.doSetDarkMode(l.dark),P!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=l.border&&(this.embedExportBorder=l.border);null!=l.background&&(this.embedExportBackground=l.background);null!=l.viewport&&(this.embedViewport=l.viewport);this.embedExitPoint=null;if(null!=l.rect){var X=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=l.rect.top+"px";this.diagramContainer.style.left=l.rect.left+"px";this.diagramContainer.style.height=
+l.rect.height+"px";this.diagramContainer.style.width=l.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";m=mxUtils.bind(this,function(){var b=this.editor.graph,c=b.maxFitScale;b.maxFitScale=l.maxFitScale;b.fit(2*X);b.maxFitScale=c;b.container.scrollTop-=2*X;b.container.scrollLeft-=2*X;this.fireEvent(new mxEventObject("editInlineStart","data",[l]))})}null!=l.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=l.noExitBtn);null!=l.title&&null!=this.buttonContainer&&
+(t=document.createElement("span"),mxUtils.write(t,l.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=t);try{l.libs&&this.sidebar.showEntries(l.libs)}catch(T){}l=null!=l.xmlpng?this.extractGraphModelFromPng(l.xmlpng):null!=l.descriptor?l.descriptor:l.xml}else{if("merge"==l.action){var da=this.getCurrentFile();null!=da&&(t=n(l.xml),null!=t&&""!=t&&da.mergeFile(new LocalFile(this,t),function(){k.postMessage(JSON.stringify({event:"merge",
+message:l}),"*")},function(b){k.postMessage(JSON.stringify({event:"merge",message:l,error:b}),"*")}))}else"remoteInvokeReady"==l.action?this.handleRemoteInvokeReady(k):"remoteInvoke"==l.action?this.handleRemoteInvoke(l,g.origin):"remoteInvokeResponse"==l.action?this.handleRemoteInvokeResponse(l):k.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(l)}),"*");return}}catch(T){this.handleError(T)}}var na=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<
+this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),ea=mxUtils.bind(this,function(g,l){d=!0;try{b(g,l,null,p)}catch(ka){this.handleError(ka)}d=!1;null!=urlParams.modified&&this.editor.setStatus("");e=na();f&&null==c&&(c=mxUtils.bind(this,function(b,c){var f=na();if(f!=e&&!d){var g=this.createLoadMessage("autosave");g.xml=f;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}e=f}),this.editor.graph.model.addListener(mxEvent.CHANGE,c),this.editor.graph.addListener("gridSizeChanged",
c),this.editor.graph.addListener("shadowVisibleChanged",c),this.addListener("pageFormatChanged",c),this.addListener("pageScaleChanged",c),this.addListener("backgroundColorChanged",c),this.addListener("backgroundImageChanged",c),this.addListener("foldingEnabledChanged",c),this.addListener("mathEnabledChanged",c),this.addListener("gridEnabledChanged",c),this.addListener("guidesEnabledChanged",c),this.addListener("pageViewChanged",c));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var n=this.createLoadMessage("load");
n.xml=g;k.postMessage(JSON.stringify(n),"*")}null!=m&&m()});null!=l&&"function"===typeof l.substring&&"data:application/vnd.visio;base64,"==l.substring(0,34)?(n="0M8R4KGxGuE"==l.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(l.substring(l.indexOf(",")+1)),function(b){ea(b,g)},mxUtils.bind(this,function(b){this.handleError(b)}),n)):null!=l&&"function"===typeof l.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(l,"")?this.parseFileData(l,mxUtils.bind(this,
-function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&ea(b.responseText,g)}),""):null!=l&&"function"===typeof l.substring&&this.isLucidChartData(l)?this.convertLucidChart(l,mxUtils.bind(this,function(b){ea(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==l||"object"!==typeof l||null==l.format||null==l.data&&null==l.url?(l=n(l),ea(l,g)):this.loadDescriptor(l,mxUtils.bind(this,function(b){ea(oa(),g)}),mxUtils.bind(this,function(b){this.handleError(b,
+function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&ea(b.responseText,g)}),""):null!=l&&"function"===typeof l.substring&&this.isLucidChartData(l)?this.convertLucidChart(l,mxUtils.bind(this,function(b){ea(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==l||"object"!==typeof l||null==l.format||null==l.data&&null==l.url?(l=n(l),ea(l,g)):this.loadDescriptor(l,mxUtils.bind(this,function(b){ea(na(),g)}),mxUtils.bind(this,function(b){this.handleError(b,
mxResources.get("errorLoadingFile"))}))}}));var k=window.opener||window.parent,g="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";k.postMessage(g,"*");if("json"==urlParams.proto){var n=this.editor.graph.openLink;this.editor.graph.openLink=function(b,c,d){n.apply(this,arguments);k.postMessage(JSON.stringify({event:"openLink",href:b,target:c,allowOpener:d}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var b=document.createElement("div");
b.style.display="inline-block";b.style.position="absolute";b.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";b.style.paddingLeft="8px";b.style.paddingBottom="2px";var c=document.createElement("button");c.className="geBigButton";var d=c;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var e="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,e);c.setAttribute("title",e);mxEvent.addListener(c,"click",mxUtils.bind(this,
function(){this.actions.get("saveAndExit").funct()}));b.appendChild(c)}}else mxUtils.write(c,mxResources.get("save")),c.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),b.appendChild(c),"1"==urlParams.saveAndExit&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("saveAndExit")),c.setAttribute("title",mxResources.get("saveAndExit")),c.className="geBigButton geBigStandardButton",
c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),b.appendChild(c),d=c);"1"!=urlParams.noExitBtn&&(c=document.createElement("a"),d="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(c,d),c.setAttribute("title",d),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),b.appendChild(c),
d=c);d.style.marginRight="20px";this.toolbar.container.appendChild(b);this.toolbar.staticElements.push(b);b.style.right="atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(b){this.importCsv(b)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));
this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=function(b,c){for(var d=this.editor.graph,f=d.getSelectionCells(),e=0;e<b.length;e++){var g=new window[b[e].layout](d);if(null!=b[e].config)for(var k in b[e].config)g[k]=b[e].config[k];this.executeLayout(function(){g.execute(d.getDefaultParent(),0==f.length?null:f)},e==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),
-f=[],e=[],g=[],k={};if(0<d.length){for(var l={},n=this.editor.graph,A=null,z=null,B=null,y=null,C=null,G=null,D=null,E="whiteSpace=wrap;html=1;",F=null,J=null,K="",H="auto",I="auto",S=null,P=null,M=40,W=40,X=100,L=0,Q=function(){null!=c?c(R):(n.setSelectionCells(R),n.scrollCellToVisible(n.getSelectionCell()))},T=n.getFreeInsertPoint(),da=T.x,oa=T.y,T=oa,ea=null,N="auto",J=null,ha=[],sa=null,la=null,ka=0;ka<d.length&&"#"==d[ka].charAt(0);){b=d[ka];for(ka++;ka<d.length&&"\\"==b.charAt(b.length-1)&&
-"#"==d[ka].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[ka].substring(1)),ka++;if("#"!=b.charAt(1)){var V=b.indexOf(":");if(0<V){var Z=mxUtils.trim(b.substring(1,V)),O=mxUtils.trim(b.substring(V+1));"label"==Z?ea=n.sanitizeHtml(O):"labelname"==Z&&0<O.length&&"-"!=O?C=O:"labels"==Z&&0<O.length&&"-"!=O?D=JSON.parse(O):"style"==Z?z=O:"parentstyle"==Z?E=O:"unknownStyle"==Z&&"-"!=O?G=O:"stylename"==Z&&0<O.length&&"-"!=O?y=O:"styles"==Z&&0<O.length&&"-"!=O?B=JSON.parse(O):"vars"==Z&&0<O.length&&
-"-"!=O?A=JSON.parse(O):"identity"==Z&&0<O.length&&"-"!=O?F=O:"parent"==Z&&0<O.length&&"-"!=O?J=O:"namespace"==Z&&0<O.length&&"-"!=O?K=O:"width"==Z?H=O:"height"==Z?I=O:"left"==Z&&0<O.length?S=O:"top"==Z&&0<O.length?P=O:"ignore"==Z?la=O.split(","):"connect"==Z?ha.push(JSON.parse(O)):"link"==Z?sa=O:"padding"==Z?L=parseFloat(O):"edgespacing"==Z?M=parseFloat(O):"nodespacing"==Z?W=parseFloat(O):"levelspacing"==Z?X=parseFloat(O):"layout"==Z&&(N=O)}}}if(null==d[ka])throw Error(mxResources.get("invalidOrMissingFile"));
-for(var fa=this.editor.csvToArray(d[ka]),Z=V=null,O=[],Y=0;Y<fa.length;Y++)F==fa[Y]&&(V=Y),J==fa[Y]&&(Z=Y),O.push(mxUtils.trim(fa[Y]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==ea&&(ea="%"+O[0]+"%");if(null!=ha)for(var ca=0;ca<ha.length;ca++)null==l[ha[ca].to]&&(l[ha[ca].to]={});F=[];for(Y=ka+1;Y<d.length;Y++){var pa=this.editor.csvToArray(d[Y]);if(null==pa){var ra=40<d[Y].length?d[Y].substring(0,40)+"...":d[Y];throw Error(ra+" ("+Y+"):\n"+mxResources.get("containsValidationErrors"));
-}0<pa.length&&F.push(pa)}n.model.beginUpdate();try{for(Y=0;Y<F.length;Y++){var pa=F[Y],U=null,na=null!=V?K+pa[V]:null;null!=na&&(U=n.model.getCell(na));var d=null!=U,ga=new mxCell(ea,new mxGeometry(da,T,0,0),z||"whiteSpace=wrap;html=1;");ga.vertex=!0;ga.id=na;for(var ba=0;ba<pa.length;ba++)n.setAttributeForCell(ga,O[ba],pa[ba]);if(null!=C&&null!=D){var ta=D[ga.getAttribute(C)];null!=ta&&n.labelChanged(ga,ta)}if(null!=y&&null!=B){var ja=B[ga.getAttribute(y)];null!=ja&&(ga.style=ja)}n.setAttributeForCell(ga,
-"placeholders","1");ga.style=n.replacePlaceholders(ga,ga.style,A);d?(0>mxUtils.indexOf(g,U)&&g.push(U),n.fireEvent(new mxEventObject("cellsInserted","cells",[U]))):n.fireEvent(new mxEventObject("cellsInserted","cells",[ga]));U=ga;if(!d)for(ca=0;ca<ha.length;ca++)l[ha[ca].to][U.getAttribute(ha[ca].to)]=U;null!=sa&&"link"!=sa&&(n.setLinkForCell(U,U.getAttribute(sa)),n.setAttributeForCell(U,sa,null));var qa=this.editor.graph.getPreferredSizeForCell(U),J=null!=Z?n.model.getCell(K+pa[Z]):null;if(U.vertex){ra=
-null!=J?0:da;ka=null!=J?0:oa;null!=S&&null!=U.getAttribute(S)&&(U.geometry.x=ra+parseFloat(U.getAttribute(S)));null!=P&&null!=U.getAttribute(P)&&(U.geometry.y=ka+parseFloat(U.getAttribute(P)));var ma="@"==H.charAt(0)?U.getAttribute(H.substring(1)):null;U.geometry.width=null!=ma&&"auto"!=ma?parseFloat(U.getAttribute(H.substring(1))):"auto"==H||"auto"==ma?qa.width+L:parseFloat(H);var ia="@"==I.charAt(0)?U.getAttribute(I.substring(1)):null;U.geometry.height=null!=ia&&"auto"!=ia?parseFloat(ia):"auto"==
-I||"auto"==ia?qa.height+L:parseFloat(I);T+=U.geometry.height+W}d?(null==k[na]&&(k[na]=[]),k[na].push(U)):(f.push(U),null!=J?(J.style=n.replacePlaceholders(J,E,A),n.addCell(U,J),e.push(J)):g.push(n.addCell(U)))}for(Y=0;Y<e.length;Y++)ma="@"==H.charAt(0)?e[Y].getAttribute(H.substring(1)):null,ia="@"==I.charAt(0)?e[Y].getAttribute(I.substring(1)):null,"auto"!=H&&"auto"!=ma||"auto"!=I&&"auto"!=ia||n.updateGroupBounds([e[Y]],L,!0);for(var aa=g.slice(),R=g.slice(),ca=0;ca<ha.length;ca++)for(var za=ha[ca],
-Y=0;Y<f.length;Y++){var U=f[Y],ya=mxUtils.bind(this,function(b,c,d){var f=c.getAttribute(d.from);if(null!=f&&""!=f)for(var f=f.split(","),e=0;e<f.length;e++){var k=l[d.to][f[e]];if(null==k&&null!=G){k=new mxCell(f[e],new mxGeometry(da,oa,0,0),G);k.style=n.replacePlaceholders(c,k.style,A);var m=this.editor.graph.getPreferredSizeForCell(k);k.geometry.width=m.width+L;k.geometry.height=m.height+L;l[d.to][f[e]]=k;k.vertex=!0;k.id=f[e];g.push(n.addCell(k))}if(null!=k){m=d.label;null!=d.fromlabel&&(m=(c.getAttribute(d.fromlabel)||
-"")+(m||""));null!=d.sourcelabel&&(m=n.replacePlaceholders(c,d.sourcelabel,A)+(m||""));null!=d.tolabel&&(m=(m||"")+(k.getAttribute(d.tolabel)||""));null!=d.targetlabel&&(m=(m||"")+n.replacePlaceholders(k,d.targetlabel,A));var p="target"==d.placeholders==!d.invert?k:b,p=null!=d.style?n.replacePlaceholders(p,d.style,A):n.createCurrentEdgeStyle(),m=n.insertEdge(null,null,m||"",d.invert?k:b,d.invert?b:k,p);if(null!=d.labels)for(p=0;p<d.labels.length;p++){var q=d.labels[p],t=new mxCell(q.label||p,new mxGeometry(null!=
-q.x?q.x:0,null!=q.y?q.y:0,0,0),"resizable=0;html=1;");t.vertex=!0;t.connectable=!1;t.geometry.relative=!0;null!=q.placeholders&&(t.value=n.replacePlaceholders("target"==q.placeholders==!d.invert?k:b,t.value,A));if(null!=q.dx||null!=q.dy)t.geometry.offset=new mxPoint(null!=q.dx?q.dx:0,null!=q.dy?q.dy:0);m.insert(t)}R.push(m);mxUtils.remove(d.invert?b:k,aa)}}});ya(U,U,za);if(null!=k[U.id])for(ba=0;ba<k[U.id].length;ba++)ya(U,k[U.id][ba],za)}if(null!=la)for(Y=0;Y<f.length;Y++)for(U=f[Y],ba=0;ba<la.length;ba++)n.setAttributeForCell(U,
-mxUtils.trim(la[ba]),null);if(0<g.length){var ua=new mxParallelEdgeLayout(n);ua.spacing=M;ua.checkOverlap=!0;var va=function(){0<ua.spacing&&ua.execute(n.getDefaultParent());for(var b=0;b<g.length;b++){var c=n.getCellGeometry(g[b]);c.x=Math.round(n.snap(c.x));c.y=Math.round(n.snap(c.y));"auto"==H&&(c.width=Math.round(n.snap(c.width)));"auto"==I&&(c.height=Math.round(n.snap(c.height)))}};if("["==N.charAt(0)){var xa=Q;n.view.validate();this.executeLayoutList(JSON.parse(N),function(){va();xa()});Q=null}else if("circle"==
-N){var wa=new mxCircleLayout(n);wa.disableEdgeStyle=!1;wa.resetEdges=!1;var Da=wa.isVertexIgnored;wa.isVertexIgnored=function(b){return Da.apply(this,arguments)||0>mxUtils.indexOf(g,b)};this.executeLayout(function(){wa.execute(n.getDefaultParent());va()},!0,Q);Q=null}else if("horizontaltree"==N||"verticaltree"==N||"auto"==N&&R.length==2*g.length-1&&1==aa.length){n.view.validate();var Aa=new mxCompactTreeLayout(n,"horizontaltree"==N);Aa.levelDistance=W;Aa.edgeRouting=!1;Aa.resetEdges=!1;this.executeLayout(function(){Aa.execute(n.getDefaultParent(),
-0<aa.length?aa[0]:null)},!0,Q);Q=null}else if("horizontalflow"==N||"verticalflow"==N||"auto"==N&&1==aa.length){n.view.validate();var Ca=new mxHierarchicalLayout(n,"horizontalflow"==N?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);Ca.intraCellSpacing=W;Ca.parallelEdgeSpacing=M;Ca.interRankCellSpacing=X;Ca.disableEdgeStyle=!1;this.executeLayout(function(){Ca.execute(n.getDefaultParent(),R);n.moveCells(R,da,oa)},!0,Q);Q=null}else if("organic"==N||"auto"==N&&R.length>g.length){n.view.validate();
-var Ba=new mxFastOrganicLayout(n);Ba.forceConstant=3*W;Ba.disableEdgeStyle=!1;Ba.resetEdges=!1;var Ea=Ba.isVertexIgnored;Ba.isVertexIgnored=function(b){return Ea.apply(this,arguments)||0>mxUtils.indexOf(g,b)};this.executeLayout(function(){Ba.execute(n.getDefaultParent());va()},!0,Q);Q=null}}this.hideDialog()}finally{n.model.endUpdate()}null!=Q&&Q()}}catch(Fa){this.handleError(Fa)}};EditorUi.prototype.getSearch=function(b){var c="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var d=
+f=[],e=[],g=[],k={};if(0<d.length){for(var l={},n=this.editor.graph,z=null,A=null,B=null,y=null,C=null,E=null,D=null,F="whiteSpace=wrap;html=1;",G=null,I=null,J="",H="auto",K="auto",R=null,O=null,M=40,V=40,W=100,L=0,P=function(){null!=c?c(Q):(n.setSelectionCells(Q),n.scrollCellToVisible(n.getSelectionCell()))},X=n.getFreeInsertPoint(),da=X.x,na=X.y,X=na,ea=null,T="auto",I=null,ha=[],ra=null,ka=null,ja=0;ja<d.length&&"#"==d[ja].charAt(0);){b=d[ja];for(ja++;ja<d.length&&"\\"==b.charAt(b.length-1)&&
+"#"==d[ja].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[ja].substring(1)),ja++;if("#"!=b.charAt(1)){var U=b.indexOf(":");if(0<U){var Z=mxUtils.trim(b.substring(1,U)),N=mxUtils.trim(b.substring(U+1));"label"==Z?ea=n.sanitizeHtml(N):"labelname"==Z&&0<N.length&&"-"!=N?C=N:"labels"==Z&&0<N.length&&"-"!=N?D=JSON.parse(N):"style"==Z?A=N:"parentstyle"==Z?F=N:"unknownStyle"==Z&&"-"!=N?E=N:"stylename"==Z&&0<N.length&&"-"!=N?y=N:"styles"==Z&&0<N.length&&"-"!=N?B=JSON.parse(N):"vars"==Z&&0<N.length&&
+"-"!=N?z=JSON.parse(N):"identity"==Z&&0<N.length&&"-"!=N?G=N:"parent"==Z&&0<N.length&&"-"!=N?I=N:"namespace"==Z&&0<N.length&&"-"!=N?J=N:"width"==Z?H=N:"height"==Z?K=N:"left"==Z&&0<N.length?R=N:"top"==Z&&0<N.length?O=N:"ignore"==Z?ka=N.split(","):"connect"==Z?ha.push(JSON.parse(N)):"link"==Z?ra=N:"padding"==Z?L=parseFloat(N):"edgespacing"==Z?M=parseFloat(N):"nodespacing"==Z?V=parseFloat(N):"levelspacing"==Z?W=parseFloat(N):"layout"==Z&&(T=N)}}}if(null==d[ja])throw Error(mxResources.get("invalidOrMissingFile"));
+for(var fa=this.editor.csvToArray(d[ja]),Z=U=null,N=[],Y=0;Y<fa.length;Y++)G==fa[Y]&&(U=Y),I==fa[Y]&&(Z=Y),N.push(mxUtils.trim(fa[Y]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==ea&&(ea="%"+N[0]+"%");if(null!=ha)for(var ca=0;ca<ha.length;ca++)null==l[ha[ca].to]&&(l[ha[ca].to]={});G=[];for(Y=ja+1;Y<d.length;Y++){var oa=this.editor.csvToArray(d[Y]);if(null==oa){var qa=40<d[Y].length?d[Y].substring(0,40)+"...":d[Y];throw Error(qa+" ("+Y+"):\n"+mxResources.get("containsValidationErrors"));
+}0<oa.length&&G.push(oa)}n.model.beginUpdate();try{for(Y=0;Y<G.length;Y++){var oa=G[Y],S=null,ma=null!=U?J+oa[U]:null;null!=ma&&(S=n.model.getCell(ma));var d=null!=S,ga=new mxCell(ea,new mxGeometry(da,X,0,0),A||"whiteSpace=wrap;html=1;");ga.vertex=!0;ga.id=ma;for(var ba=0;ba<oa.length;ba++)n.setAttributeForCell(ga,N[ba],oa[ba]);if(null!=C&&null!=D){var ta=D[ga.getAttribute(C)];null!=ta&&n.labelChanged(ga,ta)}if(null!=y&&null!=B){var ia=B[ga.getAttribute(y)];null!=ia&&(ga.style=ia)}n.setAttributeForCell(ga,
+"placeholders","1");ga.style=n.replacePlaceholders(ga,ga.style,z);d?(0>mxUtils.indexOf(g,S)&&g.push(S),n.fireEvent(new mxEventObject("cellsInserted","cells",[S]))):n.fireEvent(new mxEventObject("cellsInserted","cells",[ga]));S=ga;if(!d)for(ca=0;ca<ha.length;ca++)l[ha[ca].to][S.getAttribute(ha[ca].to)]=S;null!=ra&&"link"!=ra&&(n.setLinkForCell(S,S.getAttribute(ra)),n.setAttributeForCell(S,ra,null));var pa=this.editor.graph.getPreferredSizeForCell(S),I=null!=Z?n.model.getCell(J+oa[Z]):null;if(S.vertex){qa=
+null!=I?0:da;ja=null!=I?0:na;null!=R&&null!=S.getAttribute(R)&&(S.geometry.x=qa+parseFloat(S.getAttribute(R)));null!=O&&null!=S.getAttribute(O)&&(S.geometry.y=ja+parseFloat(S.getAttribute(O)));var la="@"==H.charAt(0)?S.getAttribute(H.substring(1)):null;S.geometry.width=null!=la&&"auto"!=la?parseFloat(S.getAttribute(H.substring(1))):"auto"==H||"auto"==la?pa.width+L:parseFloat(H);var sa="@"==K.charAt(0)?S.getAttribute(K.substring(1)):null;S.geometry.height=null!=sa&&"auto"!=sa?parseFloat(sa):"auto"==
+K||"auto"==sa?pa.height+L:parseFloat(K);X+=S.geometry.height+V}d?(null==k[ma]&&(k[ma]=[]),k[ma].push(S)):(f.push(S),null!=I?(I.style=n.replacePlaceholders(I,F,z),n.addCell(S,I),e.push(I)):g.push(n.addCell(S)))}for(Y=0;Y<e.length;Y++)la="@"==H.charAt(0)?e[Y].getAttribute(H.substring(1)):null,sa="@"==K.charAt(0)?e[Y].getAttribute(K.substring(1)):null,"auto"!=H&&"auto"!=la||"auto"!=K&&"auto"!=sa||n.updateGroupBounds([e[Y]],L,!0);for(var aa=g.slice(),Q=g.slice(),ca=0;ca<ha.length;ca++)for(var za=ha[ca],
+Y=0;Y<f.length;Y++){var S=f[Y],ya=mxUtils.bind(this,function(b,c,d){var f=c.getAttribute(d.from);if(null!=f&&""!=f)for(var f=f.split(","),e=0;e<f.length;e++){var k=l[d.to][f[e]];if(null==k&&null!=E){k=new mxCell(f[e],new mxGeometry(da,na,0,0),E);k.style=n.replacePlaceholders(c,k.style,z);var m=this.editor.graph.getPreferredSizeForCell(k);k.geometry.width=m.width+L;k.geometry.height=m.height+L;l[d.to][f[e]]=k;k.vertex=!0;k.id=f[e];g.push(n.addCell(k))}if(null!=k){m=d.label;null!=d.fromlabel&&(m=(c.getAttribute(d.fromlabel)||
+"")+(m||""));null!=d.sourcelabel&&(m=n.replacePlaceholders(c,d.sourcelabel,z)+(m||""));null!=d.tolabel&&(m=(m||"")+(k.getAttribute(d.tolabel)||""));null!=d.targetlabel&&(m=(m||"")+n.replacePlaceholders(k,d.targetlabel,z));var p="target"==d.placeholders==!d.invert?k:b,p=null!=d.style?n.replacePlaceholders(p,d.style,z):n.createCurrentEdgeStyle(),m=n.insertEdge(null,null,m||"",d.invert?k:b,d.invert?b:k,p);if(null!=d.labels)for(p=0;p<d.labels.length;p++){var q=d.labels[p],t=new mxCell(q.label||p,new mxGeometry(null!=
+q.x?q.x:0,null!=q.y?q.y:0,0,0),"resizable=0;html=1;");t.vertex=!0;t.connectable=!1;t.geometry.relative=!0;null!=q.placeholders&&(t.value=n.replacePlaceholders("target"==q.placeholders==!d.invert?k:b,t.value,z));if(null!=q.dx||null!=q.dy)t.geometry.offset=new mxPoint(null!=q.dx?q.dx:0,null!=q.dy?q.dy:0);m.insert(t)}Q.push(m);mxUtils.remove(d.invert?b:k,aa)}}});ya(S,S,za);if(null!=k[S.id])for(ba=0;ba<k[S.id].length;ba++)ya(S,k[S.id][ba],za)}if(null!=ka)for(Y=0;Y<f.length;Y++)for(S=f[Y],ba=0;ba<ka.length;ba++)n.setAttributeForCell(S,
+mxUtils.trim(ka[ba]),null);if(0<g.length){var ua=new mxParallelEdgeLayout(n);ua.spacing=M;ua.checkOverlap=!0;var va=function(){0<ua.spacing&&ua.execute(n.getDefaultParent());for(var b=0;b<g.length;b++){var c=n.getCellGeometry(g[b]);c.x=Math.round(n.snap(c.x));c.y=Math.round(n.snap(c.y));"auto"==H&&(c.width=Math.round(n.snap(c.width)));"auto"==K&&(c.height=Math.round(n.snap(c.height)))}};if("["==T.charAt(0)){var xa=P;n.view.validate();this.executeLayoutList(JSON.parse(T),function(){va();xa()});P=null}else if("circle"==
+T){var wa=new mxCircleLayout(n);wa.disableEdgeStyle=!1;wa.resetEdges=!1;var Da=wa.isVertexIgnored;wa.isVertexIgnored=function(b){return Da.apply(this,arguments)||0>mxUtils.indexOf(g,b)};this.executeLayout(function(){wa.execute(n.getDefaultParent());va()},!0,P);P=null}else if("horizontaltree"==T||"verticaltree"==T||"auto"==T&&Q.length==2*g.length-1&&1==aa.length){n.view.validate();var Aa=new mxCompactTreeLayout(n,"horizontaltree"==T);Aa.levelDistance=V;Aa.edgeRouting=!1;Aa.resetEdges=!1;this.executeLayout(function(){Aa.execute(n.getDefaultParent(),
+0<aa.length?aa[0]:null)},!0,P);P=null}else if("horizontalflow"==T||"verticalflow"==T||"auto"==T&&1==aa.length){n.view.validate();var Ca=new mxHierarchicalLayout(n,"horizontalflow"==T?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);Ca.intraCellSpacing=V;Ca.parallelEdgeSpacing=M;Ca.interRankCellSpacing=W;Ca.disableEdgeStyle=!1;this.executeLayout(function(){Ca.execute(n.getDefaultParent(),Q);n.moveCells(Q,da,na)},!0,P);P=null}else if("organic"==T||"auto"==T&&Q.length>g.length){n.view.validate();
+var Ba=new mxFastOrganicLayout(n);Ba.forceConstant=3*V;Ba.disableEdgeStyle=!1;Ba.resetEdges=!1;var Ea=Ba.isVertexIgnored;Ba.isVertexIgnored=function(b){return Ea.apply(this,arguments)||0>mxUtils.indexOf(g,b)};this.executeLayout(function(){Ba.execute(n.getDefaultParent());va()},!0,P);P=null}}this.hideDialog()}finally{n.model.endUpdate()}null!=P&&P()}}catch(Fa){this.handleError(Fa)}};EditorUi.prototype.getSearch=function(b){var c="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var d=
"?",f;for(f in urlParams)0>mxUtils.indexOf(b,f)&&null!=urlParams[f]&&(c+=d+f+"="+urlParams[f],d="&")}else c=window.location.search;return c};EditorUi.prototype.getUrl=function(b){b=null!=b?b:window.location.pathname;var c=0<b.indexOf("?")?1:0;if("1"==urlParams.offline)b+=window.location.search;else{var d="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),f;for(f in urlParams)0>mxUtils.indexOf(d,f)&&(b=0==c?b+"?":b+"&",null!=urlParams[f]&&(b+=f+"="+
urlParams[f],c++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,d,e,g){b=new LinkDialog(this,b,c,d,!0,e,g);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=function(b){var c=1;null==this.drive&&"function"!==typeof window.DriveClient||c++;null==this.dropbox&&"function"!==typeof window.DropboxClient||c++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||c++;null!=this.gitHub&&c++;null!=this.gitLab&&c++;null!=this.notion&&c++;b&&isLocalStorage&&
"1"==urlParams.browser&&c++;return c};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var b=this.getCurrentFile(),c=null!=b||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(c);this.menus.get("viewZoom").setEnabled(c);var d=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==b||b.isRestricted());this.actions.get("makeCopy").setEnabled(!d);this.actions.get("print").setEnabled(!d);this.menus.get("exportAs").setEnabled(!d);
@@ -11171,7 +11181,7 @@ function(b,c,d,e,g,k,n,u){var f=b.editor.graph;if("xml"==d)b.hideDialog(),b.save
{globalVars:f.getExportVariables()};u&&(t.grid={size:f.gridSize,steps:f.view.gridSteps,color:f.view.gridColor});b.saveRequest(c,d,function(b,c){return new mxXmlRequest(EXPORT_URL,"format="+d+"&base64="+(c||"0")+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(t))+(0<n?"&dpi="+n:"")+"&bg="+(null!=e?e:"none")+"&w="+p+"&h="+q+"&border="+k+"&xml="+encodeURIComponent(l))})}else"png"==d?b.exportImage(g,null==e||"none"==e,!0,!1,!1,k,!0,!1,null,u,n):b.exportImage(g,
!1,!0,!1,!1,k,!0,!1,"jpeg",u);else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var b=this.editor.graph,c="";if(null!=this.pages)for(var d=0;d<this.pages.length;d++){var e=b;this.currentPage!=this.pages[d]&&(e=this.createTemporaryGraph(b.getStylesheet()),this.updatePageRoot(this.pages[d]),e.model.setRoot(this.pages[d].root));c+=this.pages[d].getName()+" "+e.getIndexableText()+" "}else c=b.getIndexableText();
this.editor.graph.setEnabled(!0);return c};EditorUi.prototype.showRemotelyStoredLibrary=function(b){var c={},d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxUtils.htmlEntities(b));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(e);var f=document.createElement("div");f.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";f.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+
-IMAGE_PATH+'/spin.gif"></div>';var g={};try{var k=mxSettings.getCustomLibraries();for(b=0;b<k.length;b++){var n=k[b];if("R"==n.substring(0,1)){var x=JSON.parse(decodeURIComponent(n.substring(1)));g[x[0]]={id:x[0],title:x[1],downloadUrl:x[2]}}}}catch(A){}this.remoteInvoke("getCustomLibraries",null,null,function(b){f.innerHTML="";if(0==b.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var d=0;d<
+IMAGE_PATH+'/spin.gif"></div>';var g={};try{var k=mxSettings.getCustomLibraries();for(b=0;b<k.length;b++){var n=k[b];if("R"==n.substring(0,1)){var x=JSON.parse(decodeURIComponent(n.substring(1)));g[x[0]]={id:x[0],title:x[1],downloadUrl:x[2]}}}}catch(z){}this.remoteInvoke("getCustomLibraries",null,null,function(b){f.innerHTML="";if(0==b.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var d=0;d<
b.length;d++){var e=b[d];g[e.id]&&(c[e.id]=e);var k=this.addCheckbox(f,e.title,g[e.id]);(function(b,d){mxEvent.addListener(d,"change",function(){this.checked?c[b.id]=b:delete c[b.id]})})(e,k)}},mxUtils.bind(this,function(b){f.innerHTML="";var c=document.createElement("div");c.style.padding="8px";c.style.textAlign="center";mxUtils.write(c,mxResources.get("error")+": ");mxUtils.write(c,null!=b&&null!=b.message?b.message:mxResources.get("unknownError"));f.appendChild(c)}));d.appendChild(f);d=new CustomDialog(this,
d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==g[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,d,c))}catch(C){this.handleError(C,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));
for(d in g)c[d]||this.closeLibrary(new RemoteLibrary(this,null,g[d]));0==b&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(d.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};
@@ -11179,11 +11189,11 @@ EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue
d.callback&&d.callback.apply(this,b.resp);this.remoteInvokeCallbacks[c.callbackId]=null};EditorUi.prototype.remoteInvoke=function(b,c,d,e,g){var f=!0,k=window.setTimeout(mxUtils.bind(this,function(){f=!1;g({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),l=mxUtils.bind(this,function(){window.clearTimeout(k);f&&e.apply(this,arguments)}),m=mxUtils.bind(this,function(){window.clearTimeout(k);f&&g.apply(this,arguments)});d=d||{};d.callbackId=this.remoteInvokeCallbacks.length;
this.remoteInvokeCallbacks.push({callback:l,error:m});b=JSON.stringify({event:"remoteInvoke",funtionName:b,functionArgs:c,msgMarkers:d});null!=this.remoteWin?this.remoteWin.postMessage(b,"*"):this.remoteInvokeQueue.push(b)};EditorUi.prototype.handleRemoteInvoke=function(b,c){var d=mxUtils.bind(this,function(c,d){var e={event:"remoteInvokeResponse",msgMarkers:b.msgMarkers};null!=d?e.error={errResp:d}:null!=c&&(e.resp=c);this.remoteWin.postMessage(JSON.stringify(e),"*")});try{var e=b.funtionName,f=
this.remoteInvokableFns[e];if(null!=f&&"function"===typeof this[e]){if(f.allowedDomains){for(var g=!1,k=0;k<f.allowedDomains.length;k++)if(c=="https://"+f.allowedDomains[k]){g=!0;break}if(!g){d(null,"Invalid Call: "+e+" is not allowed.");return}}var l=b.functionArgs;Array.isArray(l)||(l=[]);if(f.isAsync)l.push(function(){d(Array.prototype.slice.apply(arguments))}),l.push(function(b){d(null,b||"Unkown Error")}),this[e].apply(this,l);else{var n=this[e].apply(this,l);d([n])}}else d(null,"Invalid Call: "+
-e+" is not found.")}catch(A){d(null,"Invalid Call: An error occurred, "+A.message)}};EditorUi.prototype.openDatabase=function(b,c){if(null==this.database){var d=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=d)try{var e=d.open("database",2);e.onupgradeneeded=function(b){try{var d=e.result;1>b.oldVersion&&d.createObjectStore("objects",{keyPath:"key"});2>b.oldVersion&&(d.createObjectStore("files",{keyPath:"title"}),d.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=
+e+" is not found.")}catch(z){d(null,"Invalid Call: An error occurred, "+z.message)}};EditorUi.prototype.openDatabase=function(b,c){if(null==this.database){var d=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=d)try{var e=d.open("database",2);e.onupgradeneeded=function(b){try{var d=e.result;1>b.oldVersion&&d.createObjectStore("objects",{keyPath:"key"});2>b.oldVersion&&(d.createObjectStore("files",{keyPath:"title"}),d.createObjectStore("filesInfo",{keyPath:"title"}),EditorUi.migrateStorageFiles=
isLocalStorage)}catch(v){null!=c&&c(v)}};e.onsuccess=mxUtils.bind(this,function(c){var d=e.result;this.database=d;EditorUi.migrateStorageFiles&&(StorageFile.migrate(d),EditorUi.migrateStorageFiles=!1);"app.diagrams.net"!=location.host||this.drawioMigrationStarted||(this.drawioMigrationStarted=!0,this.getDatabaseItem(".drawioMigrated3",mxUtils.bind(this,function(b){if(!b||"1"==urlParams.forceMigration){var c=document.createElement("iframe");c.style.display="none";c.setAttribute("src","https://www.draw.io?embed=1&proto=json&forceMigration="+
urlParams.forceMigration);document.body.appendChild(c);var d=!0,e=!1,f,g=0,k=mxUtils.bind(this,function(){e=!0;this.setDatabaseItem(".drawioMigrated3",!0);c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"setMigratedFlag"}),"*")}),l=mxUtils.bind(this,function(){g++;m()}),m=mxUtils.bind(this,function(){try{if(g>=f.length)k();else{var b=f[g];StorageFile.getFileContent(this,b,mxUtils.bind(this,function(d){null==d||".scratchpad"==b&&d==this.emptyLibraryXml?c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",
-funtionName:"getLocalStorageFile",functionArgs:[b]}),"*"):l()}),l)}}catch(F){console.log(F)}}),n=mxUtils.bind(this,function(b){try{this.setDatabaseItem(null,[{title:b.title,size:b.data.length,lastModified:Date.now(),type:b.isLib?"L":"F"},{title:b.title,data:b.data}],l,l,["filesInfo","files"])}catch(F){console.log(F)}});b=mxUtils.bind(this,function(b){try{if(b.source==c.contentWindow){var g={};try{g=JSON.parse(b.data)}catch(J){}"init"==g.event?(c.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),
-"*"),c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=g.event||e||(d?null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?(f=g.resp[0],d=!1,m()):k():null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?n(g.resp[0]):l())}}catch(J){console.log(J)}});window.addEventListener("message",b)}})));b(d);d.onversionchange=function(){d.close()}});e.onerror=c;e.onblocked=function(){}}catch(q){null!=c&&c(q)}else null!=c&&c()}else b(this.database)};
+funtionName:"getLocalStorageFile",functionArgs:[b]}),"*"):l()}),l)}}catch(G){console.log(G)}}),n=mxUtils.bind(this,function(b){try{this.setDatabaseItem(null,[{title:b.title,size:b.data.length,lastModified:Date.now(),type:b.isLib?"L":"F"},{title:b.title,data:b.data}],l,l,["filesInfo","files"])}catch(G){console.log(G)}});b=mxUtils.bind(this,function(b){try{if(b.source==c.contentWindow){var g={};try{g=JSON.parse(b.data)}catch(I){}"init"==g.event?(c.contentWindow.postMessage(JSON.stringify({action:"remoteInvokeReady"}),
+"*"),c.contentWindow.postMessage(JSON.stringify({action:"remoteInvoke",funtionName:"getLocalStorageFileNames"}),"*")):"remoteInvokeResponse"!=g.event||e||(d?null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?(f=g.resp[0],d=!1,m()):k():null!=g.resp&&0<g.resp.length&&null!=g.resp[0]?n(g.resp[0]):l())}}catch(I){console.log(I)}});window.addEventListener("message",b)}})));b(d);d.onversionchange=function(){d.close()}});e.onerror=c;e.onblocked=function(){}}catch(q){null!=c&&c(q)}else null!=c&&c()}else b(this.database)};
EditorUi.prototype.setDatabaseItem=function(b,c,d,e,g){this.openDatabase(mxUtils.bind(this,function(f){try{g=g||"objects";Array.isArray(g)||(g=[g],b=[b],c=[c]);var k=f.transaction(g,"readwrite");k.oncomplete=d;k.onerror=e;for(f=0;f<g.length;f++)k.objectStore(g[f]).put(null!=b&&null!=b[f]?{key:b[f],data:c[f]}:c[f])}catch(u){null!=e&&e(u)}}),e)};EditorUi.prototype.removeDatabaseItem=function(b,c,d,e){this.openDatabase(mxUtils.bind(this,function(f){e=e||"objects";Array.isArray(e)||(e=[e],b=[b]);f=f.transaction(e,
"readwrite");f.oncomplete=c;f.onerror=d;for(var g=0;g<e.length;g++)f.objectStore(e[g])["delete"](b[g])}),d)};EditorUi.prototype.getDatabaseItem=function(b,c,d,e){this.openDatabase(mxUtils.bind(this,function(f){try{e=e||"objects";var g=f.transaction([e],"readonly").objectStore(e).get(b);g.onsuccess=function(){c(g.result)};g.onerror=d}catch(v){null!=d&&d(v)}}),d)};EditorUi.prototype.getDatabaseItems=function(b,c,d){this.openDatabase(mxUtils.bind(this,function(e){try{d=d||"objects";var f=e.transaction([d],
"readonly").objectStore(d).openCursor(IDBKeyRange.lowerBound(0)),g=[];f.onsuccess=function(c){null==c.target.result?b(g):(g.push(c.target.result.value),c.target.result["continue"]())};f.onerror=c}catch(v){null!=c&&c(v)}}),c)};EditorUi.prototype.getDatabaseItemKeys=function(b,c,d){this.openDatabase(mxUtils.bind(this,function(e){try{d=d||"objects";var f=e.transaction([d],"readonly").objectStore(d).getAllKeys();f.onsuccess=function(){b(f.result)};f.onerror=c}catch(t){null!=c&&c(t)}}),c)};EditorUi.prototype.commentsSupported=
@@ -11191,7 +11201,7 @@ function(){var b=this.getCurrentFile();return null!=b?b.commentsSupported():!1};
null!=e?e.addComment(b,c,d):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var b=this.getCurrentFile();return null!=b?b.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var b=this.getCurrentFile();return null!=b?b.canComment():!0};EditorUi.prototype.newComment=function(b,c){var d=this.getCurrentFile();return null!=d?d.newComment(b,c):new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var b=this.getCurrentFile();
return null!=b&&b.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(b,c){var d=this.getCurrentFile();null!=d&&d.getRevisions?d.getRevisions(b,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var b=this.getCurrentFile();return null!=b&&(b.constructor==DriveFile&&b.isEditable()||b.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(b){b.setRequestHeader("Content-Language",
"da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(b,c,d,e,g,k,n,u){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(b,c,d,e,g,k,n,u)};EditorUi.prototype.loadFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(b)};EditorUi.prototype.createSvgDataUri=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(b)};EditorUi.prototype.embedCssFonts=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");
-return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,c,d,e,g,k,n,u,x,A,z,B,y,C,G,D){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,d,e,g,k,n,u,x,A,z,B,y,C,G,D)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
+return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,c,d,e,g,k,n,u,x,z,A,B,y,C,E,D){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,d,e,g,k,n,u,x,z,A,B,y,C,E,D)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(b,c,d,e){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(b,c,d,e)};EditorUi.prototype.convertImageToDataUri=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(b,c)};EditorUi.prototype.base64Encode=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(b)};EditorUi.prototype.updateCRC=
function(b,c,d,e){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(b,c,d,e)};EditorUi.prototype.crc32=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(b)};EditorUi.prototype.writeGraphModelToPng=function(b,c,d,e,g){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(b,c,d,e,g)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=
urlParams.forceMigration)return null;for(var b=[],c=0;c<localStorage.length;c++){var d=localStorage.key(c),e=localStorage.getItem(d);if(0<d.length&&(".scratchpad"==d||"."!=d.charAt(0))&&0<e.length){var g="<mxfile "===e.substring(0,8)||"<?xml"===e.substring(0,5)||"\x3c!--[if IE]>"===e.substring(0,12),e="<mxlibrary>"===e.substring(0,11);(g||e)&&b.push(d)}}return b};EditorUi.prototype.getLocalStorageFile=function(b){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;
@@ -11200,32 +11210,32 @@ var CommentsWindow=function(b,e,d,c,g,k){function n(){for(var b=B.getElementsByT
"geCommentEditTxtArea";l.style.minHeight=g.offsetHeight+"px";l.value=b.content;c.insertBefore(l,g);var m=document.createElement("div");m.className="geCommentEditBtns";var p=mxUtils.button(mxResources.get("cancel"),function(){e?(c.parentNode.removeChild(c),n()):f();x=null});p.className="geCommentEditBtn";m.appendChild(p);var q=mxUtils.button(mxResources.get("save"),function(){g.innerHTML="";b.content=l.value;mxUtils.write(g,b.content);f();d(b);x=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
function(b){mxEvent.isConsumed(b)||((mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b))&&13==b.keyCode?(q.click(),mxEvent.consume(b)):27==b.keyCode&&(p.click(),mxEvent.consume(b)))}));q.focus();q.className="geCommentEditBtn gePrimaryBtn";m.appendChild(q);c.insertBefore(m,g);k.style.display="none";g.style.display="none";l.focus()}function l(c,d){d.innerHTML="";var e=new Date(c.modifiedDate),f=b.timeSince(e);null==f&&(f=mxResources.get("lessThanAMinute"));mxUtils.write(d,mxResources.get("timeAgo",
[f],"{1} ago"));d.setAttribute("title",e.toLocaleDateString()+" "+e.toLocaleTimeString())}function m(b){var c=document.createElement("img");c.className="geCommentBusyImg";c.src=IMAGE_PATH+"/spin.gif";b.appendChild(c);b.busyImg=c}function p(b){b.style.border="1px solid red";b.removeChild(b.busyImg)}function q(b){b.style.border="";b.removeChild(b.busyImg)}function t(c,d,e,g,k){function C(b,d,e){var f=document.createElement("li");f.className="geCommentAction";var g=document.createElement("a");g.className=
-"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});G.appendChild(f);e&&(f.style.display="none")}function H(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=F;b(c);return{pdiv:e,replies:d}}function E(d,e,k,l,n){function y(){m(C);c.addReply(D,function(b){D.id=b;c.replies.push(D);q(C);k&&k()},function(c){u();p(C);b.handleError(c,null,
-null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},l,n)}function u(){f(D,C,function(b){y()},!0)}var v=H().pdiv,D=b.newComment(d,b.getCurrentUser());D.pCommentId=c.id;null==c.replies&&(c.replies=[]);var C=t(D,c.replies,v,g+1);e?u():y()}if(k||!c.isResolved){y.style.display="none";var F=document.createElement("div");F.className="geCommentContainer";F.setAttribute("data-commentId",c.id);F.style.marginLeft=20*g+5+"px";c.isResolved&&!Editor.isDarkMode()&&(F.style.backgroundColor="ghostWhite");
-var I=document.createElement("div");I.className="geCommentHeader";var z=document.createElement("img");z.className="geCommentUserImg";z.src=c.user.pictureUrl||Editor.userImage;I.appendChild(z);z=document.createElement("div");z.className="geCommentHeaderTxt";I.appendChild(z);var A=document.createElement("div");A.className="geCommentUsername";mxUtils.write(A,c.user.displayName||"");z.appendChild(A);A=document.createElement("div");A.className="geCommentDate";A.setAttribute("data-commentId",c.id);l(c,
-A);z.appendChild(A);F.appendChild(I);I=document.createElement("div");I.className="geCommentTxt";mxUtils.write(I,c.content||"");F.appendChild(I);c.isLocked&&(F.style.opacity="0.5");I=document.createElement("div");I.className="geCommentActions";var G=document.createElement("ul");G.className="geCommentActionsList";I.appendChild(G);v||c.isLocked||0!=g&&!u||C(mxResources.get("reply"),function(){E("",!0)},c.isResolved);z=b.getCurrentUser();null==z||z.id!=c.user.id||v||c.isLocked||(C(mxResources.get("edit"),
-function(){function d(){f(c,F,function(){m(F);c.editComment(c.content,function(){q(F)},function(c){p(F);d();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},c.isResolved),C(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){m(F);c.deleteComment(function(b){if(!0===b){b=F.querySelector(".geCommentTxt");b.innerHTML="";mxUtils.write(b,mxResources.get("msgDeleted"));var e=F.querySelectorAll(".geCommentAction");for(b=
-0;b<e.length;b++)e[b].parentNode.removeChild(e[b]);q(F);F.style.opacity="0.5"}else{e=H(c).replies;for(b=0;b<e.length;b++)B.removeChild(e[b]);for(b=0;b<d.length;b++)if(d[b]==c){d.splice(b,1);break}y.style.display=0==B.getElementsByTagName("div").length?"block":"none"}},function(c){p(F);b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));v||c.isLocked||0!=g||C(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(b){function d(){var d=
-b.target;d.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(d,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=c.isResolved?"none":"",f=H(c).replies,g=Editor.isDarkMode()?"transparent":c.isResolved?"ghostWhite":"white",k=0;k<f.length;k++){f[k].style.backgroundColor=g;for(var l=f[k].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=d.parentNode&&(l[m].style.display=e);D||(f[k].style.display="none")}n()}c.isResolved?E(mxResources.get("reOpened")+": ",!0,
-d,!1,!0):E(mxResources.get("markedAsResolved"),!1,d,!0)});F.appendChild(I);null!=e?B.insertBefore(F,e.nextSibling):B.appendChild(F);for(e=0;null!=c.replies&&e<c.replies.length;e++)I=c.replies[e],I.isResolved=c.isResolved,t(I,c.replies,null,g+1,k);null!=x&&(x.comment.id==c.id?(k=c.content,c.content=x.comment.content,f(c,F,x.saveCallback,x.deleteOnCancel),c.content=k):null==x.comment.id&&x.comment.pCommentId==c.id&&(B.appendChild(x.div),f(x.comment,x.div,x.saveCallback,x.deleteOnCancel)));return F}}
-var v=!b.canComment(),u=b.canReplyToReplies(),x=null,A=document.createElement("div");A.className="geCommentsWin";A.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var z=EditorUi.compactUi?"26px":"30px",B=document.createElement("div");B.className="geCommentsList";B.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";B.style.bottom=parseInt(z)+7+"px";A.appendChild(B);var y=document.createElement("span");y.style.cssText="display:none;padding-top:10px;text-align:center;";
-mxUtils.write(y,mxResources.get("noCommentsFound"));var C=document.createElement("div");C.className="geToolbarContainer geCommentsToolbar";C.style.height=z;C.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";C.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";z=document.createElement("a");z.className="geButton";if(!v){var G=z.cloneNode();G.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';G.setAttribute("title",mxResources.get("create")+
-"...");mxEvent.addListener(G,"click",function(c){function d(){f(e,g,function(c){m(g);b.addComment(c,function(b){c.id=b;E.push(c);q(g)},function(c){p(g);d();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var e=b.newComment("",b.getCurrentUser()),g=t(e,E,null,0);d();c.preventDefault();mxEvent.consume(c)});C.appendChild(G)}G=z.cloneNode();G.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';G.setAttribute("title",mxResources.get("showResolved"));
-var D=!1;Editor.isDarkMode()&&(G.style.filter="invert(100%)");mxEvent.addListener(G,"click",function(b){this.className=(D=!D)?"geButton geCheckedBtn":"geButton";F();b.preventDefault();mxEvent.consume(b)});C.appendChild(G);b.commentsRefreshNeeded()&&(G=z.cloneNode(),G.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',G.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(G.style.filter="invert(100%)"),mxEvent.addListener(G,"click",function(b){F();
-b.preventDefault();mxEvent.consume(b)}),C.appendChild(G));b.commentsSaveNeeded()&&(z=z.cloneNode(),z.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',z.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(z.style.filter="invert(100%)"),mxEvent.addListener(z,"click",function(b){k();b.preventDefault();mxEvent.consume(b)}),C.appendChild(z));A.appendChild(C);var E=[],F=mxUtils.bind(this,function(){this.hasError=!1;if(null!=x)try{x.div=x.div.cloneNode(!0);
-var c=x.div.querySelector(".geCommentEditTxtArea"),d=x.div.querySelector(".geCommentEditBtns");x.comment.content=c.value;c.parentNode.removeChild(c);d.parentNode.removeChild(d)}catch(I){b.handleError(I)}B.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";u=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(b){function c(b){if(null!=b){b.sort(function(b,c){return new Date(b.modifiedDate)-
-new Date(c.modifiedDate)});for(var d=0;d<b.length;d++)c(b[d].replies)}}b.sort(function(b,c){return new Date(b.modifiedDate)-new Date(c.modifiedDate)});B.innerHTML="";B.appendChild(y);y.style.display="block";E=b;for(b=0;b<E.length;b++)c(E[b].replies),t(E[b],E,null,0,D);null!=x&&null==x.comment.id&&null==x.comment.pCommentId&&(B.appendChild(x.div),f(x.comment,x.div,x.saveCallback,x.deleteOnCancel))},mxUtils.bind(this,function(b){B.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(b&&b.message?
-": "+b.message:""));this.hasError=!0})):B.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});F();this.refreshComments=F;C=mxUtils.bind(this,function(){function b(c){var e=d[c.id];if(null!=e)for(l(c,e),e=0;null!=c.replies&&e<c.replies.length;e++)b(c.replies[e])}if(this.window.isVisible()){for(var c=B.querySelectorAll(".geCommentDate"),d={},e=0;e<c.length;e++){var f=c[e];d[f.getAttribute("data-commentId")]=f}for(e=0;e<E.length;e++)b(E[e])}});setInterval(C,6E4);this.refreshCommentsTime=C;this.window=
-new mxWindow(mxResources.get("comments"),A,e,d,c,g,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(b,c){var d=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||
-document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));c=Math.max(0,Math.min(c,d-this.table.clientHeight-48));this.getX()==b&&this.getY()==c||mxWindow.prototype.setLocation.apply(this,arguments)};var J=mxUtils.bind(this,function(){var b=this.window.getX(),c=this.window.getY();this.window.setLocation(b,c)});mxEvent.addListener(window,"resize",J);this.destroy=function(){mxEvent.removeListener(window,"resize",J);this.window.destroy()}},ConfirmDialog=function(b,e,d,
+"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});A.appendChild(f);e&&(f.style.display="none")}function H(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=G;b(c);return{pdiv:e,replies:d}}function F(d,e,k,l,n){function y(){m(C);c.addReply(D,function(b){D.id=b;c.replies.push(D);q(C);k&&k()},function(c){u();p(C);b.handleError(c,null,
+null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},l,n)}function u(){f(D,C,function(b){y()},!0)}var v=H().pdiv,D=b.newComment(d,b.getCurrentUser());D.pCommentId=c.id;null==c.replies&&(c.replies=[]);var C=t(D,c.replies,v,g+1);e?u():y()}if(k||!c.isResolved){y.style.display="none";var G=document.createElement("div");G.className="geCommentContainer";G.setAttribute("data-commentId",c.id);G.style.marginLeft=20*g+5+"px";c.isResolved&&!Editor.isDarkMode()&&(G.style.backgroundColor="ghostWhite");
+var E=document.createElement("div");E.className="geCommentHeader";var K=document.createElement("img");K.className="geCommentUserImg";K.src=c.user.pictureUrl||Editor.userImage;E.appendChild(K);K=document.createElement("div");K.className="geCommentHeaderTxt";E.appendChild(K);var z=document.createElement("div");z.className="geCommentUsername";mxUtils.write(z,c.user.displayName||"");K.appendChild(z);z=document.createElement("div");z.className="geCommentDate";z.setAttribute("data-commentId",c.id);l(c,
+z);K.appendChild(z);G.appendChild(E);E=document.createElement("div");E.className="geCommentTxt";mxUtils.write(E,c.content||"");G.appendChild(E);c.isLocked&&(G.style.opacity="0.5");E=document.createElement("div");E.className="geCommentActions";var A=document.createElement("ul");A.className="geCommentActionsList";E.appendChild(A);v||c.isLocked||0!=g&&!u||C(mxResources.get("reply"),function(){F("",!0)},c.isResolved);K=b.getCurrentUser();null==K||K.id!=c.user.id||v||c.isLocked||(C(mxResources.get("edit"),
+function(){function d(){f(c,G,function(){m(G);c.editComment(c.content,function(){q(G)},function(c){p(G);d();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},c.isResolved),C(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){m(G);c.deleteComment(function(b){if(!0===b){b=G.querySelector(".geCommentTxt");b.innerHTML="";mxUtils.write(b,mxResources.get("msgDeleted"));var e=G.querySelectorAll(".geCommentAction");for(b=
+0;b<e.length;b++)e[b].parentNode.removeChild(e[b]);q(G);G.style.opacity="0.5"}else{e=H(c).replies;for(b=0;b<e.length;b++)B.removeChild(e[b]);for(b=0;b<d.length;b++)if(d[b]==c){d.splice(b,1);break}y.style.display=0==B.getElementsByTagName("div").length?"block":"none"}},function(c){p(G);b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));v||c.isLocked||0!=g||C(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(b){function d(){var d=
+b.target;d.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(d,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=c.isResolved?"none":"",f=H(c).replies,g=Editor.isDarkMode()?"transparent":c.isResolved?"ghostWhite":"white",k=0;k<f.length;k++){f[k].style.backgroundColor=g;for(var l=f[k].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=d.parentNode&&(l[m].style.display=e);D||(f[k].style.display="none")}n()}c.isResolved?F(mxResources.get("reOpened")+": ",!0,
+d,!1,!0):F(mxResources.get("markedAsResolved"),!1,d,!0)});G.appendChild(E);null!=e?B.insertBefore(G,e.nextSibling):B.appendChild(G);for(e=0;null!=c.replies&&e<c.replies.length;e++)E=c.replies[e],E.isResolved=c.isResolved,t(E,c.replies,null,g+1,k);null!=x&&(x.comment.id==c.id?(k=c.content,c.content=x.comment.content,f(c,G,x.saveCallback,x.deleteOnCancel),c.content=k):null==x.comment.id&&x.comment.pCommentId==c.id&&(B.appendChild(x.div),f(x.comment,x.div,x.saveCallback,x.deleteOnCancel)));return G}}
+var v=!b.canComment(),u=b.canReplyToReplies(),x=null,z=document.createElement("div");z.className="geCommentsWin";z.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var A=EditorUi.compactUi?"26px":"30px",B=document.createElement("div");B.className="geCommentsList";B.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";B.style.bottom=parseInt(A)+7+"px";z.appendChild(B);var y=document.createElement("span");y.style.cssText="display:none;padding-top:10px;text-align:center;";
+mxUtils.write(y,mxResources.get("noCommentsFound"));var C=document.createElement("div");C.className="geToolbarContainer geCommentsToolbar";C.style.height=A;C.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";C.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";A=document.createElement("a");A.className="geButton";if(!v){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(c){function d(){f(e,g,function(c){m(g);b.addComment(c,function(b){c.id=b;F.push(c);q(g)},function(c){p(g);d();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var e=b.newComment("",b.getCurrentUser()),g=t(e,F,null,0);d();c.preventDefault();mxEvent.consume(c)});C.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 D=!1;Editor.isDarkMode()&&(E.style.filter="invert(100%)");mxEvent.addListener(E,"click",function(b){this.className=(D=!D)?"geButton geCheckedBtn":"geButton";G();b.preventDefault();mxEvent.consume(b)});C.appendChild(E);b.commentsRefreshNeeded()&&(E=A.cloneNode(),E.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',E.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(E.style.filter="invert(100%)"),mxEvent.addListener(E,"click",function(b){G();
+b.preventDefault();mxEvent.consume(b)}),C.appendChild(E));b.commentsSaveNeeded()&&(A=A.cloneNode(),A.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',A.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(A.style.filter="invert(100%)"),mxEvent.addListener(A,"click",function(b){k();b.preventDefault();mxEvent.consume(b)}),C.appendChild(A));z.appendChild(C);var F=[],G=mxUtils.bind(this,function(){this.hasError=!1;if(null!=x)try{x.div=x.div.cloneNode(!0);
+var c=x.div.querySelector(".geCommentEditTxtArea"),d=x.div.querySelector(".geCommentEditBtns");x.comment.content=c.value;c.parentNode.removeChild(c);d.parentNode.removeChild(d)}catch(K){b.handleError(K)}B.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";u=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(b){function c(b){if(null!=b){b.sort(function(b,c){return new Date(b.modifiedDate)-
+new Date(c.modifiedDate)});for(var d=0;d<b.length;d++)c(b[d].replies)}}b.sort(function(b,c){return new Date(b.modifiedDate)-new Date(c.modifiedDate)});B.innerHTML="";B.appendChild(y);y.style.display="block";F=b;for(b=0;b<F.length;b++)c(F[b].replies),t(F[b],F,null,0,D);null!=x&&null==x.comment.id&&null==x.comment.pCommentId&&(B.appendChild(x.div),f(x.comment,x.div,x.saveCallback,x.deleteOnCancel))},mxUtils.bind(this,function(b){B.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(b&&b.message?
+": "+b.message:""));this.hasError=!0})):B.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});G();this.refreshComments=G;C=mxUtils.bind(this,function(){function b(c){var e=d[c.id];if(null!=e)for(l(c,e),e=0;null!=c.replies&&e<c.replies.length;e++)b(c.replies[e])}if(this.window.isVisible()){for(var c=B.querySelectorAll(".geCommentDate"),d={},e=0;e<c.length;e++){var f=c[e];d[f.getAttribute("data-commentId")]=f}for(e=0;e<F.length;e++)b(F[e])}});setInterval(C,6E4);this.refreshCommentsTime=C;this.window=
+new mxWindow(mxResources.get("comments"),z,e,d,c,g,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(b,c){var d=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||
+document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));c=Math.max(0,Math.min(c,d-this.table.clientHeight-48));this.getX()==b&&this.getY()==c||mxWindow.prototype.setLocation.apply(this,arguments)};var I=mxUtils.bind(this,function(){var b=this.window.getX(),c=this.window.getY();this.window.setLocation(b,c)});mxEvent.addListener(window,"resize",I);this.destroy=function(){mxEvent.removeListener(window,"resize",I);this.window.destroy()}},ConfirmDialog=function(b,e,d,
c,g,k,n,f,l,m,p){var q=document.createElement("div");q.style.textAlign="center";p=null!=p?p:44;var t=document.createElement("div");t.style.padding="6px";t.style.overflow="auto";t.style.maxHeight=p+"px";t.style.lineHeight="1.2em";mxUtils.write(t,e);q.appendChild(t);null!=m&&(t=document.createElement("div"),t.style.padding="6px 0 6px 0",e=document.createElement("img"),e.setAttribute("src",m),t.appendChild(e),q.appendChild(t));m=document.createElement("div");m.style.textAlign="center";m.style.whiteSpace=
"nowrap";var v=document.createElement("input");v.setAttribute("type","checkbox");k=mxUtils.button(k||mxResources.get("cancel"),function(){b.hideDialog();null!=c&&c(v.checked)});k.className="geBtn";null!=f&&(k.innerHTML=f+"<br>"+k.innerHTML,k.style.paddingBottom="8px",k.style.paddingTop="8px",k.style.height="auto",k.style.width="40%");b.editor.cancelFirst&&m.appendChild(k);var u=mxUtils.button(g||mxResources.get("ok"),function(){b.hideDialog();null!=d&&d(v.checked)});m.appendChild(u);null!=n?(u.innerHTML=
n+"<br>"+u.innerHTML+"<br>",u.style.paddingBottom="8px",u.style.paddingTop="8px",u.style.height="auto",u.className="geBtn",u.style.width="40%"):u.className="geBtn gePrimaryBtn";b.editor.cancelFirst||m.appendChild(k);q.appendChild(m);l?(m.style.marginTop="10px",t=document.createElement("p"),t.style.marginTop="20px",t.style.marginBottom="0px",t.appendChild(v),g=document.createElement("span"),mxUtils.write(g," "+mxResources.get("rememberThisSetting")),t.appendChild(g),q.appendChild(t),mxEvent.addListener(g,
"click",function(b){v.checked=!v.checked;mxEvent.consume(b)})):m.style.marginTop="12px";this.init=function(){u.focus()};this.container=q};EditorUi.DIFF_INSERT="i";EditorUi.DIFF_REMOVE="r";EditorUi.DIFF_UPDATE="u";EditorUi.prototype.codec=new mxCodec;EditorUi.prototype.viewStateProperties={background:!0,backgroundImage:!0,shadowVisible:!0,foldingEnabled:!0,pageScale:!0,mathEnabled:!0,pageFormat:!0,extFonts:!0};EditorUi.prototype.cellProperties={id:!0,value:!0,xmlValue:!0,vertex:!0,edge:!0,visible:!0,collapsed:!0,connectable:!0,parent:!0,children:!0,previous:!0,source:!0,target:!0,edges:!0,geometry:!0,style:!0,mxObjectId:!0,mxTransient:!0};
EditorUi.prototype.patchPages=function(b,e,d,c,g){var k={},n=[],f={},l={},m={},p={};if(null!=c&&null!=c[EditorUi.DIFF_UPDATE])for(var q in c[EditorUi.DIFF_UPDATE])k[q]=c[EditorUi.DIFF_UPDATE][q];if(null!=e[EditorUi.DIFF_REMOVE])for(c=0;c<e[EditorUi.DIFF_REMOVE].length;c++)l[e[EditorUi.DIFF_REMOVE][c]]=!0;if(null!=e[EditorUi.DIFF_INSERT])for(c=0;c<e[EditorUi.DIFF_INSERT].length;c++)f[e[EditorUi.DIFF_INSERT][c].previous]=e[EditorUi.DIFF_INSERT][c];if(null!=e[EditorUi.DIFF_UPDATE])for(q in e[EditorUi.DIFF_UPDATE])c=
e[EditorUi.DIFF_UPDATE][q],null!=c.previous&&(p[c.previous]=q);if(null!=b){var t="";for(c=0;c<b.length;c++){var v=b[c].getId();m[v]=b[c];null!=p[t]||l[v]||null!=e[EditorUi.DIFF_UPDATE]&&null!=e[EditorUi.DIFF_UPDATE][v]&&null!=e[EditorUi.DIFF_UPDATE][v].previous||(p[t]=v);t=v}}var u={},x=mxUtils.bind(this,function(b){var c=null!=b?b.getId():"";if(null!=b&&!u[c]){u[c]=!0;n.push(b);var l=null!=e[EditorUi.DIFF_UPDATE]?e[EditorUi.DIFF_UPDATE][c]:null;null!=l&&(this.updatePageRoot(b),null!=l.name&&b.setName(l.name),
-null!=l.view&&this.patchViewState(b,l.view),null!=l.cells&&this.patchPage(b,l.cells,k[b.getId()],g),!d||null==l.cells&&null==l.view||(b.needsUpdate=!0))}b=p[c];null!=b&&(delete p[c],x(m[b]));b=f[c];null!=b&&(delete f[c],A(b))}),A=mxUtils.bind(this,function(b){b=mxUtils.parseXml(b.data).documentElement;b=new DiagramPage(b);this.updatePageRoot(b);var c=m[b.getId()];null==c?x(b):(c.root=b.root,this.currentPage==c?this.editor.graph.model.setRoot(c.root):d&&(c.needsUpdate=!0))});x();for(q in p)x(m[p[q]]),
-delete p[q];for(q in f)A(f[q]),delete f[q];return n};EditorUi.prototype.patchViewState=function(b,e){if(null!=b.viewState&&null!=e){b==this.currentPage&&(b.viewState=this.editor.graph.getViewState());for(var d in e)try{b.viewState[d]=JSON.parse(e[d])}catch(c){}b==this.currentPage&&this.editor.graph.setViewState(b.viewState,!0)}};
+null!=l.view&&this.patchViewState(b,l.view),null!=l.cells&&this.patchPage(b,l.cells,k[b.getId()],g),!d||null==l.cells&&null==l.view||(b.needsUpdate=!0))}b=p[c];null!=b&&(delete p[c],x(m[b]));b=f[c];null!=b&&(delete f[c],z(b))}),z=mxUtils.bind(this,function(b){b=mxUtils.parseXml(b.data).documentElement;b=new DiagramPage(b);this.updatePageRoot(b);var c=m[b.getId()];null==c?x(b):(c.root=b.root,this.currentPage==c?this.editor.graph.model.setRoot(c.root):d&&(c.needsUpdate=!0))});x();for(q in p)x(m[p[q]]),
+delete p[q];for(q in f)z(f[q]),delete f[q];return n};EditorUi.prototype.patchViewState=function(b,e){if(null!=b.viewState&&null!=e){b==this.currentPage&&(b.viewState=this.editor.graph.getViewState());for(var d in e)try{b.viewState[d]=JSON.parse(e[d])}catch(c){}b==this.currentPage&&this.editor.graph.setViewState(b.viewState,!0)}};
EditorUi.prototype.createParentLookup=function(b,e){function d(b){var d=c[b];null==d&&(d={inserted:[],moved:{}},c[b]=d);return d}var c={};if(null!=e[EditorUi.DIFF_INSERT])for(var g=0;g<e[EditorUi.DIFF_INSERT].length;g++){var k=e[EditorUi.DIFF_INSERT][g],n=null!=k.parent?k.parent:"",f=null!=k.previous?k.previous:"";d(n).inserted[f]=k}if(null!=e[EditorUi.DIFF_UPDATE])for(var l in e[EditorUi.DIFF_UPDATE])k=e[EditorUi.DIFF_UPDATE][l],null!=k.previous&&(n=k.parent,null==n&&(g=b.getCell(l),null!=g&&(g=
b.getParent(g),null!=g&&(n=g.getId()))),null!=n&&(d(n).moved[k.previous]=l));return c};
EditorUi.prototype.patchPage=function(b,e,d,c){var g=b==this.currentPage?this.editor.graph.model:new mxGraphModel(b.root),k=this.createParentLookup(g,e);g.beginUpdate();try{var n=g.updateEdgeParent,f=new mxDictionary,l=[];g.updateEdgeParent=function(b,d){!f.get(b)&&c&&(f.put(b,!0),l.push(b))};var m=k[""],p=null!=m&&null!=m.inserted?m.inserted[""]:null,q=null;null!=p&&(q=this.getCellForJson(p));if(null==q){var t=null!=m&&null!=m.moved?m.moved[""]:null;null!=t&&(q=g.getCell(t))}null!=q&&(g.setRoot(q),
@@ -11289,7 +11299,7 @@ DrawioFileSync.prototype.p2pCatchup=function(b,e,d,c,g,k,n,f){if(null!=g&&(null=
else{failed=!0;d=[];break}}}catch(m){d=[],null!=window.console&&"1"==urlParams.test&&console.log(m)}try{0<d.length?(this.file.stats.cacheHits++,this.merge(d,e,g,k,n,f)):(this.file.stats.cacheFail++,this.reload(k,n,f))}catch(m){null!=n&&n(m)}}}else null!=n&&n()};
DrawioFileSync.prototype.catchup=function(b,e,d,c){if(null!=b&&(null==c||!c())){var g=this.file.getDescriptorRevisionId(b),k=this.file.getCurrentRevisionId();if(k==g)this.file.patchDescriptor(this.file.getDescriptor(),b),null!=e&&e();else if(this.isValidState()){var n=this.file.getDescriptorSecret(b);if(null==n||"1"==urlParams.lockdown)this.reload(e,d,c);else{var f=0,l=!1,m=mxUtils.bind(this,function(){if(null==c||!c())if(k!=this.file.getCurrentRevisionId())null!=e&&e();else if(this.isValidState()){var p=
!0,q=window.setTimeout(mxUtils.bind(this,function(){p=!1;this.reload(e,d,c)}),this.ui.timeout);mxUtils.get(EditorUi.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(k)+"&to="+encodeURIComponent(g)+(null!=n?"&secret="+encodeURIComponent(n):""),mxUtils.bind(this,function(g){this.file.stats.bytesReceived+=g.getText().length;window.clearTimeout(q);if(p&&(null==c||!c()))if(k!=this.file.getCurrentRevisionId())null!=e&&e();else if(this.isValidState()){var n=null,t=[];if(200<=
-g.getStatus()&&299>=g.getStatus()&&0<g.getText().length)try{var x=JSON.parse(g.getText());if(null!=x&&0<x.length)for(var A=0;A<x.length;A++){var z=this.stringToObject(x[A]);if(z.v>DrawioFileSync.PROTOCOL){l=!0;t=[];break}else if(z.v===DrawioFileSync.PROTOCOL&&null!=z.d)n=z.d.checksum,t.push(z.d.patch);else{l=!0;t=[];break}}}catch(B){t=[],null!=window.console&&"1"==urlParams.test&&console.log(B)}try{0<t.length?(this.file.stats.cacheHits++,this.merge(t,n,b,e,d,c)):f<=this.maxCacheReadyRetries-1&&!l&&
+g.getStatus()&&299>=g.getStatus()&&0<g.getText().length)try{var x=JSON.parse(g.getText());if(null!=x&&0<x.length)for(var z=0;z<x.length;z++){var A=this.stringToObject(x[z]);if(A.v>DrawioFileSync.PROTOCOL){l=!0;t=[];break}else if(A.v===DrawioFileSync.PROTOCOL&&null!=A.d)n=A.d.checksum,t.push(A.d.patch);else{l=!0;t=[];break}}}catch(B){t=[],null!=window.console&&"1"==urlParams.test&&console.log(B)}try{0<t.length?(this.file.stats.cacheHits++,this.merge(t,n,b,e,d,c)):f<=this.maxCacheReadyRetries-1&&!l&&
401!=g.getStatus()&&503!=g.getStatus()?(f++,this.file.stats.cacheMiss++,window.setTimeout(m,(f+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(e,d,c))}catch(B){null!=d&&d(B)}}else null!=d&&d()}))}else null!=d&&d()});window.setTimeout(m,this.cacheReadyDelay)}}else null!=d&&d()}};
DrawioFileSync.prototype.reload=function(b,e,d,c){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=b&&b()}),mxUtils.bind(this,function(b){null!=e&&e(b)}),d,c)};
DrawioFileSync.prototype.merge=function(b,e,d,c,g,k){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;var n=this.file.ignorePatches(b),f=this.file.getDescriptorRevisionId(d);if(!n){for(k=0;k<b.length;k++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages,
@@ -11371,9 +11381,9 @@ function(){return this.user};DriveClient.prototype.getUsersList=function(){var b
this.setUser(null);b=null};DriveClient.prototype.execute=function(b){var c=mxUtils.bind(this,function(c){this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(c,d){this.authorize(!1,mxUtils.bind(this,function(){null!=d&&d();b()}),mxUtils.bind(this,function(b){var c=null!=b.message?b.message:mxResources.get("cannotLogin");null!=b&&null!=b.error&&403==b.error.code&&null!=b.error.data&&0<b.error.data.length&&"domainPolicy"==b.error.data[0].reason&&(c=b.error.message);this.logout();this.ui.showError(mxResources.get("error"),
c,mxResources.get("help"),mxUtils.bind(this,function(){this.ui.openLink("https://www.diagrams.net/doc/faq/gsuite-authorisation-troubleshoot")}),null,mxResources.get("ok"))}),c)}))});this.authorize(!0,b,c)};DriveClient.prototype.executeRequest=function(d,c,e){try{var g=!0,n=null,f=0;null!=this.requestThread&&window.clearTimeout(this.requestThread);var l=mxUtils.bind(this,function(){try{this.requestThread=null;this.currentRequest=d;null!=n&&window.clearTimeout(n);n=window.setTimeout(mxUtils.bind(this,
function(){g=!1;null!=e&&e({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout"),retry:l})}),this.ui.timeout);var k=null,p=!1;"string"===typeof d.params?k=d.params:null!=d.params&&(k=JSON.stringify(d.params),p=!0);var q=d.fullUrl||this.GDriveBaseUrl+d.url;p&&(q+=(0<q.indexOf("?")?"&":"?")+"alt=json");var t=new mxXmlRequest(q,k,d.method||"GET");t.setRequestHeaders=mxUtils.bind(this,function(c,e){if(null!=d.headers)for(var f in d.headers)c.setRequestHeader(f,d.headers[f]);else null!=d.contentType?
-c.setRequestHeader("Content-Type",d.contentType):p&&c.setRequestHeader("Content-Type","application/json");c.setRequestHeader("Authorization","Bearer "+b)});t.send(mxUtils.bind(this,function(b){try{if(window.clearTimeout(n),g){var k;try{k=JSON.parse(b.getText())}catch(z){k=null}if(200<=b.getStatus()&&299>=b.getStatus())null!=c&&c(k);else{var m=null!=k&&null!=k.error?null!=k.error.data?k.error.data:k.error.errors:null,p=null!=m&&0<m.length?m[0].reason:null;null==e||null==k||null==k.error||-1!=k.error.code&&
+c.setRequestHeader("Content-Type",d.contentType):p&&c.setRequestHeader("Content-Type","application/json");c.setRequestHeader("Authorization","Bearer "+b)});t.send(mxUtils.bind(this,function(b){try{if(window.clearTimeout(n),g){var k;try{k=JSON.parse(b.getText())}catch(A){k=null}if(200<=b.getStatus()&&299>=b.getStatus())null!=c&&c(k);else{var m=null!=k&&null!=k.error?null!=k.error.data?k.error.data:k.error.errors:null,p=null!=m&&0<m.length?m[0].reason:null;null==e||null==k||null==k.error||-1!=k.error.code&&
(403!=k.error.code||"domainPolicy"!=p&&"The requested mime type change is forbidden."!=k.error.message)?null!=k&&null!=k.error&&(401==k.error.code||403==k.error.code&&"rateLimitExceeded"!=p)?403==k.error.code&&this.retryAuth||401==k.error.code&&this.retryAuth&&"authError"==p?(null!=e&&e(k),this.retryAuth=!1):(this.retryAuth=!0,this.execute(l)):null!=k&&null!=k.error&&412!=k.error.code&&404!=k.error.code&&400!=k.error.code&&this.currentRequest==d&&f<this.maxRetries?(f++,this.requestThread=window.setTimeout(l,
-Math.round(Math.pow(2,f)*(1+.1*(Math.random()-.5))*this.coolOff))):null!=e&&e(k):e(k)}}}catch(z){if(null!=e)e(z);else throw z;}}))}catch(v){if(null!=e)e(v);else throw v;}});null!=b&&this.authCalled?l():this.execute(l)}catch(m){if(null!=e)e(m);else throw m;}};DriveClient.prototype.createAuthWin=function(b){return window.open(b?b:"about:blank","gdauth",["width=525,height=525","top="+(window.screenY+Math.max(window.outerHeight-525,0)/2),"left="+(window.screenX+Math.max(window.outerWidth-525,0)/2),"status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes"].join())};
+Math.round(Math.pow(2,f)*(1+.1*(Math.random()-.5))*this.coolOff))):null!=e&&e(k):e(k)}}}catch(A){if(null!=e)e(A);else throw A;}}))}catch(v){if(null!=e)e(v);else throw v;}});null!=b&&this.authCalled?l():this.execute(l)}catch(m){if(null!=e)e(m);else throw m;}};DriveClient.prototype.createAuthWin=function(b){return window.open(b?b:"about:blank","gdauth",["width=525,height=525","top="+(window.screenY+Math.max(window.outerHeight-525,0)/2),"left="+(window.screenX+Math.max(window.outerWidth-525,0)/2),"status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes"].join())};
DriveClient.prototype.authorize=function(b,c,e,k,n){this.isExtAuth&&!b?window.parent.driveAuth(mxUtils.bind(this,function(b){this.updateAuthInfo(b,!0,!0,c,e)}),e):(new mxXmlRequest(this.redirectUri+"?getState=1",null,"GET")).send(mxUtils.bind(this,function(d){200<=d.getStatus()&&299>=d.getStatus()?this.authorizeStep2(d.getText(),b,c,e,k,n):null!=e&&e(d)}),e)};DriveClient.prototype.updateAuthInfo=function(d,c,e,k,n){b=d.access_token;delete d.access_token;d.expires=Date.now()+1E3*parseInt(d.expires_in);
d.remember=c;this.resetTokenRefresh(d);this.authCalled=!0;if(e||null==this.user){var f=JSON.stringify(d);this.updateUser(mxUtils.bind(this,function(){var b=JSON.parse(f);this.setPersistentToken(b,!c);null!=k&&k()}),n)}else null!=k&&(this.setPersistentToken(d,!c),k())};DriveClient.prototype.authorizeStep2=function(b,c,e,k,n,f){try{null!=this.ui.stateArg&&null!=this.ui.stateArg.userId&&(this.userId=this.ui.stateArg.userId,null!=this.user&&this.user.id!=this.userId&&(this.user=null));if(null==this.userId){var d=
JSON.parse(this.getPersistentToken(!0));d&&null!=d.current&&(this.userId=d.current.userId)}if(c&&null==this.userId)null!=k&&k();else if(c)(new mxXmlRequest(this.redirectUri+"?state="+encodeURIComponent("cId="+this.clientId+"&domain="+window.location.hostname+"&token="+b)+"&userId="+this.userId,null,"GET")).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?(b=JSON.parse(b.getText()),this.updateAuthInfo(b,!0,!1,e,k)):(0!=b.getStatus()&&this.logout(),null!=k&&k(b))}),k);else{var g=
@@ -11388,23 +11398,23 @@ e){return this.getFile(b,c,e,!0,!0)};DriveClient.prototype.loadDescriptor=functi
c,e)}),e):this.loadDescriptor(d,mxUtils.bind(this,function(d){try{if(null!=this.user){var f=/\.png$/i.test(d.title);/\.v(dx|sdx?)$/i.test(d.title)||/\.gliffy$/i.test(d.title)||!this.ui.useCanvasForExport&&f?this.ui.convertFile(d.downloadUrl,d.title,d.mimeType,this.extension,c,e,null,{Authorization:"Bearer "+b}):k||n||d.mimeType==this.libraryMimeType||d.mimeType==this.xmlMimeType?this.getXmlFile(d,c,e,!0,n):this.getXmlFile(d,c,e)}else e({message:mxResources.get("loggedOut")})}catch(m){if(null!=e)e(m);
else throw m;}}),e)};DriveClient.prototype.isGoogleRealtimeMimeType=function(b){return null!=b&&"application/vnd.jgraph.mxfile."==b.substring(0,30)};DriveClient.prototype.getXmlFile=function(d,c,e,k,n){try{var f={Authorization:"Bearer "+b},g=d.downloadUrl;if(null==g)null!=e&&e({message:mxResources.get("exportOptionsDisabledDetails")});else{var m=0,p=mxUtils.bind(this,function(){this.ui.editor.loadUrl(g,mxUtils.bind(this,function(b){try{if(null==b)e({message:mxResources.get("invalidOrMissingFile")});
else if(d.mimeType==this.libraryMimeType||n)d.mimeType!=this.libraryMimeType||n?c(new DriveLibrary(this.ui,b,d)):e({message:mxResources.get("notADiagramFile")});else{var f=!1;if(/\.png$/i.test(d.title)){var k=b.lastIndexOf(",");if(0<k){var l=this.ui.extractGraphModelFromPng(b);if(null!=l&&0<l.length)b=l;else try{var l=b.substring(k+1),m=!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(l):atob(l),p=this.ui.editor.extractGraphModel(mxUtils.parseXml(m).documentElement,!0);null==p||0<p.getElementsByTagName("parsererror").length?
-f=!0:b=m}catch(z){f=!0}}}else/\.pdf$/i.test(d.title)?(l=Editor.extractGraphModelFromPdf(b),null!=l&&0<l.length&&(f=!0,b=l)):"data:image/png;base64,PG14ZmlsZS"==b.substring(0,32)&&(m=b.substring(22),b=window.atob&&!mxClient.IS_SF?atob(m):Base64.decode(m));Graph.fileSupport&&(new XMLHttpRequest).upload&&this.ui.isRemoteFileFormat(b,g)?this.ui.parseFileData(b,mxUtils.bind(this,function(b){try{4==b.readyState&&(200<=b.status&&299>=b.status?c(new LocalFile(this.ui,b.responseText,d.title+this.extension,
-!0)):null!=e&&e({message:mxResources.get("errorLoadingFile")}))}catch(B){if(null!=e)e(B);else throw B;}}),d.title):c(f?new LocalFile(this.ui,b,d.title,!0):new DriveFile(this.ui,b,d))}}catch(z){if(null!=e)e(z);else throw z;}}),mxUtils.bind(this,function(b,c){if(m<this.maxRetries&&null!=c&&403==c.getStatus())m++,window.setTimeout(p,2*m*this.coolOff*(1+.1*(Math.random()-.5)));else if(null!=e)e(b);else throw b;}),null!=d.mimeType&&"image/"==d.mimeType.substring(0,6)&&"image/svg"!=d.mimeType.substring(0,
+f=!0:b=m}catch(A){f=!0}}}else/\.pdf$/i.test(d.title)?(l=Editor.extractGraphModelFromPdf(b),null!=l&&0<l.length&&(f=!0,b=l)):"data:image/png;base64,PG14ZmlsZS"==b.substring(0,32)&&(m=b.substring(22),b=window.atob&&!mxClient.IS_SF?atob(m):Base64.decode(m));Graph.fileSupport&&(new XMLHttpRequest).upload&&this.ui.isRemoteFileFormat(b,g)?this.ui.parseFileData(b,mxUtils.bind(this,function(b){try{4==b.readyState&&(200<=b.status&&299>=b.status?c(new LocalFile(this.ui,b.responseText,d.title+this.extension,
+!0)):null!=e&&e({message:mxResources.get("errorLoadingFile")}))}catch(B){if(null!=e)e(B);else throw B;}}),d.title):c(f?new LocalFile(this.ui,b,d.title,!0):new DriveFile(this.ui,b,d))}}catch(A){if(null!=e)e(A);else throw A;}}),mxUtils.bind(this,function(b,c){if(m<this.maxRetries&&null!=c&&403==c.getStatus())m++,window.setTimeout(p,2*m*this.coolOff*(1+.1*(Math.random()-.5)));else if(null!=e)e(b);else throw b;}),null!=d.mimeType&&"image/"==d.mimeType.substring(0,6)&&"image/svg"!=d.mimeType.substring(0,
9)||/\.png$/i.test(d.title)||/\.jpe?g$/i.test(d.title)||/\.pdf$/i.test(d.title),null,null,null,f)});p()}}catch(q){if(null!=e)e(q);else throw q;}};DriveClient.prototype.saveFile=function(b,c,e,k,n,f,l,m,p){try{var d=0;b.saveLevel=1;var g=mxUtils.bind(this,function(c){if(null!=k)k(c);else throw c;try{if(!b.isConflict(c)){var d="sl_"+b.saveLevel+"-error_"+(b.getErrorMessage(c)||"unknown");null!=c&&null!=c.error&&null!=c.error.code&&(d+="-code_"+c.error.code);EditorUi.logEvent({category:"ERROR-SAVE-FILE-"+
-b.getHash()+"-rev_"+b.desc.headRevisionId+"-mod_"+b.desc.modifiedDate+"-size_"+b.getSize()+"-mime_"+b.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+(b.isAutosave()?"":"-noauto")+(b.changeListenerEnabled?"":"-nolisten")+(b.inConflictState?"-conflict":"")+(b.invalidChecksum?"-invalid":""),action:d,label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=b.sync?"-client_"+b.sync.clientId:"-nosync")})}}catch(J){}}),v=mxUtils.bind(this,function(b){g(b);try{EditorUi.logError(b.message,null,null,
-b)}catch(F){}});if(b.isEditable()&&null!=b.desc){var u=(new Date).getTime(),x=b.desc.etag,A=b.desc.modifiedDate,z=b.desc.headRevisionId,B=this.ui.useCanvasForExport&&/(\.png)$/i.test(b.getTitle());f=null!=f?f:!1;var y=null,C=!1,G={mimeType:b.desc.mimeType,title:b.getTitle()};if(this.isGoogleRealtimeMimeType(G.mimeType))G.mimeType=this.xmlMimeType,y=b.desc,C=c=!0;else if("application/octet-stream"==G.mimeType||"1"==urlParams["override-mime"]&&G.mimeType!=this.xmlMimeType)G.mimeType=this.xmlMimeType;
-var D=mxUtils.bind(this,function(k,n,q){try{b.saveLevel=3;b.constructor==DriveFile&&(null==m&&(m=[]),null==b.getChannelId()&&m.push({key:"channel",value:Editor.guid(32)}),null==b.getChannelKey()&&m.push({key:"key",value:Editor.guid(32)}),m.push({key:"secret",value:null!=p?p:Editor.guid(32)}));q||(null!=k||f||(k=this.placeholderThumbnail,n=this.placeholderMimeType),null!=k&&null!=n&&(G.thumbnail={image:k,mimeType:n}));var t=b.getData(),D=mxUtils.bind(this,function(d){try{if(b.saveDelay=(new Date).getTime()-
-u,b.saveLevel=11,null==d)g({message:mxResources.get("errorSavingFile")+": Empty response"});else{var f=(new Date(d.modifiedDate)).getTime()-(new Date(A)).getTime();if(0>=f||x==d.etag||c&&z==d.headRevisionId){b.saveLevel=12;var k=[];0>=f&&k.push("invalid modified time");x==d.etag&&k.push("stale etag");c&&z==d.headRevisionId&&k.push("stale revision");var l=k.join(", ");g({message:mxResources.get("errorSavingFile")+": "+l},d);try{EditorUi.logError("Critical: Error saving to Google Drive "+b.desc.id,
-null,"from-"+z+"."+A+"-"+this.ui.hashValue(x)+"-to-"+d.headRevisionId+"."+d.modifiedDate+"-"+this.ui.hashValue(d.etag)+(0<l.length?"-errors-"+l:""),"user-"+(null!=this.user?this.user.id:"nouser")+(null!=b.sync?"-client_"+b.sync.clientId:"-nosync"))}catch(L){}}else if(b.saveLevel=null,e(d,t),null!=y){this.executeRequest({url:"/files/"+y.id+"/revisions/"+y.headRevisionId+"?supportsAllDrives=true"},mxUtils.bind(this,mxUtils.bind(this,function(b){b.pinned=!0;this.executeRequest({url:"/files/"+y.id+"/revisions/"+
-y.headRevisionId,method:"PUT",params:b})})));try{EditorUi.logEvent({category:b.convertedFrom+"-CONVERT-FILE-"+b.getHash(),action:"from_"+y.id+"."+y.headRevisionId+"-to_"+b.desc.id+"."+b.desc.headRevisionId,label:null!=this.user?"user_"+this.user.id:"nouser"+(null!=b.sync?"-client_"+b.sync.clientId:"nosync")})}catch(L){}}}}catch(L){v(L)}}),E=mxUtils.bind(this,function(e,f){b.saveLevel=4;try{null!=m&&(G.properties=m);var n=l||b.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?
-null:b.getCurrentEtag(),p=mxUtils.bind(this,function(k){b.saveLevel=5;try{var l=b.desc.mimeType!=this.xmlMimeType&&b.desc.mimeType!=this.mimeType&&b.desc.mimeType!=this.libraryMimeType,m=!0,p=null;try{p=window.setTimeout(mxUtils.bind(this,function(){m=!1;g({code:App.ERROR_TIMEOUT})}),5*this.ui.timeout)}catch(N){}this.executeRequest(this.createUploadRequest(b.getId(),G,e,c||k||l,f,k?null:n,C),mxUtils.bind(this,function(b){window.clearTimeout(p);m&&D(b)}),mxUtils.bind(this,function(c){window.clearTimeout(p);
+b.getHash()+"-rev_"+b.desc.headRevisionId+"-mod_"+b.desc.modifiedDate+"-size_"+b.getSize()+"-mime_"+b.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+(b.isAutosave()?"":"-noauto")+(b.changeListenerEnabled?"":"-nolisten")+(b.inConflictState?"-conflict":"")+(b.invalidChecksum?"-invalid":""),action:d,label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=b.sync?"-client_"+b.sync.clientId:"-nosync")})}}catch(I){}}),v=mxUtils.bind(this,function(b){g(b);try{EditorUi.logError(b.message,null,null,
+b)}catch(G){}});if(b.isEditable()&&null!=b.desc){var u=(new Date).getTime(),x=b.desc.etag,z=b.desc.modifiedDate,A=b.desc.headRevisionId,B=this.ui.useCanvasForExport&&/(\.png)$/i.test(b.getTitle());f=null!=f?f:!1;var y=null,C=!1,E={mimeType:b.desc.mimeType,title:b.getTitle()};if(this.isGoogleRealtimeMimeType(E.mimeType))E.mimeType=this.xmlMimeType,y=b.desc,C=c=!0;else if("application/octet-stream"==E.mimeType||"1"==urlParams["override-mime"]&&E.mimeType!=this.xmlMimeType)E.mimeType=this.xmlMimeType;
+var D=mxUtils.bind(this,function(k,n,q){try{b.saveLevel=3;b.constructor==DriveFile&&(null==m&&(m=[]),null==b.getChannelId()&&m.push({key:"channel",value:Editor.guid(32)}),null==b.getChannelKey()&&m.push({key:"key",value:Editor.guid(32)}),m.push({key:"secret",value:null!=p?p:Editor.guid(32)}));q||(null!=k||f||(k=this.placeholderThumbnail,n=this.placeholderMimeType),null!=k&&null!=n&&(E.thumbnail={image:k,mimeType:n}));var t=b.getData(),D=mxUtils.bind(this,function(d){try{if(b.saveDelay=(new Date).getTime()-
+u,b.saveLevel=11,null==d)g({message:mxResources.get("errorSavingFile")+": Empty response"});else{var f=(new Date(d.modifiedDate)).getTime()-(new Date(z)).getTime();if(0>=f||x==d.etag||c&&A==d.headRevisionId){b.saveLevel=12;var k=[];0>=f&&k.push("invalid modified time");x==d.etag&&k.push("stale etag");c&&A==d.headRevisionId&&k.push("stale revision");var l=k.join(", ");g({message:mxResources.get("errorSavingFile")+": "+l},d);try{EditorUi.logError("Critical: Error saving to Google Drive "+b.desc.id,
+null,"from-"+A+"."+z+"-"+this.ui.hashValue(x)+"-to-"+d.headRevisionId+"."+d.modifiedDate+"-"+this.ui.hashValue(d.etag)+(0<l.length?"-errors-"+l:""),"user-"+(null!=this.user?this.user.id:"nouser")+(null!=b.sync?"-client_"+b.sync.clientId:"-nosync"))}catch(L){}}else if(b.saveLevel=null,e(d,t),null!=y){this.executeRequest({url:"/files/"+y.id+"/revisions/"+y.headRevisionId+"?supportsAllDrives=true"},mxUtils.bind(this,mxUtils.bind(this,function(b){b.pinned=!0;this.executeRequest({url:"/files/"+y.id+"/revisions/"+
+y.headRevisionId,method:"PUT",params:b})})));try{EditorUi.logEvent({category:b.convertedFrom+"-CONVERT-FILE-"+b.getHash(),action:"from_"+y.id+"."+y.headRevisionId+"-to_"+b.desc.id+"."+b.desc.headRevisionId,label:null!=this.user?"user_"+this.user.id:"nouser"+(null!=b.sync?"-client_"+b.sync.clientId:"nosync")})}catch(L){}}}}catch(L){v(L)}}),F=mxUtils.bind(this,function(e,f){b.saveLevel=4;try{null!=m&&(E.properties=m);var n=l||b.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?
+null:b.getCurrentEtag(),p=mxUtils.bind(this,function(k){b.saveLevel=5;try{var l=b.desc.mimeType!=this.xmlMimeType&&b.desc.mimeType!=this.mimeType&&b.desc.mimeType!=this.libraryMimeType,m=!0,p=null;try{p=window.setTimeout(mxUtils.bind(this,function(){m=!1;g({code:App.ERROR_TIMEOUT})}),5*this.ui.timeout)}catch(T){}this.executeRequest(this.createUploadRequest(b.getId(),E,e,c||k||l,f,k?null:n,C),mxUtils.bind(this,function(b){window.clearTimeout(p);m&&D(b)}),mxUtils.bind(this,function(c){window.clearTimeout(p);
if(m){b.saveLevel=6;try{b.isConflict(c)?this.executeRequest({url:"/files/"+b.getId()+"?supportsAllDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(e){b.saveLevel=7;try{if(null!=e&&e.etag==n)if(d<this.staleEtagMaxRetries){d++;var f=2*d*this.coolOff*(1+.1*(Math.random()-.5));window.setTimeout(q,f);"1"==urlParams.test&&EditorUi.debug("DriveClient: Stale Etag Detected","retry",d,"delay",f)}else{q(!0);try{EditorUi.logEvent({category:"STALE-ETAG-SAVE-FILE-"+b.getHash(),action:"rev_"+
-b.desc.headRevisionId+"-mod_"+b.desc.modifiedDate+"-size_"+b.getSize()+"-mime_"+b.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+(b.isAutosave()?"":"-noauto")+(b.changeListenerEnabled?"":"-nolisten")+(b.inConflictState?"-conflict":"")+(b.invalidChecksum?"-invalid":""),label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=b.sync?"-client_"+b.sync.clientId:"-nosync")})}catch(la){}}else"1"==urlParams.test&&e.headRevisionId==z&&EditorUi.debug("DriveClient: Remote Etag Changed","local",n,
-"remote",e.etag,"rev",b.desc.headRevisionId,"response",[e],"file",[b]),g(c,e)}catch(la){v(la)}}),mxUtils.bind(this,function(){g(c)})):g(c)}catch(ha){v(ha)}}}))}catch(N){v(N)}}),q=mxUtils.bind(this,function(c){b.saveLevel=9;if(c||null==n)p(c);else{var d=!0,e=null;try{e=window.setTimeout(mxUtils.bind(this,function(){d=!1;g({code:App.ERROR_TIMEOUT})}),3*this.ui.timeout)}catch(ea){}this.executeRequest({url:"/files/"+b.getId()+"?supportsAllDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(f){window.clearTimeout(e);
-if(d){b.saveLevel=10;try{null!=f&&f.headRevisionId==z?("1"==urlParams.test&&n!=f.etag&&EditorUi.debug("DriveClient: Preflight Etag Update","from",n,"to",f.etag,"rev",b.desc.headRevisionId,"response",[f],"file",[b]),n=f.etag,p(c)):g({error:{code:412}},f)}catch(N){v(N)}}}),mxUtils.bind(this,function(c){window.clearTimeout(e);d&&(b.saveLevel=11,g(c))}))}});if(B&&null==k){b.saveLevel=8;var t=new Image;t.onload=mxUtils.bind(this,function(){try{var b=this.thumbnailWidth/t.width,c=document.createElement("canvas");
-c.width=this.thumbnailWidth;c.height=Math.floor(t.height*b);c.getContext("2d").drawImage(t,0,0,c.width,c.height);var d=c.toDataURL(),d=d.substring(d.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_");G.thumbnail={image:d,mimeType:"image/png"};q(!1)}catch(ea){try{q(!1)}catch(N){v(N)}}});t.src="data:image/png;base64,"+e}else q(!1)}catch(T){v(T)}});if(B){var F=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){E(b,!0)}),g,this.ui.getCurrentFile()!=
-b?t:null,F.scale,F.border)}else E(t,!1)}catch(P){v(P)}});try{b.saveLevel=2,(f||B||b.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=G.mimeType&&"application/vnd.jgraph.mxfile"!=G.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(b){try{var c=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(J){c=null}D(c,
-"image/png")}catch(J){v(J)}})))&&D(null,null,b.constructor!=DriveLibrary)}catch(E){v(E)}}else this.ui.editor.graph.reset(),g({message:mxResources.get("readOnly")})}catch(E){v(E)}};DriveClient.prototype.insertFile=function(b,c,e,k,n,f,l){f=null!=f?f:this.xmlMimeType;b={mimeType:f,title:b};null!=e&&(b.parents=[{kind:"drive#fileLink",id:e}]);this.executeRequest(this.createUploadRequest(null,b,c,!1,l),mxUtils.bind(this,function(b){f==this.libraryMimeType?k(new DriveLibrary(this.ui,c,b)):0==b?null!=n&&
+b.desc.headRevisionId+"-mod_"+b.desc.modifiedDate+"-size_"+b.getSize()+"-mime_"+b.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+(b.isAutosave()?"":"-noauto")+(b.changeListenerEnabled?"":"-nolisten")+(b.inConflictState?"-conflict":"")+(b.invalidChecksum?"-invalid":""),label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=b.sync?"-client_"+b.sync.clientId:"-nosync")})}catch(ka){}}else"1"==urlParams.test&&e.headRevisionId==A&&EditorUi.debug("DriveClient: Remote Etag Changed","local",n,
+"remote",e.etag,"rev",b.desc.headRevisionId,"response",[e],"file",[b]),g(c,e)}catch(ka){v(ka)}}),mxUtils.bind(this,function(){g(c)})):g(c)}catch(ha){v(ha)}}}))}catch(T){v(T)}}),q=mxUtils.bind(this,function(c){b.saveLevel=9;if(c||null==n)p(c);else{var d=!0,e=null;try{e=window.setTimeout(mxUtils.bind(this,function(){d=!1;g({code:App.ERROR_TIMEOUT})}),3*this.ui.timeout)}catch(ea){}this.executeRequest({url:"/files/"+b.getId()+"?supportsAllDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(f){window.clearTimeout(e);
+if(d){b.saveLevel=10;try{null!=f&&f.headRevisionId==A?("1"==urlParams.test&&n!=f.etag&&EditorUi.debug("DriveClient: Preflight Etag Update","from",n,"to",f.etag,"rev",b.desc.headRevisionId,"response",[f],"file",[b]),n=f.etag,p(c)):g({error:{code:412}},f)}catch(T){v(T)}}}),mxUtils.bind(this,function(c){window.clearTimeout(e);d&&(b.saveLevel=11,g(c))}))}});if(B&&null==k){b.saveLevel=8;var y=new Image;y.onload=mxUtils.bind(this,function(){try{var b=this.thumbnailWidth/y.width,c=document.createElement("canvas");
+c.width=this.thumbnailWidth;c.height=Math.floor(y.height*b);c.getContext("2d").drawImage(y,0,0,c.width,c.height);var d=c.toDataURL(),d=d.substring(d.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_");E.thumbnail={image:d,mimeType:"image/png"};q(!1)}catch(ea){try{q(!1)}catch(T){v(T)}}});y.src="data:image/png;base64,"+e}else q(!1)}catch(X){v(X)}});if(B){var G=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){F(b,!0)}),g,this.ui.getCurrentFile()!=
+b?t:null,G.scale,G.border)}else F(t,!1)}catch(O){v(O)}});try{b.saveLevel=2,(f||B||b.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=E.mimeType&&"application/vnd.jgraph.mxfile"!=E.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth,mxUtils.bind(this,function(b){try{var c=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(I){c=null}D(c,
+"image/png")}catch(I){v(I)}})))&&D(null,null,b.constructor!=DriveLibrary)}catch(F){v(F)}}else this.ui.editor.graph.reset(),g({message:mxResources.get("readOnly")})}catch(F){v(F)}};DriveClient.prototype.insertFile=function(b,c,e,k,n,f,l){f=null!=f?f:this.xmlMimeType;b={mimeType:f,title:b};null!=e&&(b.parents=[{kind:"drive#fileLink",id:e}]);this.executeRequest(this.createUploadRequest(null,b,c,!1,l),mxUtils.bind(this,function(b){f==this.libraryMimeType?k(new DriveLibrary(this.ui,c,b)):0==b?null!=n&&
n({message:mxResources.get("errorSavingFile")}):k(new DriveFile(this.ui,c,b))}),n)};DriveClient.prototype.createUploadRequest=function(b,c,e,k,n,f,l){n=null!=n?n:!1;var d={"Content-Type":'multipart/mixed; boundary="-------314159265358979323846"'};null!=f&&(d["If-Match"]=f);b={fullUrl:"https://content.googleapis.com/upload/drive/v2/files"+(null!=b?"/"+b:"")+"?uploadType=multipart&supportsAllDrives=true&enforceSingleParent=true&fields="+this.allFields,method:null!=b?"PUT":"POST",headers:d,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"+(null!=e?n?e:!window.btoa||mxClient.IS_IE||mxClient.IS_IE11?Base64.encode(e):Graph.base64EncodeUnicode(e):"")+"\r\n---------314159265358979323846--"};k||(b.fullUrl+="&newRevision=false");l&&(b.fullUrl+="&pinned=true");return b};DriveClient.prototype.createLinkPicker=function(){var d=e.linkPicker;if(null==d||e.linkPickerToken!=b){e.linkPickerToken=b;var d=(new google.picker.DocsView(google.picker.ViewId.FOLDERS)).setParent("root").setIncludeFolders(!0).setSelectFolderEnabled(!0),
c=(new google.picker.DocsView).setIncludeFolders(!0).setSelectFolderEnabled(!0),g=(new google.picker.DocsView).setIncludeFolders(!0).setEnableDrives(!0).setSelectFolderEnabled(!0),d=(new google.picker.PickerBuilder).setAppId(this.appId).setLocale(mxLanguage).setOAuthToken(e.linkPickerToken).enableFeature(google.picker.Feature.SUPPORT_DRIVES).addView(d).addView(c).addView(g).addView(google.picker.ViewId.RECENTLY_PICKED)}return d};DriveClient.prototype.pickFile=function(d,c,g){this.filePickerCallback=
@@ -11482,7 +11492,7 @@ this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),d(e)):b||401!==e.getSta
function(b){var d=b.split("/");return 1<d.length?{driveId:d[0],id:d[1]}:{id:b}};OneDriveClient.prototype.getItemURL=function(b,d){var c=b.split("/");if(1<c.length){var e=c[1];return(d?"":this.baseUrl)+"/drives/"+c[0]+("root"==e?"/root":"/items/"+e)}return(d?"":this.baseUrl)+"/me/drive/items/"+b};OneDriveClient.prototype.getLibrary=function(b,d,c){this.getFile(b,d,c,!1,!0)};OneDriveClient.prototype.removeExtraHtmlContent=function(b){var d=b.lastIndexOf('<html><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"><meta name="Robots" ');
0<d&&(b=b.substring(0,d));return b};OneDriveClient.prototype.getFile=function(b,d,c,g,k){k=null!=k?k:!1;this.executeRequest(this.getItemURL(b),mxUtils.bind(this,function(b){if(200<=b.getStatus()&&299>=b.getStatus()){var e=JSON.parse(b.getText()),g=/\.png$/i.test(e.name);if(/\.v(dx|sdx?)$/i.test(e.name)||/\.gliffy$/i.test(e.name)||/\.pdf$/i.test(e.name)||!this.ui.useCanvasForExport&&g)this.ui.convertFile(e["@microsoft.graph.downloadUrl"],e.name,null!=e.file?e.file.mimeType:null,this.extension,d,c);
else{var m=!0,n=window.setTimeout(mxUtils.bind(this,function(){m=!1;c({code:App.ERROR_TIMEOUT})}),this.ui.timeout);this.ui.editor.loadUrl(e["@microsoft.graph.downloadUrl"],mxUtils.bind(this,function(b){try{if(window.clearTimeout(n),m){/\.html$/i.test(e.name)&&(b=this.removeExtraHtmlContent(b));var f=null;if(0<(g?b.lastIndexOf(","):-1)){var l=this.ui.extractGraphModelFromPng(b);null!=l&&0<l.length?b=l:f=new LocalFile(this.ui,b,e.name,!0)}else if("data:image/png;base64,PG14ZmlsZS"==b.substring(0,32)){var p=
-b.substring(22);b=window.atob&&!mxClient.IS_SF?atob(p):Base64.decode(p)}Graph.fileSupport&&(new XMLHttpRequest).upload&&this.ui.isRemoteFileFormat(b,e["@microsoft.graph.downloadUrl"])?this.ui.parseFileData(b,mxUtils.bind(this,function(b){try{4==b.readyState&&(200<=b.status&&299>=b.status?d(new LocalFile(this.ui,b.responseText,e.name+this.extension,!0)):null!=c&&c({message:mxResources.get("errorLoadingFile")}))}catch(A){if(null!=c)c(A);else throw A;}}),e.name):null!=f?d(f):k?d(new OneDriveLibrary(this.ui,
+b.substring(22);b=window.atob&&!mxClient.IS_SF?atob(p):Base64.decode(p)}Graph.fileSupport&&(new XMLHttpRequest).upload&&this.ui.isRemoteFileFormat(b,e["@microsoft.graph.downloadUrl"])?this.ui.parseFileData(b,mxUtils.bind(this,function(b){try{4==b.readyState&&(200<=b.status&&299>=b.status?d(new LocalFile(this.ui,b.responseText,e.name+this.extension,!0)):null!=c&&c({message:mxResources.get("errorLoadingFile")}))}catch(z){if(null!=c)c(z);else throw z;}}),e.name):null!=f?d(f):k?d(new OneDriveLibrary(this.ui,
b,e)):d(new OneDriveFile(this.ui,b,e))}}catch(x){if(null!=c)c(x);else throw x;}}),mxUtils.bind(this,function(b){window.clearTimeout(n);m&&c(this.parseRequestText(b))}),g||null!=e.file&&null!=e.file.mimeType&&("image/"==e.file.mimeType.substring(0,6)&&"image/svg"!=e.file.mimeType.substring(0,9)||"application/pdf"==e.file.mimeType))}}else this.isExtAuth?c({message:mxResources.get("fileNotFoundOrDenied"),ownerEmail:null!=window.urlParams?urlParams.ownerEml:null}):c(this.parseRequestText(b))}),c)};OneDriveClient.prototype.renameFile=
function(b,d,c,g){null!=b&&null!=d&&(this.isValidFilename(d)?this.checkExists(b.getParentId(),d,!1,mxUtils.bind(this,function(e){e?this.writeFile(this.getItemURL(b.getId()),JSON.stringify({name:d}),"PATCH","application/json",c,g):g()})):g({message:this.invalidFilenameRegExs[0].test(d)?mxResources.get("oneDriveCharsNotAllowed"):mxResources.get("oneDriveInvalidDeviceName")}))};OneDriveClient.prototype.moveFile=function(b,d,c,g){d=this.getItemRef(d);var e=this.getItemRef(b);d.driveId!=e.driveId?g({message:mxResources.get("cannotMoveOneDrive",
null,"Moving a file between accounts is not supported yet.")}):this.writeFile(this.getItemURL(b),JSON.stringify({parentReference:d}),"PATCH","application/json",c,g)};OneDriveClient.prototype.insertLibrary=function(b,d,c,g,k){this.insertFile(b,d,c,g,!0,k)};OneDriveClient.prototype.insertFile=function(b,d,c,g,k,n){this.isValidFilename(b)?(k=null!=k?k:!1,this.checkExists(n,b,!0,mxUtils.bind(this,function(e){if(e){e="/me/drive/root";null!=n&&(e=this.getItemURL(n,!0));var f=mxUtils.bind(this,function(b){k?
@@ -11524,7 +11534,7 @@ d+"/contents/"+c+"?ref="+g+e,null,"HEAD");this.executeRequest(b,mxUtils.bind(thi
e+"?ref="+m;var p={Authorization:"token "+b},n=e.split("/");this.ui.convertFile(k,0<n.length?n[n.length-1]:e,null,this.extension,d,c,null,p)}else c({message:mxResources.get("accessDenied")});else n="&t="+(new Date).getTime(),e=new mxXmlRequest(this.baseUrl+"/repos/"+f+"/"+l+"/contents/"+e+"?ref="+m+n,null,"GET"),this.executeRequest(e,mxUtils.bind(this,function(b){try{d(this.createGitHubFile(f,l,m,JSON.parse(b.getText()),g))}catch(t){c(t)}}),c)};GitHubClient.prototype.createGitHubFile=function(b,d,
c,g,k){b={org:b,repo:d,ref:c,name:g.name,path:g.path,sha:g.sha,html_url:g.html_url,download_url:g.download_url};d=g.content;"base64"===g.encoding&&(/\.jpe?g$/i.test(g.name)?d="data:image/jpeg;base64,"+d:/\.gif$/i.test(g.name)?d="data:image/gif;base64,"+d:/\.png$/i.test(g.name)?(g=this.ui.extractGraphModelFromPng(d),d=null!=g&&0<g.length?g:"data:image/png;base64,"+d):d=Base64.decode(d));return k?new GitHubLibrary(this.ui,d,b):new GitHubFile(this.ui,d,b)};GitHubClient.prototype.insertLibrary=function(b,
d,c,g,k){this.insertFile(b,d,c,g,!0,k,!1)};GitHubClient.prototype.insertFile=function(b,d,c,g,k,n,f){k=null!=k?k:!1;n=n.split("/");var e=n[0],m=n[1],p=n[2],q=n.slice(3,n.length).join("/");0<q.length&&(q+="/");q+=b;this.checkExists(e+"/"+m+"/"+p+"/"+q,!0,mxUtils.bind(this,function(l,n){l?k?(f||(d=Base64.encode(d)),this.showCommitDialog(b,!0,mxUtils.bind(this,function(b){this.writeFile(e,m,p,q,b,d,n,mxUtils.bind(this,function(b){try{var d=JSON.parse(b.getText());c(this.createGitHubFile(e,m,p,d.content,
-k))}catch(z){g(z)}}),g)}),g)):c(new GitHubFile(this.ui,d,{org:e,repo:m,ref:p,name:b,path:q,sha:n,isNew:!0})):g()}))};GitHubClient.prototype.showCommitDialog=function(b,d,c,g){var e=this.ui.spinner.pause();b=new FilenameDialog(this.ui,mxResources.get(d?"addedFile":"updateFile",[b]),mxResources.get("ok"),mxUtils.bind(this,function(b){e();c(b)}),mxResources.get("commitMessage"),null,null,null,null,mxUtils.bind(this,function(){g()}),null,280);this.ui.showDialog(b.container,400,80,!0,!1);b.init()};GitHubClient.prototype.writeFile=
+k))}catch(A){g(A)}}),g)}),g)):c(new GitHubFile(this.ui,d,{org:e,repo:m,ref:p,name:b,path:q,sha:n,isNew:!0})):g()}))};GitHubClient.prototype.showCommitDialog=function(b,d,c,g){var e=this.ui.spinner.pause();b=new FilenameDialog(this.ui,mxResources.get(d?"addedFile":"updateFile",[b]),mxResources.get("ok"),mxUtils.bind(this,function(b){e();c(b)}),mxResources.get("commitMessage"),null,null,null,null,mxUtils.bind(this,function(){g()}),null,280);this.ui.showDialog(b.container,400,80,!0,!1);b.init()};GitHubClient.prototype.writeFile=
function(b,d,c,g,k,n,f,l,m){n.length>=this.maxFileSize?m({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(n.length)+" / 1 MB)"}):(c={path:g,branch:decodeURIComponent(c),message:k,content:n},null!=f&&(c.sha=f),b=new mxXmlRequest(this.baseUrl+"/repos/"+b+"/"+d+"/contents/"+g,JSON.stringify(c),"PUT"),this.executeRequest(b,mxUtils.bind(this,function(b){l(b)}),mxUtils.bind(this,function(b){404==b.code&&(b.helpLink=this.baseHostUrl+"/settings/connections/applications/"+this.clientId,
b.code=null);m(b)})))};GitHubClient.prototype.checkExists=function(b,d,c){var e=b.split("/"),k=e[0],n=e[1],f=e[2];b=e.slice(3,e.length).join("/");this.getSha(k,n,b,f,mxUtils.bind(this,function(e){if(d){var f=this.ui.spinner.pause();this.ui.confirm(mxResources.get("replaceIt",[b]),function(){f();c(!0,e)},function(){f();c(!1)})}else this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){c(!1)})}),mxUtils.bind(this,function(b){c(!0)}),
!0)};GitHubClient.prototype.saveFile=function(b,d,c,g,k){var e=b.meta.org,f=b.meta.repo,l=b.meta.ref,m=b.meta.path,p=mxUtils.bind(this,function(g,n){this.writeFile(e,f,l,m,k,n,g,mxUtils.bind(this,function(c){delete b.meta.isNew;d(JSON.parse(c.getText()).content.sha)}),mxUtils.bind(this,function(b){c(b)}))}),q=mxUtils.bind(this,function(){if(this.ui.useCanvasForExport&&/(\.png)$/i.test(m)){var d=this.ui.getPngFileProperties(this.ui.fileNode);this.ui.getEmbeddedPng(mxUtils.bind(this,function(c){p(b.meta.sha,
@@ -11533,17 +11543,17 @@ function(b,d){var c=null,e=null,k=null,n=null,f=document.createElement("div");f.
m.style.overflow="auto";m.style.lineHeight="1.2em";m.style.height="274px";f.appendChild(m);var p=document.createElement("div");p.style.textOverflow="ellipsis";p.style.boxSizing="border-box";p.style.overflow="hidden";p.style.padding="4px";p.style.width="100%";var q=new CustomDialog(this.ui,f,mxUtils.bind(this,function(){d(c+"/"+e+"/"+encodeURIComponent(k)+"/"+n)}),null,null,"https://www.diagrams.net/blog/single-repository-diagrams",null,null,null,null,[[mxResources.get("refresh"),mxUtils.bind(this,
function(){y()})],[mxResources.get("authorize"),mxUtils.bind(this,function(){this.ui.openLink("test.draw.io"==window.location.hostname?"https://github.com/apps/diagrams-net-app-test":"https://github.com/apps/draw-io-app")})]]);this.ui.showDialog(q.container,420,370,!0,!0);b&&q.okButton.parentNode.removeChild(q.okButton);var t=mxUtils.bind(this,function(b,c,d,e){var f=document.createElement("a");f.setAttribute("title",b);f.style.cursor="pointer";mxUtils.write(f,b);mxEvent.addListener(f,"click",c);
e&&(f.style.textDecoration="underline");null!=d&&(b=p.cloneNode(),b.style.padding=d,b.appendChild(f),f=b);return f}),v=mxUtils.bind(this,function(b){var d=document.createElement("div");d.style.marginBottom="8px";d.appendChild(t(c+"/"+e,mxUtils.bind(this,function(){n=null;y()}),null,!0));b||(mxUtils.write(d," / "),d.appendChild(t(decodeURIComponent(k),mxUtils.bind(this,function(){n=null;B()}),null,!0)));if(null!=n&&0<n.length){var f=n.split("/");for(b=0;b<f.length;b++)(function(b){mxUtils.write(d,
-" / ");d.appendChild(t(f[b],mxUtils.bind(this,function(){n=f.slice(0,b+1).join("/");z()}),null,!0))})(b)}m.appendChild(d)}),u=mxUtils.bind(this,function(b){this.ui.handleError(b,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(n=k=e=c=null,y()):this.ui.hideDialog()}),null,{})}),x=null,A=null,z=mxUtils.bind(this,function(f){null==f&&(m.innerHTML="",f=1);var g=new mxXmlRequest(this.baseUrl+"/repos/"+c+"/"+e+"/contents/"+n+"?ref="+encodeURIComponent(k)+"&per_page=100&page="+
-f,null,"GET");this.ui.spinner.spin(m,mxResources.get("loading"));q.okButton.removeAttribute("disabled");null!=A&&(mxEvent.removeListener(m,"scroll",A),A=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var l=mxUtils.bind(this,function(){z(f+1)});mxEvent.addListener(x,"click",l);this.executeRequest(g,mxUtils.bind(this,function(g){this.ui.spinner.stop();1==f&&(v(),
-m.appendChild(t("../ [Up]",mxUtils.bind(this,function(){if(""==n)n=null,y();else{var b=n.split("/");n=b.slice(0,b.length-1).join("/");z()}}),"4px")));var l=JSON.parse(g.getText());if(null==l||0==l.length)mxUtils.write(m,mxResources.get("noFiles"));else{var q=!0,D=0;g=mxUtils.bind(this,function(f){for(var g=0;g<l.length;g++)mxUtils.bind(this,function(g,l){if(f==("dir"==g.type)){var y=p.cloneNode();y.style.backgroundColor=q?Editor.isDarkMode()?"#000000":"#eeeeee":"";q=!q;var u=document.createElement("img");
-u.src=IMAGE_PATH+"/"+("dir"==g.type?"folder.png":"file.png");u.setAttribute("align","absmiddle");u.style.marginRight="4px";u.style.marginTop="-4px";u.width=20;y.appendChild(u);y.appendChild(t(g.name+("dir"==g.type?"/":""),mxUtils.bind(this,function(){"dir"==g.type?(n=g.path,z()):b&&"file"==g.type&&(this.ui.hideDialog(),d(c+"/"+e+"/"+encodeURIComponent(k)+"/"+g.path))})));m.appendChild(y);D++}})(l[g],g)});g(!0);b&&g(!1)}}),u,!0)}),B=mxUtils.bind(this,function(b,d){null==b&&(m.innerHTML="",b=1);var f=
-new mxXmlRequest(this.baseUrl+"/repos/"+c+"/"+e+"/branches?per_page=100&page="+b,null,"GET");q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(m,mxResources.get("loading"));null!=A&&(mxEvent.removeListener(m,"scroll",A),A=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var g=mxUtils.bind(this,function(){B(b+1)});mxEvent.addListener(x,"click",
-g);this.executeRequest(f,mxUtils.bind(this,function(c){this.ui.spinner.stop();1==b&&(v(!0),m.appendChild(t("../ [Up]",mxUtils.bind(this,function(){n=null;y()}),"4px")));c=JSON.parse(c.getText());if(null==c||0==c.length)mxUtils.write(m,mxResources.get("noFiles"));else if(1==c.length&&d)k=c[0].name,n="",z();else{for(var e=0;e<c.length;e++)mxUtils.bind(this,function(b,c){var d=p.cloneNode();d.style.backgroundColor=0==c%2?Editor.isDarkMode()?"#000000":"#eeeeee":"";d.appendChild(t(b.name,mxUtils.bind(this,
-function(){k=b.name;n="";z()})));m.appendChild(d)})(c[e],e);100==c.length&&(m.appendChild(x),A=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&g()},mxEvent.addListener(m,"scroll",A))}}),u)}),y=mxUtils.bind(this,function(b){null==b&&(m.innerHTML="",b=1);var d=new mxXmlRequest(this.baseUrl+"/user/repos?per_page=100&page="+b,null,"GET");q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(m,mxResources.get("loading"));null!=A&&mxEvent.removeListener(m,"scroll",A);null!=x&&null!=
+" / ");d.appendChild(t(f[b],mxUtils.bind(this,function(){n=f.slice(0,b+1).join("/");A()}),null,!0))})(b)}m.appendChild(d)}),u=mxUtils.bind(this,function(b){this.ui.handleError(b,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(n=k=e=c=null,y()):this.ui.hideDialog()}),null,{})}),x=null,z=null,A=mxUtils.bind(this,function(f){null==f&&(m.innerHTML="",f=1);var g=new mxXmlRequest(this.baseUrl+"/repos/"+c+"/"+e+"/contents/"+n+"?ref="+encodeURIComponent(k)+"&per_page=100&page="+
+f,null,"GET");this.ui.spinner.spin(m,mxResources.get("loading"));q.okButton.removeAttribute("disabled");null!=z&&(mxEvent.removeListener(m,"scroll",z),z=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var l=mxUtils.bind(this,function(){A(f+1)});mxEvent.addListener(x,"click",l);this.executeRequest(g,mxUtils.bind(this,function(g){this.ui.spinner.stop();1==f&&(v(),
+m.appendChild(t("../ [Up]",mxUtils.bind(this,function(){if(""==n)n=null,y();else{var b=n.split("/");n=b.slice(0,b.length-1).join("/");A()}}),"4px")));var l=JSON.parse(g.getText());if(null==l||0==l.length)mxUtils.write(m,mxResources.get("noFiles"));else{var q=!0,D=0;g=mxUtils.bind(this,function(f){for(var g=0;g<l.length;g++)mxUtils.bind(this,function(g,l){if(f==("dir"==g.type)){var y=p.cloneNode();y.style.backgroundColor=q?Editor.isDarkMode()?"#000000":"#eeeeee":"";q=!q;var C=document.createElement("img");
+C.src=IMAGE_PATH+"/"+("dir"==g.type?"folder.png":"file.png");C.setAttribute("align","absmiddle");C.style.marginRight="4px";C.style.marginTop="-4px";C.width=20;y.appendChild(C);y.appendChild(t(g.name+("dir"==g.type?"/":""),mxUtils.bind(this,function(){"dir"==g.type?(n=g.path,A()):b&&"file"==g.type&&(this.ui.hideDialog(),d(c+"/"+e+"/"+encodeURIComponent(k)+"/"+g.path))})));m.appendChild(y);D++}})(l[g],g)});g(!0);b&&g(!1)}}),u,!0)}),B=mxUtils.bind(this,function(b,d){null==b&&(m.innerHTML="",b=1);var f=
+new mxXmlRequest(this.baseUrl+"/repos/"+c+"/"+e+"/branches?per_page=100&page="+b,null,"GET");q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(m,mxResources.get("loading"));null!=z&&(mxEvent.removeListener(m,"scroll",z),z=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var g=mxUtils.bind(this,function(){B(b+1)});mxEvent.addListener(x,"click",
+g);this.executeRequest(f,mxUtils.bind(this,function(c){this.ui.spinner.stop();1==b&&(v(!0),m.appendChild(t("../ [Up]",mxUtils.bind(this,function(){n=null;y()}),"4px")));c=JSON.parse(c.getText());if(null==c||0==c.length)mxUtils.write(m,mxResources.get("noFiles"));else if(1==c.length&&d)k=c[0].name,n="",A();else{for(var e=0;e<c.length;e++)mxUtils.bind(this,function(b,c){var d=p.cloneNode();d.style.backgroundColor=0==c%2?Editor.isDarkMode()?"#000000":"#eeeeee":"";d.appendChild(t(b.name,mxUtils.bind(this,
+function(){k=b.name;n="";A()})));m.appendChild(d)})(c[e],e);100==c.length&&(m.appendChild(x),z=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&g()},mxEvent.addListener(m,"scroll",z))}}),u)}),y=mxUtils.bind(this,function(b){null==b&&(m.innerHTML="",b=1);var d=new mxXmlRequest(this.baseUrl+"/user/repos?per_page=100&page="+b,null,"GET");q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(m,mxResources.get("loading"));null!=z&&mxEvent.removeListener(m,"scroll",z);null!=x&&null!=
x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var f=mxUtils.bind(this,function(){y(b+1)});mxEvent.addListener(x,"click",f);this.executeRequest(d,mxUtils.bind(this,function(d){this.ui.spinner.stop();d=JSON.parse(d.getText());if(null==d||0==d.length)mxUtils.write(m,mxResources.get("noFiles"));else{1==b&&(m.appendChild(t(mxResources.get("enterValue")+"...",mxUtils.bind(this,function(){var b=
-new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this,function(b){if(null!=b){var d=b.split("/");if(1<d.length){b=d[0];var f=d[1];3>d.length?(c=b,e=f,n=k=null,B()):this.ui.spinner.spin(m,mxResources.get("loading"))&&(d=encodeURIComponent(d.slice(2,d.length).join("/")),this.getFile(b+"/"+f+"/"+d,mxUtils.bind(this,function(b){this.ui.spinner.stop();c=b.meta.org;e=b.meta.repo;k=decodeURIComponent(b.meta.ref);n="";z()}),mxUtils.bind(this,function(b){this.ui.spinner.stop();
+new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this,function(b){if(null!=b){var d=b.split("/");if(1<d.length){b=d[0];var f=d[1];3>d.length?(c=b,e=f,n=k=null,B()):this.ui.spinner.spin(m,mxResources.get("loading"))&&(d=encodeURIComponent(d.slice(2,d.length).join("/")),this.getFile(b+"/"+f+"/"+d,mxUtils.bind(this,function(b){this.ui.spinner.stop();c=b.meta.org;e=b.meta.repo;k=decodeURIComponent(b.meta.ref);n="";A()}),mxUtils.bind(this,function(b){this.ui.spinner.stop();
this.ui.handleError({message:mxResources.get("fileNotFound")})})))}else this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})}}),mxResources.get("enterValue"));this.ui.showDialog(b.container,300,80,!0,!1);b.init()}))),mxUtils.br(m),mxUtils.br(m));for(var g=0;g<d.length;g++)mxUtils.bind(this,function(b,d){var f=p.cloneNode();f.style.backgroundColor=0==d%2?Editor.isDarkMode()?"#000000":"#eeeeee":"";f.appendChild(t(b.full_name,mxUtils.bind(this,function(){c=b.owner.login;
-e=b.name;n="";B(null,!0)})));m.appendChild(f)})(d[g],g)}100==d.length&&(m.appendChild(x),A=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&f()},mxEvent.addListener(m,"scroll",A))}),u)});y()};GitHubClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);b=null}})();TrelloFile=function(b,e,d){DrawioFile.call(this,b,e);this.meta=d;this.saveNeededCounter=0};mxUtils.extend(TrelloFile,DrawioFile);TrelloFile.prototype.getHash=function(){return"T"+encodeURIComponent(this.meta.compoundId)};TrelloFile.prototype.getMode=function(){return App.MODE_TRELLO};TrelloFile.prototype.isAutosave=function(){return!0};TrelloFile.prototype.getTitle=function(){return this.meta.name};TrelloFile.prototype.isRenamable=function(){return!1};TrelloFile.prototype.getSize=function(){return this.meta.bytes};
+e=b.name;n="";B(null,!0)})));m.appendChild(f)})(d[g],g)}100==d.length&&(m.appendChild(x),z=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&f()},mxEvent.addListener(m,"scroll",z))}),u)});y()};GitHubClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);b=null}})();TrelloFile=function(b,e,d){DrawioFile.call(this,b,e);this.meta=d;this.saveNeededCounter=0};mxUtils.extend(TrelloFile,DrawioFile);TrelloFile.prototype.getHash=function(){return"T"+encodeURIComponent(this.meta.compoundId)};TrelloFile.prototype.getMode=function(){return App.MODE_TRELLO};TrelloFile.prototype.isAutosave=function(){return!0};TrelloFile.prototype.getTitle=function(){return this.meta.name};TrelloFile.prototype.isRenamable=function(){return!1};TrelloFile.prototype.getSize=function(){return this.meta.bytes};
TrelloFile.prototype.save=function(b,e,d){this.doSave(this.getTitle(),e,d)};TrelloFile.prototype.saveAs=function(b,e,d){this.doSave(b,e,d)};TrelloFile.prototype.doSave=function(b,e,d){var c=this.meta.name;this.meta.name=b;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.meta.name=c;this.saveFile(b,!1,e,d)}),d])};
TrelloFile.prototype.saveFile=function(b,e,d,c){this.isEditable()?this.savingFile?null!=c&&(this.saveNeededCounter++,c({code:App.ERROR_BUSY})):(this.savingFileTime=new Date,this.setShadowModified(!1),this.savingFile=!0,this.getTitle()==b?this.ui.trello.saveFile(this,mxUtils.bind(this,function(g){this.setModified(this.getShadowModified());this.savingFile=!1;this.meta=g;this.contentChanged();null!=d&&d();0<this.saveNeededCounter&&(this.saveNeededCounter--,this.saveFile(b,e,d,c))}),mxUtils.bind(this,
function(b){this.savingFile=!1;null!=c&&c(b)})):this.ui.pickFolder(App.MODE_TRELLO,mxUtils.bind(this,function(g){this.ui.trello.insertFile(b,this.getData(),mxUtils.bind(this,function(g){this.savingFile=!1;null!=d&&d();this.ui.fileLoaded(g);0<this.saveNeededCounter&&(this.saveNeededCounter--,this.saveFile(b,e,d,c))}),mxUtils.bind(this,function(){this.savingFile=!1;null!=c&&c()}),!1,g)}))):null!=d&&d()};TrelloLibrary=function(b,e,d){TrelloFile.call(this,b,e,d)};mxUtils.extend(TrelloLibrary,TrelloFile);TrelloLibrary.prototype.doSave=function(b,e,d){this.saveFile(b,!1,e,d)};TrelloLibrary.prototype.open=function(){};TrelloClient=function(b){DrawioClient.call(this,b,"tauth");Trello.setKey(this.key)};mxUtils.extend(TrelloClient,DrawioClient);TrelloClient.prototype.key="e89d109082298ce91f6576f82f458551";TrelloClient.prototype.baseUrl="https://api.trello.com/1/";TrelloClient.prototype.SEPARATOR="|$|";TrelloClient.prototype.maxFileSize=1E7;TrelloClient.prototype.extension=".xml";
@@ -11587,19 +11597,19 @@ this.ui.getEmbeddedPng(mxUtils.bind(this,function(c){p(b.meta.last_commit_id,c)}
encodeURIComponent(b))});this.showGitLabDialog(!0,b)};GitLabClient.prototype.showGitLabDialog=function(e,d){var c=null,g=null,k=null,n=null,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.overflow="hidden";f.style.height="304px";var l=document.createElement("h3");mxUtils.write(l,mxResources.get(e?"selectFile":"selectFolder"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(l);var m=document.createElement("div");m.style.whiteSpace=
"nowrap";m.style.border="1px solid lightgray";m.style.boxSizing="border-box";m.style.padding="4px";m.style.overflow="auto";m.style.lineHeight="1.2em";m.style.height="274px";f.appendChild(m);var p=document.createElement("div");p.style.textOverflow="ellipsis";p.style.boxSizing="border-box";p.style.overflow="hidden";p.style.padding="4px";p.style.width="100%";var q=new CustomDialog(this.ui,f,mxUtils.bind(this,function(){d(c+"/"+g+"/"+encodeURIComponent(k)+"/"+n)}));this.ui.showDialog(q.container,420,
370,!0,!0);e&&q.okButton.parentNode.removeChild(q.okButton);var t=mxUtils.bind(this,function(b,c,d,e){var f=document.createElement("a");f.setAttribute("title",b);f.style.cursor="pointer";mxUtils.write(f,b);mxEvent.addListener(f,"click",c);e&&(f.style.textDecoration="underline");null!=d&&(b=p.cloneNode(),b.style.padding=d,b.appendChild(f),f=b);return f}),v=mxUtils.bind(this,function(b){var d=document.createElement("div");d.style.marginBottom="8px";d.appendChild(t(c+"/"+g,mxUtils.bind(this,function(){n=
-null;y()}),null,!0));b||(mxUtils.write(d," / "),d.appendChild(t(decodeURIComponent(k),mxUtils.bind(this,function(){n=null;B()}),null,!0)));if(null!=n&&0<n.length){var e=n.split("/");for(b=0;b<e.length;b++)(function(b){mxUtils.write(d," / ");d.appendChild(t(e[b],mxUtils.bind(this,function(){n=e.slice(0,b+1).join("/");z()}),null,!0))})(b)}m.appendChild(d)}),u=mxUtils.bind(this,function(b){this.ui.handleError(b,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(n=k=g=c=null,
-y()):this.ui.hideDialog()}))}),x=null,A=null,z=mxUtils.bind(this,function(b){null==b&&(m.innerHTML="",b=1);var f=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(c+"/"+g)+"/repository/tree?path="+n+"&ref="+k+"&per_page=100&page="+b,null,"GET");this.ui.spinner.spin(m,mxResources.get("loading"));q.okButton.removeAttribute("disabled");null!=A&&(mxEvent.removeListener(m,"scroll",A),A=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display=
-"block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var l=mxUtils.bind(this,function(){z(b+1)});mxEvent.addListener(x,"click",l);this.executeRequest(f,mxUtils.bind(this,function(f){this.ui.spinner.stop();1==b&&(v(!k),m.appendChild(t("../ [Up]",mxUtils.bind(this,function(){if(""==n)n=null,y();else{var b=n.split("/");n=b.slice(0,b.length-1).join("/");z()}}),"4px")));var q=JSON.parse(f.getText());if(null==q||0==q.length)mxUtils.write(m,mxResources.get("noFiles"));else{var D=
-!0,u=0;f=mxUtils.bind(this,function(b){for(var f=0;f<q.length;f++)mxUtils.bind(this,function(f){if(b==("tree"==f.type)){var l=p.cloneNode();l.style.backgroundColor=D?Editor.isDarkMode()?"#000000":"#eeeeee":"";D=!D;var q=document.createElement("img");q.src=IMAGE_PATH+"/"+("tree"==f.type?"folder.png":"file.png");q.setAttribute("align","absmiddle");q.style.marginRight="4px";q.style.marginTop="-4px";q.width=20;l.appendChild(q);l.appendChild(t(f.name+("tree"==f.type?"/":""),mxUtils.bind(this,function(){"tree"==
-f.type?(n=f.path,z()):e&&"blob"==f.type&&(this.ui.hideDialog(),d(c+"/"+g+"/"+k+"/"+f.path))})));m.appendChild(l);u++}})(q[f])});f(!0);e&&f(!1);100==u&&(m.appendChild(x),A=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&l()},mxEvent.addListener(m,"scroll",A))}}),u,!0)}),B=mxUtils.bind(this,function(b,d){null==b&&(m.innerHTML="",b=1);var e=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(c+"/"+g)+"/repository/branches?per_page=100&page="+b,null,"GET");q.okButton.setAttribute("disabled",
-"disabled");this.ui.spinner.spin(m,mxResources.get("loading"));null!=A&&(mxEvent.removeListener(m,"scroll",A),A=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var f=mxUtils.bind(this,function(){B(b+1)});mxEvent.addListener(x,"click",f);this.executeRequest(e,mxUtils.bind(this,function(c){this.ui.spinner.stop();1==b&&(v(!0),m.appendChild(t("../ [Up]",mxUtils.bind(this,
-function(){n=null;y()}),"4px")));c=JSON.parse(c.getText());if(null==c||0==c.length)mxUtils.write(m,mxResources.get("noFiles"));else if(1==c.length&&d)k=c[0].name,n="",z();else{for(var e=0;e<c.length;e++)mxUtils.bind(this,function(b,c){var d=p.cloneNode();d.style.backgroundColor=0==c%2?Editor.isDarkMode()?"#000000":"#eeeeee":"";d.appendChild(t(b.name,mxUtils.bind(this,function(){k=encodeURIComponent(b.name);n="";z()})));m.appendChild(d)})(c[e],e);100==c.length&&(m.appendChild(x),A=function(){m.scrollTop>=
-m.scrollHeight-m.offsetHeight&&f()},mxEvent.addListener(m,"scroll",A))}}),u)});q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(m,mxResources.get("loading"));var y=mxUtils.bind(this,function(b){var d=this.ui.spinner,e=0;this.ui.spinner.stop();var f=function(){d.spin(m,mxResources.get("loading"));e+=1},l=function(){--e;0===e&&d.stop()};null==b&&(m.innerHTML="",b=1);null!=A&&(mxEvent.removeListener(m,"scroll",A),A=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");
+null;y()}),null,!0));b||(mxUtils.write(d," / "),d.appendChild(t(decodeURIComponent(k),mxUtils.bind(this,function(){n=null;B()}),null,!0)));if(null!=n&&0<n.length){var e=n.split("/");for(b=0;b<e.length;b++)(function(b){mxUtils.write(d," / ");d.appendChild(t(e[b],mxUtils.bind(this,function(){n=e.slice(0,b+1).join("/");A()}),null,!0))})(b)}m.appendChild(d)}),u=mxUtils.bind(this,function(b){this.ui.handleError(b,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(n=k=g=c=null,
+y()):this.ui.hideDialog()}))}),x=null,z=null,A=mxUtils.bind(this,function(b){null==b&&(m.innerHTML="",b=1);var f=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(c+"/"+g)+"/repository/tree?path="+n+"&ref="+k+"&per_page=100&page="+b,null,"GET");this.ui.spinner.spin(m,mxResources.get("loading"));q.okButton.removeAttribute("disabled");null!=z&&(mxEvent.removeListener(m,"scroll",z),z=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display=
+"block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var l=mxUtils.bind(this,function(){A(b+1)});mxEvent.addListener(x,"click",l);this.executeRequest(f,mxUtils.bind(this,function(f){this.ui.spinner.stop();1==b&&(v(!k),m.appendChild(t("../ [Up]",mxUtils.bind(this,function(){if(""==n)n=null,y();else{var b=n.split("/");n=b.slice(0,b.length-1).join("/");A()}}),"4px")));var q=JSON.parse(f.getText());if(null==q||0==q.length)mxUtils.write(m,mxResources.get("noFiles"));else{var D=
+!0,C=0;f=mxUtils.bind(this,function(b){for(var f=0;f<q.length;f++)mxUtils.bind(this,function(f){if(b==("tree"==f.type)){var l=p.cloneNode();l.style.backgroundColor=D?Editor.isDarkMode()?"#000000":"#eeeeee":"";D=!D;var q=document.createElement("img");q.src=IMAGE_PATH+"/"+("tree"==f.type?"folder.png":"file.png");q.setAttribute("align","absmiddle");q.style.marginRight="4px";q.style.marginTop="-4px";q.width=20;l.appendChild(q);l.appendChild(t(f.name+("tree"==f.type?"/":""),mxUtils.bind(this,function(){"tree"==
+f.type?(n=f.path,A()):e&&"blob"==f.type&&(this.ui.hideDialog(),d(c+"/"+g+"/"+k+"/"+f.path))})));m.appendChild(l);C++}})(q[f])});f(!0);e&&f(!1);100==C&&(m.appendChild(x),z=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&l()},mxEvent.addListener(m,"scroll",z))}}),u,!0)}),B=mxUtils.bind(this,function(b,d){null==b&&(m.innerHTML="",b=1);var e=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(c+"/"+g)+"/repository/branches?per_page=100&page="+b,null,"GET");q.okButton.setAttribute("disabled",
+"disabled");this.ui.spinner.spin(m,mxResources.get("loading"));null!=z&&(mxEvent.removeListener(m,"scroll",z),z=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var f=mxUtils.bind(this,function(){B(b+1)});mxEvent.addListener(x,"click",f);this.executeRequest(e,mxUtils.bind(this,function(c){this.ui.spinner.stop();1==b&&(v(!0),m.appendChild(t("../ [Up]",mxUtils.bind(this,
+function(){n=null;y()}),"4px")));c=JSON.parse(c.getText());if(null==c||0==c.length)mxUtils.write(m,mxResources.get("noFiles"));else if(1==c.length&&d)k=c[0].name,n="",A();else{for(var e=0;e<c.length;e++)mxUtils.bind(this,function(b,c){var d=p.cloneNode();d.style.backgroundColor=0==c%2?Editor.isDarkMode()?"#000000":"#eeeeee":"";d.appendChild(t(b.name,mxUtils.bind(this,function(){k=encodeURIComponent(b.name);n="";A()})));m.appendChild(d)})(c[e],e);100==c.length&&(m.appendChild(x),z=function(){m.scrollTop>=
+m.scrollHeight-m.offsetHeight&&f()},mxEvent.addListener(m,"scroll",z))}}),u)});q.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(m,mxResources.get("loading"));var y=mxUtils.bind(this,function(b){var d=this.ui.spinner,e=0;this.ui.spinner.stop();var f=function(){d.spin(m,mxResources.get("loading"));e+=1},l=function(){--e;0===e&&d.stop()};null==b&&(m.innerHTML="",b=1);null!=z&&(mxEvent.removeListener(m,"scroll",z),z=null);null!=x&&null!=x.parentNode&&x.parentNode.removeChild(x);x=document.createElement("a");
x.style.display="block";x.style.cursor="pointer";mxUtils.write(x,mxResources.get("more")+"...");var q=mxUtils.bind(this,function(){0===e&&y(b+1)});mxEvent.addListener(x,"click",q);var v=mxUtils.bind(this,function(b){f();var c=new mxXmlRequest(this.baseUrl+"/groups?per_page=100",null,"GET");this.executeRequest(c,mxUtils.bind(this,function(c){b(JSON.parse(c.getText()));l()}),u)}),C=mxUtils.bind(this,function(b,c){f();var d=new mxXmlRequest(this.baseUrl+"/groups/"+b.id+"/projects?per_page=100",null,
"GET");this.executeRequest(d,mxUtils.bind(this,function(d){c(b,JSON.parse(d.getText()));l()}),u)});v(mxUtils.bind(this,function(d){if(null==this.user)mxUtils.write(m,mxResources.get("loggedOut"));else{f();var y=new mxXmlRequest(this.baseUrl+"/users/"+this.user.id+"/projects?per_page=100&page="+b,null,"GET");this.executeRequest(y,mxUtils.bind(this,function(y){y=JSON.parse(y.getText());if(null!=y&&0!=y.length||null!=d&&0!=d.length){1==b&&(m.appendChild(t(mxResources.get("enterValue")+"...",mxUtils.bind(this,
-function(){if(0===e){var b=new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this,function(b){null!=b&&(b=b.split("/"),1<b.length?(c=b[0],g=b[1],k=n=null,2<b.length?(k=encodeURIComponent(b.slice(2,b.length).join("/")),z()):B(null,!0)):(this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})))}),mxResources.get("enterValue"));this.ui.showDialog(b.container,300,80,!0,!1);b.init()}}))),mxUtils.br(m),mxUtils.br(m));for(var u=!0,D=0;D<y.length;D++)mxUtils.bind(this,
-function(b){var d=p.cloneNode();d.style.backgroundColor=u?Editor.isDarkMode()?"#000000":"#eeeeee":"";u=!u;d.appendChild(t(b.name_with_namespace,mxUtils.bind(this,function(){0===e&&(c=b.owner.username,g=b.path,n="",B(null,!0))})));m.appendChild(d)})(y[D]);for(D=0;D<d.length;D++)f(),C(d[D],mxUtils.bind(this,function(b,d){l();for(var f=0;f<d.length;f++){var k=p.cloneNode();k.style.backgroundColor=u?"dark"==uiTheme?"#000000":"#eeeeee":"";u=!u;mxUtils.bind(this,function(d){k.appendChild(t(d.name_with_namespace,
-mxUtils.bind(this,function(){0===e&&(c=b.full_path,g=d.path,n="",B(null,!0))})));m.appendChild(k)})(d[f])}}));l()}else l(),mxUtils.write(m,mxResources.get("noFiles"));100==y.length&&(m.appendChild(x),A=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&q()},mxEvent.addListener(m,"scroll",A))}),u)}}))});b?this.user?y():this.updateUser(function(){y()},u,!0):this.authenticate(mxUtils.bind(this,function(){this.updateUser(function(){y()},u,!0)}),u)};GitLabClient.prototype.logout=function(){this.ui.editor.loadUrl(this.redirectUri+
+function(){if(0===e){var b=new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this,function(b){null!=b&&(b=b.split("/"),1<b.length?(c=b[0],g=b[1],k=n=null,2<b.length?(k=encodeURIComponent(b.slice(2,b.length).join("/")),A()):B(null,!0)):(this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})))}),mxResources.get("enterValue"));this.ui.showDialog(b.container,300,80,!0,!1);b.init()}}))),mxUtils.br(m),mxUtils.br(m));for(var D=!0,v=0;v<y.length;v++)mxUtils.bind(this,
+function(b){var d=p.cloneNode();d.style.backgroundColor=D?Editor.isDarkMode()?"#000000":"#eeeeee":"";D=!D;d.appendChild(t(b.name_with_namespace,mxUtils.bind(this,function(){0===e&&(c=b.owner.username,g=b.path,n="",B(null,!0))})));m.appendChild(d)})(y[v]);for(v=0;v<d.length;v++)f(),C(d[v],mxUtils.bind(this,function(b,d){l();for(var f=0;f<d.length;f++){var k=p.cloneNode();k.style.backgroundColor=D?"dark"==uiTheme?"#000000":"#eeeeee":"";D=!D;mxUtils.bind(this,function(d){k.appendChild(t(d.name_with_namespace,
+mxUtils.bind(this,function(){0===e&&(c=b.full_path,g=d.path,n="",B(null,!0))})));m.appendChild(k)})(d[f])}}));l()}else l(),mxUtils.write(m,mxResources.get("noFiles"));100==y.length&&(m.appendChild(x),z=function(){m.scrollTop>=m.scrollHeight-m.offsetHeight&&q()},mxEvent.addListener(m,"scroll",z))}),u)}}))});b?this.user?y():this.updateUser(function(){y()},u,!0):this.authenticate(mxUtils.bind(this,function(){this.updateUser(function(){y()},u,!0)}),u)};GitLabClient.prototype.logout=function(){this.ui.editor.loadUrl(this.redirectUri+
"?doLogout=1&state="+encodeURIComponent("cId="+this.clientId+"&domain="+window.location.hostname));this.clearPersistentToken();this.setUser(null);b=null;this.setToken(null)}})();NotionFile=function(b,e,d){DrawioFile.call(this,b,e);this.meta=d;this.peer=this.ui.notion};mxUtils.extend(NotionFile,DrawioFile);NotionFile.prototype.getId=function(){return this.meta.id};NotionFile.prototype.getHash=function(){return encodeURIComponent("N"+this.getId())};NotionFile.prototype.getMode=function(){return App.MODE_NOTION};NotionFile.prototype.isAutosave=function(){return!1};NotionFile.prototype.getTitle=function(){return this.meta.name};NotionFile.prototype.getNameField=function(){return this.meta.nameField};
NotionFile.prototype.isRenamable=function(){return!1};NotionFile.prototype.isCompressedStorage=function(){return!0};NotionFile.prototype.save=function(b,e,d,c,g){this.doSave(this.getTitle(),e,d,c,g)};NotionFile.prototype.saveAs=function(b,e,d){this.doSave(b,e,d)};NotionFile.prototype.doSave=function(b,e,d,c,g){var k=this.meta.name;this.meta.name=b;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.meta.name=k;this.saveFile(b,!1,e,d,c,g)}),d,c,g])};
NotionFile.prototype.saveFile=function(b,e,d,c,g,k){if(this.isEditable())if(this.savingFile)null!=c&&c({code:App.ERROR_BUSY});else if(this.getTitle()==b)try{this.savingFileTime=new Date,this.setShadowModified(!1),this.savingFile=!0,this.peer.saveFile(this,mxUtils.bind(this,function(){this.setModified(this.getShadowModified());this.savingFile=!1;null!=d&&d()}),mxUtils.bind(this,function(b){this.savingFile=!1;null!=c&&c(b)}),k)}catch(n){if(this.savingFile=!1,null!=c)c(n);else throw n;}else this.savingFileTime=
@@ -11616,34 +11626,34 @@ b&&null!=k)if(2E5<k.length)l({message:mxResources.get("drawingTooLarge")+" ("+th
function(b){var d={message:mxResources.get("unknownError")};try{d=JSON.parse(b.getText())}catch(c){}return d};NotionClient.prototype.pickLibrary=function(b){this.pickFile(b)};NotionClient.prototype.pickFolder=function(b){this.showNotionDialog(!1,b)};NotionClient.prototype.pickFile=function(b){b=null!=b?b:mxUtils.bind(this,function(b){this.ui.loadFile("N"+encodeURIComponent(b))});this.showNotionDialog(!0,b)};NotionClient.prototype.showNotionDialog=function(b,d){var c,e,k=document.createElement("div");
k.style.whiteSpace="nowrap";k.style.overflow="hidden";k.style.height="304px";var n=document.createElement("h3");mxUtils.write(n,mxResources.get(b?"officeSelDiag":"selectDB"));n.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";k.appendChild(n);var f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.border="1px solid lightgray";f.style.boxSizing="border-box";f.style.padding="4px";f.style.overflow="auto";f.style.lineHeight="1.2em";f.style.height="274px";
k.appendChild(f);var l=document.createElement("div");l.style.textOverflow="ellipsis";l.style.boxSizing="border-box";l.style.overflow="hidden";l.style.padding="4px";l.style.width="100%";var m=new CustomDialog(this.ui,k,mxUtils.bind(this,function(){d(c)}));this.ui.showDialog(m.container,420,380,!0,!0);b&&m.okButton.parentNode.removeChild(m.okButton);var p=mxUtils.bind(this,function(b,c,d,e){var f=document.createElement("a");f.setAttribute("title",b);f.style.cursor="pointer";mxUtils.write(f,b);mxEvent.addListener(f,
-"click",c);e&&(f.style.textDecoration="underline");null!=d&&(b=l.cloneNode(),b.style.padding=d,b.appendChild(f),f=b);return f}),q=mxUtils.bind(this,function(){var b=document.createElement("div");b.style.marginBottom="8px";b.appendChild(p(e,mxUtils.bind(this,function(){c=null;A()}),null,!0));f.appendChild(b)}),t=mxUtils.bind(this,function(b){this.ui.handleError(b,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(c=null,A()):this.ui.hideDialog()}),null,{})}),v=null,u=null,
+"click",c);e&&(f.style.textDecoration="underline");null!=d&&(b=l.cloneNode(),b.style.padding=d,b.appendChild(f),f=b);return f}),q=mxUtils.bind(this,function(){var b=document.createElement("div");b.style.marginBottom="8px";b.appendChild(p(e,mxUtils.bind(this,function(){c=null;z()}),null,!0));f.appendChild(b)}),t=mxUtils.bind(this,function(b){this.ui.handleError(b,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(c=null,z()):this.ui.hideDialog()}),null,{})}),v=null,u=null,
x=mxUtils.bind(this,function(b){null==b&&(f.innerHTML="");this.ui.spinner.spin(f,mxResources.get("loading"));m.okButton.removeAttribute("disabled");null!=u&&(mxEvent.removeListener(f,"scroll",u),u=null);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.style.cursor="pointer";mxUtils.write(v,mxResources.get("more")+"...");var e=mxUtils.bind(this,function(){x(b)});mxEvent.addListener(v,"click",e);var g={page_size:100};null!=b&&(g.start_cursor=
-b);this.executeRequest("/v1/databases/"+encodeURIComponent(c)+"/query",JSON.stringify(g),"POST",mxUtils.bind(this,function(g){this.ui.spinner.stop();null==b&&(q(),f.appendChild(p("../ [Up]",mxUtils.bind(this,function(){c=null;A()}),"4px")));var k=g.results;if(null==k||0==k.length)mxUtils.write(f,mxResources.get("noFiles"));else{for(var m=!0,n=0;n<k.length;n++)mxUtils.bind(this,function(b,c){var e=l.cloneNode();e.style.backgroundColor=m?Editor.isDarkMode()?"#000000":"#eeeeee":"";m=!m;var g=document.createElement("img");
-g.src=IMAGE_PATH+"/file.png";g.setAttribute("align","absmiddle");g.style.marginRight="4px";g.style.marginTop="-4px";g.width=20;e.appendChild(g);e.appendChild(p(this.getTitle(b.properties).title,mxUtils.bind(this,function(){this.ui.hideDialog();d(b.id)})));f.appendChild(e)})(k[n],n);g.has_more&&(b=g.next_cursor,f.appendChild(v),u=function(){f.scrollTop>=f.scrollHeight-f.offsetHeight&&e()},mxEvent.addListener(f,"scroll",u))}}),t,!0)}),A=mxUtils.bind(this,function(g){null==g&&(f.innerHTML="");m.okButton.setAttribute("disabled",
-"disabled");this.ui.spinner.spin(f,mxResources.get("loading"));null!=u&&mxEvent.removeListener(f,"scroll",u);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.style.cursor="pointer";mxUtils.write(v,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){A(g)});mxEvent.addListener(v,"click",k);this.executeRequest("/v1/databases?page_size=100"+(null!=g?"&start_cursor="+g:""),null,"GET",mxUtils.bind(this,function(m){this.ui.spinner.stop();
+b);this.executeRequest("/v1/databases/"+encodeURIComponent(c)+"/query",JSON.stringify(g),"POST",mxUtils.bind(this,function(g){this.ui.spinner.stop();null==b&&(q(),f.appendChild(p("../ [Up]",mxUtils.bind(this,function(){c=null;z()}),"4px")));var k=g.results;if(null==k||0==k.length)mxUtils.write(f,mxResources.get("noFiles"));else{for(var m=!0,n=0;n<k.length;n++)mxUtils.bind(this,function(b,c){var e=l.cloneNode();e.style.backgroundColor=m?Editor.isDarkMode()?"#000000":"#eeeeee":"";m=!m;var g=document.createElement("img");
+g.src=IMAGE_PATH+"/file.png";g.setAttribute("align","absmiddle");g.style.marginRight="4px";g.style.marginTop="-4px";g.width=20;e.appendChild(g);e.appendChild(p(this.getTitle(b.properties).title,mxUtils.bind(this,function(){this.ui.hideDialog();d(b.id)})));f.appendChild(e)})(k[n],n);g.has_more&&(b=g.next_cursor,f.appendChild(v),u=function(){f.scrollTop>=f.scrollHeight-f.offsetHeight&&e()},mxEvent.addListener(f,"scroll",u))}}),t,!0)}),z=mxUtils.bind(this,function(g){null==g&&(f.innerHTML="");m.okButton.setAttribute("disabled",
+"disabled");this.ui.spinner.spin(f,mxResources.get("loading"));null!=u&&mxEvent.removeListener(f,"scroll",u);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.style.cursor="pointer";mxUtils.write(v,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){z(g)});mxEvent.addListener(v,"click",k);this.executeRequest("/v1/databases?page_size=100"+(null!=g?"&start_cursor="+g:""),null,"GET",mxUtils.bind(this,function(m){this.ui.spinner.stop();
var n=m.results,q=0;if(null==n||0==n.length)mxUtils.write(f,mxResources.get("noDBs"));else for(var y=0;y<n.length;y++){var t=n[y].properties[this.xmlField]&&"rich_text"==n[y].properties[this.xmlField].type;if(!b||t)mxUtils.bind(this,function(g,k,m){var n=l.cloneNode();n.style.backgroundColor=0==k%2?Editor.isDarkMode()?"#000000":"#eeeeee":"";n.appendChild(p(this.getTitleVal(g),mxUtils.bind(this,function(){c=g.id;e=this.getTitleVal(g);b?x():(this.ui.hideDialog(),d({id:c,drawioReady:m,schema:g}))})));
-f.appendChild(n)})(n[y],y,t),q++}m.has_more?(g=m.next_cursor,0==q?k():(f.appendChild(v),u=function(){f.scrollTop>=f.scrollHeight-f.offsetHeight&&k()},mxEvent.addListener(f,"scroll",u))):0==q&&""==f.innerHTML&&mxUtils.write(f,mxResources.get("noDBs"))}),t)});A()};NotionClient.prototype.logout=function(){this.executeRequest("/removeToken",null,"GET",function(){},function(){});this.setUser(null);b=null}})();DrawioComment=function(b,e,d,c,g,k,n){this.file=b;this.id=e;this.content=d;this.modifiedDate=c;this.createdDate=g;this.isResolved=k;this.user=n;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,e,d,c,g){e()};DrawioComment.prototype.editComment=function(b,e,d){e()};DrawioComment.prototype.deleteComment=function(b,e){b()};DriveComment=function(b,e,d,c,g,k,n,f){DrawioComment.call(this,b,e,d,c,g,k,n);this.pCommentId=f};mxUtils.extend(DriveComment,DrawioComment);DriveComment.prototype.addReply=function(b,e,d,c,g){b={content:b.content};c?b.verb="resolve":g&&(b.verb="reopen");this.file.ui.drive.executeRequest({url:"/files/"+this.file.getId()+"/comments/"+this.id+"/replies",params:b,method:"POST"},mxUtils.bind(this,function(b){e(b.replyId)}),d)};
+f.appendChild(n)})(n[y],y,t),q++}m.has_more?(g=m.next_cursor,0==q?k():(f.appendChild(v),u=function(){f.scrollTop>=f.scrollHeight-f.offsetHeight&&k()},mxEvent.addListener(f,"scroll",u))):0==q&&""==f.innerHTML&&mxUtils.write(f,mxResources.get("noDBs"))}),t)});z()};NotionClient.prototype.logout=function(){this.executeRequest("/removeToken",null,"GET",function(){},function(){});this.setUser(null);b=null}})();DrawioComment=function(b,e,d,c,g,k,n){this.file=b;this.id=e;this.content=d;this.modifiedDate=c;this.createdDate=g;this.isResolved=k;this.user=n;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,e,d,c,g){e()};DrawioComment.prototype.editComment=function(b,e,d){e()};DrawioComment.prototype.deleteComment=function(b,e){b()};DriveComment=function(b,e,d,c,g,k,n,f){DrawioComment.call(this,b,e,d,c,g,k,n);this.pCommentId=f};mxUtils.extend(DriveComment,DrawioComment);DriveComment.prototype.addReply=function(b,e,d,c,g){b={content:b.content};c?b.verb="resolve":g&&(b.verb="reopen");this.file.ui.drive.executeRequest({url:"/files/"+this.file.getId()+"/comments/"+this.id+"/replies",params:b,method:"POST"},mxUtils.bind(this,function(b){e(b.replyId)}),d)};
DriveComment.prototype.editComment=function(b,e,d){this.content=b;b={content:b};this.file.ui.drive.executeRequest(this.pCommentId?{url:"/files/"+this.file.getId()+"/comments/"+this.pCommentId+"/replies/"+this.id,params:b,method:"PATCH"}:{url:"/files/"+this.file.getId()+"/comments/"+this.id,params:b,method:"PATCH"},e,d)};
DriveComment.prototype.deleteComment=function(b,e){this.file.ui.drive.executeRequest(this.pCommentId?{url:"/files/"+this.file.getId()+"/comments/"+this.pCommentId+"/replies/"+this.id,method:"DELETE"}:{url:"/files/"+this.file.getId()+"/comments/"+this.id,method:"DELETE"},b,e)};function mxODPicker(b,e,d,c,g,k,n,f,l,m,p,q,t){function v(b,c){c=c||document;return c.querySelector(b)}function u(b,d,e){if(null==b["@microsoft.graph.downloadUrl"])if(null==b.parentReference)e();else{c(b.id,b.parentReference.driveId,function(b){u(b,d,e)},e);return}var f=new XMLHttpRequest;f.open("GET",b["@microsoft.graph.downloadUrl"]);var g=b.file?"image/png"==b.file.mimeType:!1;f.onreadystatechange=function(){if(4==this.readyState){if(200<=this.status&&299>=this.status)try{var b=f.responseText;
-g&&(b="data:image/png;base64,"+Editor.base64Encode(b),b=Editor.extractGraphModelFromPng(b));var c=mxUtils.parseXml(b),k="mxlibrary"==c.documentElement.nodeName?c.documentElement:Editor.extractGraphModel(c.documentElement);if(null!=k){d(k.ownerDocument);return}}catch(Z){}e()}};g&&f.overrideMimeType&&f.overrideMimeType("text/plain; charset=x-user-defined");f.send()}function x(){q&&null!=K?J.exportToCanvas(function(b){b=EditorUi.prototype.createImageDataUri(b,null,"png");n(H,b);k(H)},400,null,null,function(b){console.log(b)},
-600,null,null,null,null,null,K):(n(H,void 0),k(H))}function A(b){function c(b){Q.style.background="transparent";Q.innerHTML="";var c=document.createElement("div");c.className="odPreviewStatus";mxUtils.write(c,b);Q.appendChild(c);F.stop()}if(null!=Q)if(Q.style.background="transparent",Q.innerHTML="",null==b||b.folder||/\.drawiolib$/.test(b.name))c(mxResources.get("noPreview"));else try{null!=b.remoteItem&&(b=b.remoteItem),W=b,F.spin(Q),u(b,function(d){F.stop();if(W==b)if("mxlibrary"==d.documentElement.nodeName)c(mxResources.get("noPreview"));
-else{var e=d.getElementsByTagName("diagram");K=AspectDialog.prototype.createViewer(Q,0==e.length?d.documentElement:e[0],null,"transparent")}},function(){H=null;c(mxResources.get("notADiagramFile"))})}catch(N){H=null,c(mxResources.get("notADiagramFile"))}}function z(){var b=v(".odFilesBreadcrumb");if(null!=b){b.innerHTML="";for(var c=0;c<P.length-1;c++){var d=document.createElement("span");d.className="odBCFolder";d.innerHTML=mxUtils.htmlEntities(P[c].name||mxResources.get("home"));b.appendChild(d);
-(function(b,c){d.addEventListener("click",function(){e(null);P=P.slice(0,c);y(b.driveId,b.folderId,b.siteId,b.name)})})(P[c],c);var f=document.createElement("span");f.innerHTML=" &gt; ";b.appendChild(f)}null!=P[P.length-1]&&(c=document.createElement("span"),c.innerHTML=mxUtils.htmlEntities(1==P.length?mxResources.get("officeSelDiag"):P[P.length-1].name||mxResources.get("home")),b.appendChild(c))}}function B(){if(null!=H&&!S)if("sharepoint"==I)y("site",null,H.id,H.displayName);else if("site"==I)y("subsite",
-null,H.id,H.name);else{var b=H.folder;H=H.remoteItem?H.remoteItem:H;var c=(H.parentReference?H.parentReference.driveId:null)||I,d=H.id;b?y(c,d,null,H.name):x()}}function y(b,c,k,m,n){function p(c){F.stop();var d=document.createElement("table");d.className="odFileListGrid";for(var f=null,g=0,k=0;null!=c&&k<c.length;k++){var m=c[k];if(1!=y||!m.webUrl||0<m.webUrl.indexOf("sharepoint.com/sites/")||0>m.webUrl.indexOf("sharepoint.com/")){var n=m.displayName||m.name,p=mxUtils.htmlEntities(m.description||
-n);y&&(m.folder=!0);var q=null!=m.folder;if(!l||q){var t=document.createElement("tr");t.className=g++%2?"odOddRow":"odEvenRow";var D=document.createElement("td");D.style.width="36px";var v=document.createElement("img");v.src="/images/"+(q?"folder.png":"file.png");v.className="odFileImg";D.appendChild(v);t.appendChild(D);D=document.createElement("td");q=document.createElement("div");q.className="odFileTitle";q.innerHTML=mxUtils.htmlEntities(n);q.setAttribute("title",p);D.appendChild(q);t.appendChild(D);
-d.appendChild(t);null==f&&(f=t,f.className+=" odRowSelected",H=m,I=b,e(H));(function(c,d){t.addEventListener("dblclick",B);t.addEventListener("click",function(){f!=d&&(f.className=f.className.replace("odRowSelected",""),f=d,f.className+=" odRowSelected",H=c,I=b,e(H))})})(m,t)}}}0==g?(c=document.createElement("div"),c.className="odEmptyFolder",c.innerHTML=mxUtils.htmlEntities(mxResources.get("folderEmpty",null,"Folder is empty!")),u.appendChild(c)):u.appendChild(d);z();S=!1}if(!S){v(".odCatsList").style.display=
-"block";v(".odFilesSec").style.display="block";null!=Q&&(Q.innerHTML="",Q.style.top="50%");var q=S=!0,y=0;M=arguments;var t=setTimeout(function(){S=q=!1;F.stop();f(mxResources.get("timeout"))},2E4),u=v(".odFilesList");u.innerHTML="";F.spin(u);var D;switch(b){case "recent":P=[{name:mxResources.get("recent",null,"Recent"),driveId:b}];D=g()||{};var C=[],x;for(x in D)C.push(D[x]);clearTimeout(t);p(C);return;case "shared":D="/me/drive/sharedWithMe";P=[{name:mxResources.get("sharedWithMe",null,"Shared With Me"),
-driveId:b}];break;case "sharepoint":D="/sites?search=";P=[{name:mxResources.get("sharepointSites",null,"Sharepoint Sites"),driveId:b}];y=1;break;case "site":P.push({name:m,driveId:b,folderId:c,siteId:k});D="/sites/"+k+"/drives";y=2;break;case "subsite":P.push({name:m,driveId:b,folderId:c,siteId:k});D="/drives/"+k+(c?"/items/"+c:"/root")+"/children";break;case "search":b=I;P=[{driveId:b,name:mxResources.get("back",null,"Back")}];n=encodeURIComponent(n.replace(/\'/g,"\\'"));D=b?"/drives/"+b+"/root/search(q='"+
-n+"')":"/me/drive/root/search(q='"+n+"')";break;default:null==c?P=[{driveId:b}]:P.push({name:m,driveId:b,folderId:c}),D=(b?"/drives/"+b:"/me/drive")+(c?"/items/"+c:"/root")+"/children"}y||(D+=(0<D.indexOf("?")?"&":"?")+"select=id,name,description,parentReference,file,createdBy,lastModifiedBy,lastModifiedDateTime,size,folder,remoteItem,@microsoft.graph.downloadUrl");d(D,function(b){if(q){clearTimeout(t);b=b.value||[];for(var c=y?b:[],d=0;!y&&d<b.length;d++){var e=b[d],f=e.file?e.file.mimeType:null;
-(e.folder||"text/html"==f||"text/xml"==f||"application/xml"==f||"image/png"==f||/\.svg$/.test(e.name)||/\.html$/.test(e.name)||/\.xml$/.test(e.name)||/\.png$/.test(e.name)||/\.drawio$/.test(e.name)||/\.drawiolib$/.test(e.name))&&c.push(e)}p(c)}},function(b){if(q){clearTimeout(t);var c=null;try{c=JSON.parse(b.responseText).error.message}catch(U){}f(mxResources.get("errorFetchingFolder",null,"Error fetching folder items")+(null!=c?" ("+c+")":""));S=!1;F.stop()}})}}function C(b){T.className=T.className.replace("odCatSelected",
-"");T=b;T.className+=" odCatSelected"}function G(b){S||(da=null,y("search",null,null,null,b))}var D="";null==e&&(e=A,D='<div style="text-align: center;" class="odPreview"></div>');null==g&&(g=function(){var b=null;try{b=JSON.parse(localStorage.getItem("mxODPickerRecentList"))}catch(ea){}return b});null==k&&(k=function(b){if(null!=b){var c=g()||{};delete b["@microsoft.graph.downloadUrl"];c[b.id]=b;localStorage.setItem("mxODPickerRecentList",JSON.stringify(c))}});var D='<div class="odCatsList"><div class="odCatsListLbl">OneDrive</div><div id="odFiles" class="odCatListTitle odCatSelected">'+
+g&&(b="data:image/png;base64,"+Editor.base64Encode(b),b=Editor.extractGraphModelFromPng(b));var c=mxUtils.parseXml(b),k="mxlibrary"==c.documentElement.nodeName?c.documentElement:Editor.extractGraphModel(c.documentElement);if(null!=k){d(k.ownerDocument);return}}catch(Z){}e()}};g&&f.overrideMimeType&&f.overrideMimeType("text/plain; charset=x-user-defined");f.send()}function x(){q&&null!=J?I.exportToCanvas(function(b){b=EditorUi.prototype.createImageDataUri(b,null,"png");n(H,b);k(H)},400,null,null,function(b){console.log(b)},
+600,null,null,null,null,null,J):(n(H,void 0),k(H))}function z(b){function c(b){P.style.background="transparent";P.innerHTML="";var c=document.createElement("div");c.className="odPreviewStatus";mxUtils.write(c,b);P.appendChild(c);G.stop()}if(null!=P)if(P.style.background="transparent",P.innerHTML="",null==b||b.folder||/\.drawiolib$/.test(b.name))c(mxResources.get("noPreview"));else try{null!=b.remoteItem&&(b=b.remoteItem),V=b,G.spin(P),u(b,function(d){G.stop();if(V==b)if("mxlibrary"==d.documentElement.nodeName)c(mxResources.get("noPreview"));
+else{var e=d.getElementsByTagName("diagram");J=AspectDialog.prototype.createViewer(P,0==e.length?d.documentElement:e[0],null,"transparent")}},function(){H=null;c(mxResources.get("notADiagramFile"))})}catch(T){H=null,c(mxResources.get("notADiagramFile"))}}function A(){var b=v(".odFilesBreadcrumb");if(null!=b){b.innerHTML="";for(var c=0;c<O.length-1;c++){var d=document.createElement("span");d.className="odBCFolder";d.innerHTML=mxUtils.htmlEntities(O[c].name||mxResources.get("home"));b.appendChild(d);
+(function(b,c){d.addEventListener("click",function(){e(null);O=O.slice(0,c);y(b.driveId,b.folderId,b.siteId,b.name)})})(O[c],c);var f=document.createElement("span");f.innerHTML=" &gt; ";b.appendChild(f)}null!=O[O.length-1]&&(c=document.createElement("span"),c.innerHTML=mxUtils.htmlEntities(1==O.length?mxResources.get("officeSelDiag"):O[O.length-1].name||mxResources.get("home")),b.appendChild(c))}}function B(){if(null!=H&&!R)if("sharepoint"==K)y("site",null,H.id,H.displayName);else if("site"==K)y("subsite",
+null,H.id,H.name);else{var b=H.folder;H=H.remoteItem?H.remoteItem:H;var c=(H.parentReference?H.parentReference.driveId:null)||K,d=H.id;b?y(c,d,null,H.name):x()}}function y(b,c,k,m,n){function p(c){G.stop();var d=document.createElement("table");d.className="odFileListGrid";for(var f=null,g=0,k=0;null!=c&&k<c.length;k++){var m=c[k];if(1!=y||!m.webUrl||0<m.webUrl.indexOf("sharepoint.com/sites/")||0>m.webUrl.indexOf("sharepoint.com/")){var n=m.displayName||m.name,p=mxUtils.htmlEntities(m.description||
+n);y&&(m.folder=!0);var q=null!=m.folder;if(!l||q){var t=document.createElement("tr");t.className=g++%2?"odOddRow":"odEvenRow";var v=document.createElement("td");v.style.width="36px";var u=document.createElement("img");u.src="/images/"+(q?"folder.png":"file.png");u.className="odFileImg";v.appendChild(u);t.appendChild(v);v=document.createElement("td");q=document.createElement("div");q.className="odFileTitle";q.innerHTML=mxUtils.htmlEntities(n);q.setAttribute("title",p);v.appendChild(q);t.appendChild(v);
+d.appendChild(t);null==f&&(f=t,f.className+=" odRowSelected",H=m,K=b,e(H));(function(c,d){t.addEventListener("dblclick",B);t.addEventListener("click",function(){f!=d&&(f.className=f.className.replace("odRowSelected",""),f=d,f.className+=" odRowSelected",H=c,K=b,e(H))})})(m,t)}}}0==g?(c=document.createElement("div"),c.className="odEmptyFolder",c.innerHTML=mxUtils.htmlEntities(mxResources.get("folderEmpty",null,"Folder is empty!")),D.appendChild(c)):D.appendChild(d);A();R=!1}if(!R){v(".odCatsList").style.display=
+"block";v(".odFilesSec").style.display="block";null!=P&&(P.innerHTML="",P.style.top="50%");var q=R=!0,y=0;M=arguments;var t=setTimeout(function(){R=q=!1;G.stop();f(mxResources.get("timeout"))},2E4),D=v(".odFilesList");D.innerHTML="";G.spin(D);var u;switch(b){case "recent":O=[{name:mxResources.get("recent",null,"Recent"),driveId:b}];u=g()||{};var C=[],x;for(x in u)C.push(u[x]);clearTimeout(t);p(C);return;case "shared":u="/me/drive/sharedWithMe";O=[{name:mxResources.get("sharedWithMe",null,"Shared With Me"),
+driveId:b}];break;case "sharepoint":u="/sites?search=";O=[{name:mxResources.get("sharepointSites",null,"Sharepoint Sites"),driveId:b}];y=1;break;case "site":O.push({name:m,driveId:b,folderId:c,siteId:k});u="/sites/"+k+"/drives";y=2;break;case "subsite":O.push({name:m,driveId:b,folderId:c,siteId:k});u="/drives/"+k+(c?"/items/"+c:"/root")+"/children";break;case "search":b=K;O=[{driveId:b,name:mxResources.get("back",null,"Back")}];n=encodeURIComponent(n.replace(/\'/g,"\\'"));u=b?"/drives/"+b+"/root/search(q='"+
+n+"')":"/me/drive/root/search(q='"+n+"')";break;default:null==c?O=[{driveId:b}]:O.push({name:m,driveId:b,folderId:c}),u=(b?"/drives/"+b:"/me/drive")+(c?"/items/"+c:"/root")+"/children"}y||(u+=(0<u.indexOf("?")?"&":"?")+"select=id,name,description,parentReference,file,createdBy,lastModifiedBy,lastModifiedDateTime,size,folder,remoteItem,@microsoft.graph.downloadUrl");d(u,function(b){if(q){clearTimeout(t);b=b.value||[];for(var c=y?b:[],d=0;!y&&d<b.length;d++){var e=b[d],f=e.file?e.file.mimeType:null;
+(e.folder||"text/html"==f||"text/xml"==f||"application/xml"==f||"image/png"==f||/\.svg$/.test(e.name)||/\.html$/.test(e.name)||/\.xml$/.test(e.name)||/\.png$/.test(e.name)||/\.drawio$/.test(e.name)||/\.drawiolib$/.test(e.name))&&c.push(e)}p(c)}},function(b){if(q){clearTimeout(t);var c=null;try{c=JSON.parse(b.responseText).error.message}catch(S){}f(mxResources.get("errorFetchingFolder",null,"Error fetching folder items")+(null!=c?" ("+c+")":""));R=!1;G.stop()}})}}function C(b){X.className=X.className.replace("odCatSelected",
+"");X=b;X.className+=" odCatSelected"}function E(b){R||(da=null,y("search",null,null,null,b))}var D="";null==e&&(e=z,D='<div style="text-align: center;" class="odPreview"></div>');null==g&&(g=function(){var b=null;try{b=JSON.parse(localStorage.getItem("mxODPickerRecentList"))}catch(ea){}return b});null==k&&(k=function(b){if(null!=b){var c=g()||{};delete b["@microsoft.graph.downloadUrl"];c[b.id]=b;localStorage.setItem("mxODPickerRecentList",JSON.stringify(c))}});var D='<div class="odCatsList"><div class="odCatsListLbl">OneDrive</div><div id="odFiles" class="odCatListTitle odCatSelected">'+
mxUtils.htmlEntities(mxResources.get("files"))+'</div><div id="odRecent" class="odCatListTitle">'+mxUtils.htmlEntities(mxResources.get("recent"))+'</div><div id="odShared" class="odCatListTitle">'+mxUtils.htmlEntities(mxResources.get("shared"))+'</div><div id="odSharepoint" class="odCatListTitle">'+mxUtils.htmlEntities(mxResources.get("sharepoint"))+'</div></div><div class="odFilesSec"><div class="searchBar" style="display:none"><input type="search" id="odSearchBox" placeholder="'+mxUtils.htmlEntities(mxResources.get("search"))+
'"></div><div class="odFilesBreadcrumb"></div><div id="refreshOD" class="odRefreshButton"><img src="/images/update32.png" width="16" height="16" title="'+mxUtils.htmlEntities(mxResources.get("refresh"))+'Refresh" border="0"/></div><div class="odFilesList"></div></div>'+D+(m?'<div id="odBackBtn" class="odLinkBtn">&lt; '+mxUtils.htmlEntities(mxResources.get("back"))+"</div>":"")+(p?'<button id="odSubmitBtn" class="odSubmitBtn">'+mxUtils.htmlEntities(mxResources.get(l?"save":"open"))+"</button>":""),
-E=null!=window.Editor&&null!=Editor.isDarkMode&&Editor.isDarkMode(),E=".odCatsList {\tbox-sizing: border-box;\tposition:absolute;\ttop:0px;\tbottom:50%;\twidth:30%;\tborder: 1px solid #CCCCCC;\tborder-bottom:none;\tdisplay: inline-block;\toverflow-x: hidden;\toverflow-y: auto;}.odCatsListLbl {\theight: 17px;\tcolor: #6D6D6D;\tfont-size: 14px;\tfont-weight: bold;\tline-height: 17px;\tmargin: 10px 0 3px 5px;}.odFilesSec {\tbox-sizing: border-box;\tposition:absolute;\tleft:30%;\ttop:0px;\tbottom:50%;\twidth: 70%;\tborder: 1px solid #CCCCCC;\tborder-left:none;\tborder-bottom:none;\tdisplay: inline-block;\toverflow: hidden;}.odFilesBreadcrumb {\tbox-sizing: border-box;\tposition:absolute;\tmin-height: 32px;\tleft:0px;\tright:20px;\ttext-overflow:ellipsis;\toverflow:hidden;\tfont-size: 13px;\tcolor: #6D6D6D;\tpadding: 5px;}.odRefreshButton {\tbox-sizing: border-box;\tposition:absolute;\tright:0px;\ttop:0px;\tpadding: 4px;\tmargin: 1px;\theight:24px;\tcursor:default;}.odRefreshButton>img {\topacity:0.5;}.odRefreshButton:hover {\tbackground-color:#ddd;\tborder-radius:50%;}.odRefreshButton:active {\topacity:0.7;}.odFilesList {\tbox-sizing: border-box;\tposition:absolute;\ttop:32px;\tbottom:0px;\twidth: 100%;\toverflow-x: hidden;\toverflow-y: auto;}.odFileImg {\twidth: 24px;\tpadding-left: 5px;\tpadding-right: 5px;}.odFileTitle {\tcursor: default;\tfont-weight: normal;\tcolor: #666666 !important;\twidth: calc(100% - 20px);\twhite-space: nowrap;\toverflow: hidden;\ttext-overflow: ellipsis;}.odFileListGrid {\twidth: 100%;\twhite-space: nowrap;\tfont-size: 13px; box-sizing: border-box; border-spacing: 0;}.odOddRow {"+
-(E?"":"\tbackground-color: #eeeeee;")+"}.odEvenRow {"+(E?"":"\tbackground-color: #FFFFFF;")+"}.odRowSelected {\tbackground-color: #cadfff;}.odCatListTitle {\tbox-sizing: border-box;\theight: 17px;\tcursor: default;\tcolor: #666666;\tfont-size: 14px;\tline-height: 17px;\tmargin: 5px 0 5px 0px; padding-left: 10px;}.odCatSelected {\tfont-weight: bold;\tbackground-color: #cadfff;}.odEmptyFolder {\theight: 17px;\tcolor: #6D6D6D;\tfont-size: 14px;\tfont-weight: bold;\tline-height: 17px;\tmargin: 10px 0 3px 5px;\twidth: 100%; text-align: center;}.odBCFolder {\tcursor: pointer;\tcolor: #0432ff;}.odPreviewStatus {\tposition:absolute;\ttext-align:center;\twidth:100%;\ttop:50%;\ttransform: translateY(-50%);\tfont-size:13px;\topacity:0.5;}.odPreview { position:absolute;\t overflow:hidden;\t border: 1px solid #CCCCCC; bottom:0px; top: 50%; left:0px; right:0px;}.odLinkBtn { position: absolute;\tfont-size: 12px;\tcursor: pointer;\tcolor: #6D6D6D;\tleft: 5px;\tbottom: 3px;}.odSubmitBtn { position: absolute;\tcolor: #333;\tright: 5px;\tbottom: 5px;}",
-F=new Spinner({left:"50%",lines:12,length:8,width:3,radius:5,rotate:0,color:"#000",speed:1,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9}),J=new Editor,K=null,H=null,I=null,S=!1,P=[],M=null,W=null;this.getSelectedItem=function(){null!=H&&k(H);return H};if(null==v("#mxODPickerCss")){var X=document.head||document.getElementsByTagName("head")[0],L=document.createElement("style");X.appendChild(L);L.type="text/css";L.id="mxODPickerCss";L.appendChild(document.createTextNode(E))}b.innerHTML=
-D;var Q=v(".odPreview"),T=v("#odFiles");b=function(b,c){c=c||document;return c.querySelectorAll(b)}(".odCatListTitle");for(D=0;D<b.length;D++)b[D].addEventListener("click",function(){H=W=null;if(!S)switch(C(this),this.id){case "odFiles":y();break;case "odRecent":y("recent");break;case "odShared":y("shared");break;case "odSharepoint":y("sharepoint")}});var da=null;v("#odSearchBox").addEventListener("keyup",function(b){var c=this;null!=da&&clearTimeout(da);13==b.keyCode?G(c.value):da=setTimeout(function(){G(c.value)},
-500)});v("#refreshOD").addEventListener("click",function(){null!=M&&(e(null),y.apply(this,M))});m&&v("#odBackBtn").addEventListener("click",m);p&&v("#odSubmitBtn").addEventListener("click",x);null!=t?(m=t.pop(),"sharepoint"==t[0].driveId&&C(v("#odSharepoint")),P=t,y(m.driveId,m.folderId,m.siteId,m.name)):y()};App=function(b,e,d){EditorUi.call(this,b,e,null!=d?d:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(window.onunload=mxUtils.bind(this,function(){var b=this.getCurrentFile();if(null!=b&&b.isModified()){var d={category:"DISCARD-FILE-"+b.getHash(),action:(b.savingFile?"saving":"")+(b.savingFile&&null!=b.savingFileTime?"_"+Math.round((Date.now()-b.savingFileTime.getTime())/1E3):"")+(null!=b.saveLevel?"-sl_"+b.saveLevel:"")+"-age_"+(null!=
+F=null!=window.Editor&&null!=Editor.isDarkMode&&Editor.isDarkMode(),F=".odCatsList {\tbox-sizing: border-box;\tposition:absolute;\ttop:0px;\tbottom:50%;\twidth:30%;\tborder: 1px solid #CCCCCC;\tborder-bottom:none;\tdisplay: inline-block;\toverflow-x: hidden;\toverflow-y: auto;}.odCatsListLbl {\theight: 17px;\tcolor: #6D6D6D;\tfont-size: 14px;\tfont-weight: bold;\tline-height: 17px;\tmargin: 10px 0 3px 5px;}.odFilesSec {\tbox-sizing: border-box;\tposition:absolute;\tleft:30%;\ttop:0px;\tbottom:50%;\twidth: 70%;\tborder: 1px solid #CCCCCC;\tborder-left:none;\tborder-bottom:none;\tdisplay: inline-block;\toverflow: hidden;}.odFilesBreadcrumb {\tbox-sizing: border-box;\tposition:absolute;\tmin-height: 32px;\tleft:0px;\tright:20px;\ttext-overflow:ellipsis;\toverflow:hidden;\tfont-size: 13px;\tcolor: #6D6D6D;\tpadding: 5px;}.odRefreshButton {\tbox-sizing: border-box;\tposition:absolute;\tright:0px;\ttop:0px;\tpadding: 4px;\tmargin: 1px;\theight:24px;\tcursor:default;}.odRefreshButton>img {\topacity:0.5;}.odRefreshButton:hover {\tbackground-color:#ddd;\tborder-radius:50%;}.odRefreshButton:active {\topacity:0.7;}.odFilesList {\tbox-sizing: border-box;\tposition:absolute;\ttop:32px;\tbottom:0px;\twidth: 100%;\toverflow-x: hidden;\toverflow-y: auto;}.odFileImg {\twidth: 24px;\tpadding-left: 5px;\tpadding-right: 5px;}.odFileTitle {\tcursor: default;\tfont-weight: normal;\tcolor: #666666 !important;\twidth: calc(100% - 20px);\twhite-space: nowrap;\toverflow: hidden;\ttext-overflow: ellipsis;}.odFileListGrid {\twidth: 100%;\twhite-space: nowrap;\tfont-size: 13px; box-sizing: border-box; border-spacing: 0;}.odOddRow {"+
+(F?"":"\tbackground-color: #eeeeee;")+"}.odEvenRow {"+(F?"":"\tbackground-color: #FFFFFF;")+"}.odRowSelected {\tbackground-color: #cadfff;}.odCatListTitle {\tbox-sizing: border-box;\theight: 17px;\tcursor: default;\tcolor: #666666;\tfont-size: 14px;\tline-height: 17px;\tmargin: 5px 0 5px 0px; padding-left: 10px;}.odCatSelected {\tfont-weight: bold;\tbackground-color: #cadfff;}.odEmptyFolder {\theight: 17px;\tcolor: #6D6D6D;\tfont-size: 14px;\tfont-weight: bold;\tline-height: 17px;\tmargin: 10px 0 3px 5px;\twidth: 100%; text-align: center;}.odBCFolder {\tcursor: pointer;\tcolor: #0432ff;}.odPreviewStatus {\tposition:absolute;\ttext-align:center;\twidth:100%;\ttop:50%;\ttransform: translateY(-50%);\tfont-size:13px;\topacity:0.5;}.odPreview { position:absolute;\t overflow:hidden;\t border: 1px solid #CCCCCC; bottom:0px; top: 50%; left:0px; right:0px;}.odLinkBtn { position: absolute;\tfont-size: 12px;\tcursor: pointer;\tcolor: #6D6D6D;\tleft: 5px;\tbottom: 3px;}.odSubmitBtn { position: absolute;\tcolor: #333;\tright: 5px;\tbottom: 5px;}",
+G=new Spinner({left:"50%",lines:12,length:8,width:3,radius:5,rotate:0,color:"#000",speed:1,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9}),I=new Editor,J=null,H=null,K=null,R=!1,O=[],M=null,V=null;this.getSelectedItem=function(){null!=H&&k(H);return H};if(null==v("#mxODPickerCss")){var W=document.head||document.getElementsByTagName("head")[0],L=document.createElement("style");W.appendChild(L);L.type="text/css";L.id="mxODPickerCss";L.appendChild(document.createTextNode(F))}b.innerHTML=
+D;var P=v(".odPreview"),X=v("#odFiles");b=function(b,c){c=c||document;return c.querySelectorAll(b)}(".odCatListTitle");for(D=0;D<b.length;D++)b[D].addEventListener("click",function(){H=V=null;if(!R)switch(C(this),this.id){case "odFiles":y();break;case "odRecent":y("recent");break;case "odShared":y("shared");break;case "odSharepoint":y("sharepoint")}});var da=null;v("#odSearchBox").addEventListener("keyup",function(b){var c=this;null!=da&&clearTimeout(da);13==b.keyCode?E(c.value):da=setTimeout(function(){E(c.value)},
+500)});v("#refreshOD").addEventListener("click",function(){null!=M&&(e(null),y.apply(this,M))});m&&v("#odBackBtn").addEventListener("click",m);p&&v("#odSubmitBtn").addEventListener("click",x);null!=t?(m=t.pop(),"sharepoint"==t[0].driveId&&C(v("#odSharepoint")),O=t,y(m.driveId,m.folderId,m.siteId,m.name)):y()};App=function(b,e,d){EditorUi.call(this,b,e,null!=d?d:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(window.onunload=mxUtils.bind(this,function(){var b=this.getCurrentFile();if(null!=b&&b.isModified()){var d={category:"DISCARD-FILE-"+b.getHash(),action:(b.savingFile?"saving":"")+(b.savingFile&&null!=b.savingFileTime?"_"+Math.round((Date.now()-b.savingFileTime.getTime())/1E3):"")+(null!=b.saveLevel?"-sl_"+b.saveLevel:"")+"-age_"+(null!=
b.ageStart?Math.round((Date.now()-b.ageStart.getTime())/1E3):"x")+(this.editor.autosave?"":"-nosave")+(b.isAutosave()?"":"-noauto")+"-open_"+(null!=b.opened?Math.round((Date.now()-b.opened.getTime())/1E3):"x")+"-save_"+(null!=b.lastSaved?Math.round((Date.now()-b.lastSaved.getTime())/1E3):"x")+"-change_"+(null!=b.lastChanged?Math.round((Date.now()-b.lastChanged.getTime())/1E3):"x")+"-alive_"+Math.round((Date.now()-App.startTime.getTime())/1E3),label:null!=b.sync?"client_"+b.sync.clientId:"nosync"};
b.constructor==DriveFile&&null!=b.desc&&null!=this.drive&&(d.label+=(null!=this.drive.user?"-user_"+this.drive.user.id:"-nouser")+"-rev_"+b.desc.headRevisionId+"-mod_"+b.desc.modifiedDate+"-size_"+b.getSize()+"-mime_"+b.desc.mimeType);EditorUi.logEvent(d)}}));this.editor.addListener("autosaveChanged",mxUtils.bind(this,function(){var b=this.getCurrentFile();null!=b&&EditorUi.logEvent({category:(this.editor.autosave?"ON":"OFF")+"-AUTOSAVE-FILE-"+b.getHash(),action:"changed",label:"autosave_"+(this.editor.autosave?
"on":"off")})}));mxClient.IS_SVG?mxGraph.prototype.warningImage.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE7SURBVHjaYvz//z8DJQAggBjwGXDuHMP/tWuD/uPTCxBAOA0AaQRK/f/+XeJ/cbHlf1wGAAQQTgPu3QNLgfHSpZo4DQAIIKwGwGyH4e/fFbG6AiQJEEAs2Ew2NFzH8OOHBMO6dT/A/KCg7wxGRh+wuhQggDBcALMdFIAcHBxgDGJjcwVIIUAAYbhAUXEdVos4OO4DXcGBIQ4QQCguQPY7sgtgAYruCpAgQACx4LJdU1OCwctLEcyWlLwPJF+AXQE0EMUBAAEEdwF6yMOiD4RRY0QT7gqQAEAAseDzu6XldYYPH9DD4joQa8L5AAEENgWb7SBcXa0JDQMBrK4AcQACiAlfyOMCEFdAnAYQQEz4FLa0XGf4/v0H0IIPONUABBAjyBmMjIwMS5cK/L927QORbtBkaG29DtYLEGAAH6f7oq3Zc+kAAAAASUVORK5CYII=":
@@ -11671,10 +11681,10 @@ d))},function(b){b=document.getElementById("geStatus");null!=b&&(b.innerHTML="Er
parseInt(mxSettings.settings.autosaveDelay);!isNaN(b)&&0<b?(DrawioFile.prototype.autosaveDelay=b,EditorUi.debug("Setting autosaveDelay",b)):EditorUi.debug("Invalid autosaveDelay",b)}null!=mxSettings.settings.defaultEdgeLength&&(b=parseInt(mxSettings.settings.defaultEdgeLength),!isNaN(b)&&0<b?(Graph.prototype.defaultEdgeLength=b,EditorUi.debug("Using defaultEdgeLength",b)):EditorUi.debug("Invalid defaultEdgeLength",b))}}catch(t){null!=window.console&&console.error(t)}if(null!=Menus.prototype.defaultFonts)for(b=
0;b<Menus.prototype.defaultFonts.length;b++){var c=Menus.prototype.defaultFonts[b];"string"!==typeof c&&null!=c.fontFamily&&null!=c.fontUrl&&Graph.addFont(c.fontFamily,c.fontUrl)}mxResources.loadDefaultBundle=!1;d(mxResources.getDefaultBundle(RESOURCE_BASE,mxLanguage)||mxResources.getSpecialBundle(RESOURCE_BASE,mxLanguage))}window.onerror=function(b,c,d,e,f){EditorUi.logError("Global: "+(null!=b?b:""),c,d,e,f,null,!0)};if(window.top==window.self&&(/ac\.draw\.io$/.test(window.location.hostname)||/ac-ent\.draw\.io$/.test(window.location.hostname)||
/aj\.draw\.io$/.test(window.location.hostname)))document.body.innerHTML='<div style="margin-top:10%;text-align:center;">Stand-alone mode not allowed for this domain.</div>';else{if("1"==urlParams.embed||"1"==urlParams.lightbox){var g=document.getElementById("geInfo");null!=g&&g.parentNode.removeChild(g)}null!=document.referrer&&"aws3"==urlParams.libs&&"https://aws.amazon.com/architecture/icons/"==document.referrer.substring(0,42)&&(urlParams.libs="aws4");if(null!=window.mxscript){if("1"==urlParams.dev&&
-null!=CryptoJS&&App.mode!=App.MODE_DROPBOX&&App.mode!=App.MODE_TRELLO){g=document.getElementsByTagName("script");if(null!=g&&0<g.length){var k=mxUtils.getTextContent(g[0]);"1f536e2400baaa30261b8c3976d6fe06"!=CryptoJS.MD5(k).toString()&&(console.log("Change bootstrap script MD5 in the previous line:",CryptoJS.MD5(k).toString()),alert("[Dev] Bootstrap script change requires update of CSP"))}null!=g&&1<g.length&&(k=mxUtils.getTextContent(g[g.length-1]),"d53805dd6f0bbba2da4966491ca0a505"!=CryptoJS.MD5(k).toString()&&
-(console.log("Change main script MD5 in the previous line:",CryptoJS.MD5(k).toString()),alert("[Dev] Main script change requires update of CSP")))}try{Editor.enableServiceWorker&&("0"==urlParams.offline||/www\.draw\.io$/.test(window.location.hostname)||"1"!=urlParams.offline&&"1"==urlParams.dev)?App.clearServiceWorker(function(){"0"==urlParams.offline&&alert("Cache cleared")}):Editor.enableServiceWorker&&navigator.serviceWorker.register("/service-worker.js")}catch(p){null!=window.console&&console.error(p)}!("ArrayBuffer"in
-window)||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC||"1"==urlParams.embed&&"1"!=urlParams.embedRT||"1"==urlParams.local||"0"==urlParams.chrome&&"1"!=urlParams.rt||"1"==urlParams.stealth||"1"==urlParams.offline||(mxscript(App.PUSHER_URL),"1"==urlParams.rtCursors&&(mxscript(App.SOCKET_IO_URL),mxscript(App.SIMPLE_PEER_URL)));if("0"!=urlParams.plugins&&"1"!=urlParams.offline){g=null!=mxSettings.settings?mxSettings.getPlugins():null;if(null==mxSettings.settings&&isLocalStorage&&
-"undefined"!==typeof JSON)try{var n=JSON.parse(localStorage.getItem(mxSettings.key));null!=n&&(g=n.plugins)}catch(p){}n=urlParams.p;App.initPluginCallback();null!=n&&App.loadPlugins(n.split(";"));if(null!=g&&0<g.length&&"0"!=urlParams.plugins){for(var n=window.location.protocol+"//"+window.location.host,k=!0,f=0;f<g.length&&k;f++)"/"!=g[f].charAt(0)&&g[f].substring(0,n.length)!=n&&(k=!1);if(k||mxUtils.confirm(mxResources.replacePlaceholders("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",
+!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&null!=CryptoJS&&App.mode!=App.MODE_DROPBOX&&App.mode!=App.MODE_TRELLO){g=document.getElementsByTagName("script");if(null!=g&&0<g.length){var k=mxUtils.getTextContent(g[0]);"1f536e2400baaa30261b8c3976d6fe06"!=CryptoJS.MD5(k).toString()&&(console.log("Change bootstrap script MD5 in the previous line:",CryptoJS.MD5(k).toString()),alert("[Dev] Bootstrap script change requires update of CSP"))}null!=g&&1<g.length&&(k=mxUtils.getTextContent(g[g.length-1]),
+"d53805dd6f0bbba2da4966491ca0a505"!=CryptoJS.MD5(k).toString()&&(console.log("Change main script MD5 in the previous line:",CryptoJS.MD5(k).toString()),alert("[Dev] Main script change requires update of CSP")))}try{Editor.enableServiceWorker&&("0"==urlParams.offline||/www\.draw\.io$/.test(window.location.hostname)||"1"!=urlParams.offline&&"1"==urlParams.dev)?App.clearServiceWorker(function(){"0"==urlParams.offline&&alert("Cache cleared")}):Editor.enableServiceWorker&&navigator.serviceWorker.register("/service-worker.js")}catch(p){null!=
+window.console&&console.error(p)}!("ArrayBuffer"in window)||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC||"1"==urlParams.embed&&"1"!=urlParams.embedRT||"1"==urlParams.local||"0"==urlParams.chrome&&"1"!=urlParams.rt||"1"==urlParams.stealth||"1"==urlParams.offline||(mxscript(App.PUSHER_URL),"1"==urlParams.rtCursors&&(mxscript(App.SOCKET_IO_URL),mxscript(App.SIMPLE_PEER_URL)));if("0"!=urlParams.plugins&&"1"!=urlParams.offline){g=null!=mxSettings.settings?mxSettings.getPlugins():
+null;if(null==mxSettings.settings&&isLocalStorage&&"undefined"!==typeof JSON)try{var n=JSON.parse(localStorage.getItem(mxSettings.key));null!=n&&(g=n.plugins)}catch(p){}n=urlParams.p;App.initPluginCallback();null!=n&&App.loadPlugins(n.split(";"));if(null!=g&&0<g.length&&"0"!=urlParams.plugins){for(var n=window.location.protocol+"//"+window.location.host,k=!0,f=0;f<g.length&&k;f++)"/"!=g[f].charAt(0)&&g[f].substring(0,n.length)!=n&&(k=!1);if(k||mxUtils.confirm(mxResources.replacePlaceholders("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",
[g.join("\n")]).replace(/\\n/g,"\n")))for(f=0;f<g.length;f++)try{null==App.pluginsLoaded[g[f]]&&(App.pluginsLoaded[g[f]]=!0,App.embedModePluginsCount++,"/"==g[f].charAt(0)&&(g[f]=PLUGINS_BASE_PATH+g[f]),mxscript(g[f]))}catch(p){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback",
null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=null)}"0"!=urlParams.math&&Editor.initMath();if("1"==urlParams.configure){var l=window.opener||window.parent,m=function(b){if(b.source==l)try{var d=JSON.parse(b.data);null!=d&&"configure"==d.action&&(mxEvent.removeListener(window,"message",m),Editor.configure(d.config,!0),mxSettings.load(),c())}catch(t){null!=window.console&&console.log("Error in configure message: "+t,b.data)}};mxEvent.addListener(window,"message",
m);l.postMessage(JSON.stringify({event:"configure"}),"*")}else{if(null==Editor.config){if(null!=window.DRAWIO_CONFIG)try{EditorUi.debug("Using global configuration",window.DRAWIO_CONFIG),Editor.configure(window.DRAWIO_CONFIG),mxSettings.load()}catch(p){null!=window.console&&console.error(p)}if(isLocalStorage&&null!=localStorage&&"1"!=urlParams.embed&&(g=localStorage.getItem(Editor.configurationKey),null!=g))try{g=JSON.parse(g),null!=g&&(EditorUi.debug("Using local configuration",g),Editor.configure(g),
@@ -11727,10 +11737,10 @@ App.prototype.onBeforeUnload=function(){if("1"==urlParams.embed&&this.editor.mod
App.prototype.updateDocumentTitle=function(){if(!this.editor.graph.isLightboxView()){var b=this.editor.appName,e=this.getCurrentFile();this.isOfflineApp()&&(b+=" app");null!=e&&(b=(null!=e.getTitle()?e.getTitle():this.defaultFilename)+" - "+b);document.title!=b&&(document.title=b,b=this.editor.graph,b.invalidateDescendantsWithPlaceholders(b.model.getRoot()),b.view.validate())}};
App.prototype.getThumbnail=function(b,e){var d=!1;try{var c=!0,g=window.setTimeout(mxUtils.bind(this,function(){c=!1;e(null)}),this.timeout),k=mxUtils.bind(this,function(b){window.clearTimeout(g);c&&e(b)});null==this.thumbImageCache&&(this.thumbImageCache={});var n=this.editor.graph,f=n.backgroundImage,l=null!=n.themes&&"darkTheme"==n.defaultThemeName;if(null!=this.pages&&(l||this.currentPage!=this.pages[0])){var m=n.getGlobalVariable,n=this.createTemporaryGraph(n.getStylesheet());n.setBackgroundImage=
this.editor.graph.setBackgroundImage;var p=this.pages[0];this.currentPage==p?n.setBackgroundImage(f):null!=p.viewState&&null!=p.viewState&&(f=p.viewState.backgroundImage,n.setBackgroundImage(f));n.getGlobalVariable=function(b){return"page"==b?p.getName():"pagenumber"==b?1:m.apply(this,arguments)};n.getGlobalVariable=m;document.body.appendChild(n.container);n.model.setRoot(p.root)}if(mxClient.IS_CHROMEAPP||this.useCanvasForExport)this.editor.exportToCanvas(mxUtils.bind(this,function(b){try{n!=this.editor.graph&&
-null!=n.container.parentNode&&n.container.parentNode.removeChild(n.container)}catch(J){b=null}k(b)}),b,this.thumbImageCache,"#ffffff",function(){k()},null,null,null,null,null,null,n,null,null,null,null,"diagram",null),d=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var q=document.createElement("canvas"),t=n.getGraphBounds(),v=n.view.translate,u=n.view.scale;null!=f&&(t=mxRectangle.fromRectangle(t),t.add(new mxRectangle((v.x+f.x)*u,(v.y+f.y)*u,f.width*u,f.height*u)));var x=b/t.width,
-x=Math.min(1,Math.min(3*b/(4*t.height),x)),A=Math.floor(t.x),z=Math.floor(t.y);q.setAttribute("width",Math.ceil(x*(t.width+4)));q.setAttribute("height",Math.ceil(x*(t.height+4)));var B=q.getContext("2d");B.scale(x,x);B.translate(-A,-z);var y=n.background;if(null==y||""==y||y==mxConstants.NONE)y="#ffffff";B.save();B.fillStyle=y;B.fillRect(A,z,Math.ceil(t.width+4),Math.ceil(t.height+4));B.restore();if(null!=f){var C=new Image;C.src=f.src;B.drawImage(C,f.x*x,f.y*x,f.width*x,f.height*x)}var G=new mxJsCanvas(q),
-D=new mxAsyncCanvas(this.thumbImageCache);G.images=this.thumbImageCache.images;var E=new mxImageExport;E.drawShape=function(b,c){b.shape instanceof mxShape&&b.shape.checkBounds()&&(c.save(),c.translate(.5,.5),b.shape.paint(c),c.translate(-.5,-.5),c.restore())};E.drawText=function(b,c){};E.drawState(n.getView().getState(n.model.root),D);D.finish(mxUtils.bind(this,function(){try{E.drawState(n.getView().getState(n.model.root),G),n!=this.editor.graph&&null!=n.container.parentNode&&n.container.parentNode.removeChild(n.container)}catch(F){q=
-null}k(q)}));d=!0}}catch(F){d=!1,null!=n&&n!=this.editor.graph&&null!=n.container.parentNode&&n.container.parentNode.removeChild(n.container)}d||window.clearTimeout(g);return d};App.prototype.createBackground=function(){var b=this.createDiv("background");b.style.position="absolute";b.style.background="white";b.style.left="0px";b.style.top="0px";b.style.bottom="0px";b.style.right="0px";mxUtils.setOpacity(b,100);return b};
+null!=n.container.parentNode&&n.container.parentNode.removeChild(n.container)}catch(I){b=null}k(b)}),b,this.thumbImageCache,"#ffffff",function(){k()},null,null,null,null,null,null,n,null,null,null,null,"diagram",null),d=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var q=document.createElement("canvas"),t=n.getGraphBounds(),v=n.view.translate,u=n.view.scale;null!=f&&(t=mxRectangle.fromRectangle(t),t.add(new mxRectangle((v.x+f.x)*u,(v.y+f.y)*u,f.width*u,f.height*u)));var x=b/t.width,
+x=Math.min(1,Math.min(3*b/(4*t.height),x)),z=Math.floor(t.x),A=Math.floor(t.y);q.setAttribute("width",Math.ceil(x*(t.width+4)));q.setAttribute("height",Math.ceil(x*(t.height+4)));var B=q.getContext("2d");B.scale(x,x);B.translate(-z,-A);var y=n.background;if(null==y||""==y||y==mxConstants.NONE)y="#ffffff";B.save();B.fillStyle=y;B.fillRect(z,A,Math.ceil(t.width+4),Math.ceil(t.height+4));B.restore();if(null!=f){var C=new Image;C.src=f.src;B.drawImage(C,f.x*x,f.y*x,f.width*x,f.height*x)}var E=new mxJsCanvas(q),
+D=new mxAsyncCanvas(this.thumbImageCache);E.images=this.thumbImageCache.images;var F=new mxImageExport;F.drawShape=function(b,c){b.shape instanceof mxShape&&b.shape.checkBounds()&&(c.save(),c.translate(.5,.5),b.shape.paint(c),c.translate(-.5,-.5),c.restore())};F.drawText=function(b,c){};F.drawState(n.getView().getState(n.model.root),D);D.finish(mxUtils.bind(this,function(){try{F.drawState(n.getView().getState(n.model.root),E),n!=this.editor.graph&&null!=n.container.parentNode&&n.container.parentNode.removeChild(n.container)}catch(G){q=
+null}k(q)}));d=!0}}catch(G){d=!1,null!=n&&n!=this.editor.graph&&null!=n.container.parentNode&&n.container.parentNode.removeChild(n.container)}d||window.clearTimeout(g);return d};App.prototype.createBackground=function(){var b=this.createDiv("background");b.style.position="absolute";b.style.background="white";b.style.left="0px";b.style.top="0px";b.style.bottom="0px";b.style.right="0px";mxUtils.setOpacity(b,100);return b};
(function(){var b=EditorUi.prototype.setMode;App.prototype.setMode=function(e,d){b.apply(this,arguments);null!=this.mode&&(Editor.useLocalStorage=this.mode==App.MODE_BROWSER);if(null!=this.appIcon){var c=this.getCurrentFile();e=null!=c?c.getMode():e;e==App.MODE_GOOGLE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("googleDrive")])),this.appIcon.style.cursor="pointer"):e==App.MODE_DROPBOX?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("dropbox")])),
this.appIcon.style.cursor="pointer"):e==App.MODE_ONEDRIVE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("oneDrive")])),this.appIcon.style.cursor="pointer"):(this.appIcon.removeAttribute("title"),this.appIcon.style.cursor=e==App.MODE_DEVICE?"pointer":"default")}if(d)try{if(isLocalStorage)localStorage.setItem(".mode",e);else if("undefined"!=typeof Storage){var g=new Date;g.setYear(g.getFullYear()+1);document.cookie="MODE="+e+"; expires="+g.toUTCString()}}catch(k){}}})();
App.prototype.appIconClicked=function(b){if(mxEvent.isAltDown(b))this.showSplash(!0);else{var e=this.getCurrentFile(),d=null!=e?e.getMode():null;d==App.MODE_GOOGLE?null!=e&&null!=e.desc&&null!=e.desc.parents&&0<e.desc.parents.length&&!mxEvent.isShiftDown(b)?this.openLink("https://drive.google.com/drive/folders/"+e.desc.parents[0].id):null!=e&&null!=e.getId()?this.openLink("https://drive.google.com/open?id="+e.getId()):this.openLink("https://drive.google.com/?authuser=0"):d==App.MODE_ONEDRIVE?null!=
@@ -11752,7 +11762,7 @@ var c=this.getDiagramId(),d=this.getCurrentFile();null!=d&&d.getHash()==c||this.
mxResources.get("errorLoadingFile"))}else if((null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.url)this.loadFile("U"+urlParams.url,!0);else if(null==this.getCurrentFile()){var e=mxUtils.bind(this,function(){if("1"==urlParams.client&&(null==window.location.hash||0==window.location.hash.length||"#P"==window.location.hash.substring(0,2))){var b=mxUtils.bind(this,function(b){Editor.isPngDataUrl(b)&&(b=Editor.extractGraphModelFromPng(b));var c=urlParams.title,c=null!=c?decodeURIComponent(c):
this.defaultFilename;b=new LocalFile(this,b,c,!0);null!=window.location.hash&&"#P"==window.location.hash.substring(0,2)&&(b.getHash=function(){return window.location.hash.substring(1)});this.fileLoaded(b);this.getCurrentFile().setModified(!this.editor.chromeless)}),c=window.opener||window.parent;if(c!=window){var d=urlParams.create;null!=d?b(c[decodeURIComponent(d)]):(d=urlParams.data,null!=d?b(decodeURIComponent(d)):this.installMessageHandler(mxUtils.bind(this,function(d,e){e.source==c&&b(d)})))}}else if(null==
this.dialog)if("1"==urlParams.demo)d=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,!0),Editor.useLocalStorage=d;else{d=!1;try{d=null!=window.opener&&null!=window.opener.openFile}catch(l){}d?this.spinner.spin(document.body,mxResources.get("loading")):(d=this.getDiagramId(),!EditorUi.enableDrafts||null!=urlParams.mode||"draw.io"!=this.getServiceName()||null!=d&&0!=d.length||this.editor.isChromelessView()?null!=d&&0<d.length?this.loadFile(d,null,null,mxUtils.bind(this,
-function(){var b=decodeURIComponent(urlParams.viewbox||"");if(""!=b)try{var c=JSON.parse(b);this.editor.graph.fitWindow(c,c.border)}catch(p){console.error(p)}})):"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0):this.checkDrafts())}}),d=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=d&&0<d.length&&this.spinner.spin(document.body,mxResources.get("loading"))){var c=
+function(){var b=decodeURIComponent(urlParams.viewbox||"");if(""!=b)try{var c=JSON.parse(b);this.editor.graph.fitWindow(c,c.border)}catch(p){console.error(p)}})):"0"!=urlParams.splash?this.loadFile():EditorUi.isElectronApp||this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0):this.checkDrafts())}}),d=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=d&&0<d.length&&this.spinner.spin(document.body,mxResources.get("loading"))){var c=
mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create","title"]))}),g=mxUtils.bind(this,function(b){this.spinner.stop();if("0"!=urlParams.splash){this.fileLoaded(new LocalFile(this,b,null));this.editor.graph.setEnabled(!1);this.mode=urlParams.mode;var c=urlParams.title,c=null!=c?decodeURIComponent(c):this.defaultFilename;b=this.getServiceCount(!0);isLocalStorage&&b++;var d=4>=b?2:6<b?4:3,c=new CreateDialog(this,
c,mxUtils.bind(this,function(b,c){if(null==c){this.hideDialog();var d=Editor.useLocalStorage;this.createFile(0<b.length?b:this.defaultFilename,this.getFileData(),null,null,null,!0,null,!0);Editor.useLocalStorage=d}else this.pickFolder(c,mxUtils.bind(this,function(d){this.createFile(b,this.getFileData(!0),null,c,null,!0,d)}))}),null,null,null,null,"1"==urlParams.browser,null,null,!0,d,null,null,null,this.editor.fileExtensions);this.showDialog(c.container,420,b>d?390:280,!0,!1,mxUtils.bind(this,function(b){b&&
null==this.getCurrentFile()&&this.showSplash()}));c.init()}}),d=decodeURIComponent(d);if("http://"!=d.substring(0,7)&&"https://"!=d.substring(0,8))try{null!=window.opener&&null!=window.opener[d]?g(window.opener[d]):this.handleError(null,mxResources.get("errorLoadingFile"))}catch(k){this.handleError(k,mxResources.get("errorLoadingFile"))}else this.loadTemplate(d,function(b){g(b)},mxUtils.bind(this,function(){this.handleError(null,mxResources.get("errorLoadingFile"),c)}))}else(null==window.location.hash||
@@ -11819,9 +11829,9 @@ App.prototype.getLibraryStorageHint=function(b){var e=b.getTitle();b.constructor
mxResources.get("browser")+")":b.constructor==LocalLibrary&&(e+=" ("+mxResources.get("device")+")");return e};App.prototype.restoreLibraries=function(){this.loadLibraries(mxSettings.getCustomLibraries(),mxUtils.bind(this,function(){this.loadLibraries((urlParams.clibs||"").split(";"))}))};
App.prototype.loadLibraries=function(b,e){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var d=mxUtils.bind(this,function(b,c){c||mxSettings.removeCustomLibrary(b);delete this.pendingLibraries[b]}),c=0,g=[],k=mxUtils.bind(this,function(){if(0==c){if(null!=b)for(var d=b.length-1;0<=d;d--)null!=g[d]&&this.loadLibrary(g[d]);null!=e&&e()}});if(null!=b)for(var n=0;n<b.length;n++){var f=encodeURIComponent(decodeURIComponent(b[n]));mxUtils.bind(this,function(b,e){if(null!=
b&&0<b.length&&null==this.pendingLibraries[b]&&null==this.sidebar.palettes[b]){c++;var f=mxUtils.bind(this,function(d){delete this.pendingLibraries[b];g[e]=d;c--;k()}),l=mxUtils.bind(this,function(e){d(b,e);c--;k()});this.pendingLibraries[b]=!0;var m=b.substring(0,1);if("L"==m)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var c=decodeURIComponent(b.substring(1));StorageFile.getFileContent(this,c,mxUtils.bind(this,function(b){".scratchpad"==c&&null==b&&
-(b=this.emptyLibraryXml);null!=b?f(new StorageLibrary(this,b,c)):l()}),l)}catch(z){l()}}),0);else if("U"==m){var n=decodeURIComponent(b.substring(1));this.isOffline()||this.loadTemplate(n,mxUtils.bind(this,function(b){null!=b&&0<b.length?f(new UrlLibrary(this,b,n)):l()}),function(){l()},null,!0)}else if("R"==m){m=decodeURIComponent(b.substring(1));try{var m=JSON.parse(m),u={id:m[0],title:m[1],downloadUrl:m[2]};this.remoteInvoke("getFileContent",[u.downloadUrl],null,mxUtils.bind(this,function(b){try{f(new RemoteLibrary(this,
-b,u))}catch(z){l()}}),function(){l()})}catch(A){l()}}else if("S"==m&&null!=this.loadDesktopLib)try{this.loadDesktopLib(decodeURIComponent(b.substring(1)),function(b){f(b)},l)}catch(A){l()}else{var x=null;"G"==m?null!=this.drive&&null!=this.drive.user&&(x=this.drive):"H"==m?null!=this.gitHub&&null!=this.gitHub.getUser()&&(x=this.gitHub):"T"==m?null!=this.trello&&this.trello.isAuthorized()&&(x=this.trello):"D"==m?null!=this.dropbox&&null!=this.dropbox.getUser()&&(x=this.dropbox):"W"==m&&null!=this.oneDrive&&
-null!=this.oneDrive.getUser()&&(x=this.oneDrive);null!=x?x.getLibrary(decodeURIComponent(b.substring(1)),mxUtils.bind(this,function(b){try{f(b)}catch(z){l()}}),function(b){l()}):l(!0)}}})(f,n)}k()}};
+(b=this.emptyLibraryXml);null!=b?f(new StorageLibrary(this,b,c)):l()}),l)}catch(A){l()}}),0);else if("U"==m){var n=decodeURIComponent(b.substring(1));this.isOffline()||this.loadTemplate(n,mxUtils.bind(this,function(b){null!=b&&0<b.length?f(new UrlLibrary(this,b,n)):l()}),function(){l()},null,!0)}else if("R"==m){m=decodeURIComponent(b.substring(1));try{var m=JSON.parse(m),u={id:m[0],title:m[1],downloadUrl:m[2]};this.remoteInvoke("getFileContent",[u.downloadUrl],null,mxUtils.bind(this,function(b){try{f(new RemoteLibrary(this,
+b,u))}catch(A){l()}}),function(){l()})}catch(z){l()}}else if("S"==m&&null!=this.loadDesktopLib)try{this.loadDesktopLib(decodeURIComponent(b.substring(1)),function(b){f(b)},l)}catch(z){l()}else{var x=null;"G"==m?null!=this.drive&&null!=this.drive.user&&(x=this.drive):"H"==m?null!=this.gitHub&&null!=this.gitHub.getUser()&&(x=this.gitHub):"T"==m?null!=this.trello&&this.trello.isAuthorized()&&(x=this.trello):"D"==m?null!=this.dropbox&&null!=this.dropbox.getUser()&&(x=this.dropbox):"W"==m&&null!=this.oneDrive&&
+null!=this.oneDrive.getUser()&&(x=this.oneDrive);null!=x?x.getLibrary(decodeURIComponent(b.substring(1)),mxUtils.bind(this,function(b){try{f(b)}catch(A){l()}}),function(b){l()}):l(!0)}}})(f,n)}k()}};
App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var b=this.getCurrentFile();"1"==urlParams.embed&&("atlas"==uiTheme||"1"==urlParams.atlas?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="6px",this.buttonContainer.style.right="1"==urlParams.noLangIcon?"0":"25px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"));this.commentsSupported()&&"1"!=urlParams.sketch?null==this.commentButton&&
(this.commentButton=document.createElement("a"),this.commentButton.setAttribute("title",mxResources.get("comments")),this.commentButton.className="geToolbarButton",this.commentButton.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;float:left;cursor:pointer;width:24px;height:24px;background-size:24px 24px;background-position:center center;background-repeat:no-repeat;background-image:url("+Editor.commentImage+");","atlas"==uiTheme?(this.commentButton.style.marginRight=
"10px",this.commentButton.style.marginTop="-3px"):this.commentButton.style.marginTop="min"==uiTheme?"1px":"1"==urlParams.atlas?"-2px":"-5px",mxEvent.addListener(this.commentButton,"click",mxUtils.bind(this,function(){this.actions.get("comments").funct()})),this.buttonContainer.appendChild(this.commentButton),"dark"==uiTheme||"atlas"==uiTheme)&&(this.commentButton.style.filter="invert(100%)"):null!=this.commentButton&&(this.commentButton.parentNode.removeChild(this.commentButton),this.commentButton=
@@ -11940,114 +11950,115 @@ function(){c.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.setVi
function(){var b=g.isEnabled()?"findReplaceWindow":"findWindow";return null!=this[b]&&this[b].window.isVisible()}));c.actions.put("exportVsdx",new Action(mxResources.get("formatVsdx")+" (beta)...",function(){var b=null==c.pages||1>=c.pages.length;if(b)c.exportVisio();else{var d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("formatVsdx"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(e);
var f=c.addCheckbox(d,mxResources.get("allPages"),!b,b);f.style.marginBottom="16px";b=new CustomDialog(c,d,mxUtils.bind(this,function(){c.exportVisio(!f.checked)}),null,mxResources.get("export"));c.showDialog(b.container,300,130,!0,!0)}}));isLocalStorage&&null!=localStorage&&"1"!=urlParams.embed&&c.actions.addAction("configuration...",function(){var b=document.createElement("input");b.setAttribute("type","checkbox");b.style.marginRight="4px";b.checked=mxSettings.getShowStartScreen();b.defaultChecked=
b.checked;if(c.isSettingsEnabled()&&"1"==urlParams.sketch){var d=document.createElement("span");d.style["float"]="right";d.style.cursor="pointer";d.style.userSelect="none";d.style.marginTop="-4px";d.appendChild(b);mxUtils.write(d,mxResources.get("showStartScreen"));mxEvent.addListener(d,"click",function(c){mxEvent.getSource(c)!=b&&(b.checked=!b.checked)});header=d}var e=localStorage.getItem(Editor.configurationKey),d=[[mxResources.get("reset"),function(b,d){c.confirm(mxResources.get("areYouSure"),
-function(){try{mxEvent.isShiftDown(b)?(localStorage.removeItem(Editor.settingsKey),localStorage.removeItem(".drawio-config")):(localStorage.removeItem(Editor.configurationKey),c.hideDialog(),c.alert(mxResources.get("restartForChangeRequired")))}catch(J){c.handleError(J)}})},"Shift+Click to Reset Settings"]],f=c.actions.get("plugins");null!=f&&d.push([mxResources.get("plugins"),f.funct]);EditorUi.isElectronApp||d.push([mxResources.get("share"),function(b,d){if(0<d.value.length)try{var e=JSON.parse(d.value),
-f=window.location.protocol+"//"+window.location.host+"/"+c.getSearch()+"#_CONFIG_"+Graph.compress(JSON.stringify(e)),g=new EmbedDialog(c,f);c.showDialog(g.container,450,240,!0);g.init()}catch(I){c.handleError(I)}else c.handleError({message:mxResources.get("invalidInput")})}]);d=new TextareaDialog(c,mxResources.get("configuration")+":",null!=e?JSON.stringify(JSON.parse(e),null,2):"",function(d){if(null!=d)try{null!=b.parentNode&&(mxSettings.setShowStartScreen(b.checked),mxSettings.save());if(d==e){if(0<
-d.length){var f=JSON.parse(d);localStorage.setItem(Editor.configurationKey,JSON.stringify(f))}else localStorage.removeItem(Editor.configurationKey);c.alert(mxResources.get("restartForChangeRequired"))}c.hideDialog()}catch(J){c.handleError(J)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/configure-diagram-editor",d,b.parentNode);c.showDialog(d.container,620,460,!0,!1);d.init()});if(mxClient.IS_CHROMEAPP||isLocalStorage){this.put("language",new Menu(mxUtils.bind(this,function(b,
-d){var e=mxUtils.bind(this,function(e){var f=""==e?mxResources.get("automatic"):mxLanguageMap[e],g=null;""!=f&&(g=b.addItem(f,null,mxUtils.bind(this,function(){mxSettings.setLanguage(e);mxSettings.save();mxClient.language=e;mxResources.loadDefaultBundle=!1;mxResources.add(RESOURCE_BASE);c.alert(mxResources.get("restartForChangeRequired"))}),d),(e==mxLanguage||""==e&&null==mxLanguage)&&b.addCheckmark(g,Editor.checkmarkImage));return g});e("");b.addSeparator(d);for(var f in mxLanguageMap)e(f)})));var v=
-Menus.prototype.createMenubar;Menus.prototype.createMenubar=function(b){var c=v.apply(this,arguments);if(null!=c&&"1"!=urlParams.noLangIcon){var d=this.get("language");if(null!=d){d=c.addMenu("",d.funct);d.setAttribute("title",mxResources.get("language"));d.style.width="16px";d.style.paddingTop="2px";d.style.paddingLeft="4px";d.style.zIndex="1";d.style.position="absolute";d.style.display="block";d.style.cursor="pointer";d.style.right="17px";"atlas"==uiTheme?(d.style.top="6px",d.style.right="15px"):
-d.style.top="min"==uiTheme?"2px":"0px";var e=document.createElement("div");e.style.backgroundImage="url("+Editor.globeImage+")";e.style.backgroundPosition="center center";e.style.backgroundRepeat="no-repeat";e.style.backgroundSize="19px 19px";e.style.position="absolute";e.style.height="19px";e.style.width="19px";e.style.marginTop="2px";e.style.zIndex="1";d.appendChild(e);mxUtils.setOpacity(d,40);"1"==urlParams.winCtrls&&(d.style.right="95px",d.style.width="19px",d.style.height="19px",d.style.webkitAppRegion=
-"no-drag",e.style.webkitAppRegion="no-drag");if("atlas"==uiTheme||"dark"==uiTheme)d.style.opacity="0.85",d.style.filter="invert(100%)";document.body.appendChild(d);c.langIcon=d}}return c}}c.customLayoutConfig=[{layout:"mxHierarchicalLayout",config:{orientation:"west",intraCellSpacing:30,interRankCellSpacing:100,interHierarchySpacing:60,parallelEdgeSpacing:10}}];c.actions.addAction("runLayout",function(){var b=new TextareaDialog(c,"Run Layouts:",JSON.stringify(c.customLayoutConfig,null,2),function(b){if(0<
-b.length)try{var d=JSON.parse(b);c.executeLayoutList(d);c.customLayoutConfig=d}catch(D){c.handleError(D),null!=window.console&&console.error(D)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/apply-layouts");c.showDialog(b.container,620,460,!0,!0);b.init()});var p=this.get("layout"),u=p.funct;p.funct=function(b,d){u.apply(this,arguments);b.addItem(mxResources.get("orgChart"),null,function(){function b(){"undefined"!==typeof mxOrgChartLayout||c.loadingOrgChart||c.isOffline(!0)?
-k():c.spinner.spin(document.body,mxResources.get("loading"))&&(c.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",k)})})}):mxscript("js/extensions.min.js",k))}var d=null,e=20,f=20,g=!0,k=function(){c.loadingOrgChart=!1;c.spinner.stop();if("undefined"!==typeof mxOrgChartLayout&&null!=d&&g){var b=c.editor.graph,
-k=new mxOrgChartLayout(b,d,e,f),l=b.getDefaultParent();1<b.model.getChildCount(b.getSelectionCell())&&(l=b.getSelectionCell());k.execute(l);g=!1}},l=document.createElement("div"),m=document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";mxUtils.write(m,mxResources.get("orgChartType")+": ");l.appendChild(m);var n=document.createElement("select");n.style.width="200px";n.style.boxSizing="border-box";for(var m=[mxResources.get("linear"),mxResources.get("hanger2"),
-mxResources.get("hanger4"),mxResources.get("fishbone1"),mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")],p=0;p<m.length;p++){var q=document.createElement("option");mxUtils.write(q,m[p]);q.value=p;2==p&&q.setAttribute("selected","selected");n.appendChild(q)}mxEvent.addListener(n,"change",function(){d=n.value});l.appendChild(n);m=document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";
-mxUtils.write(m,mxResources.get("parentChildSpacing")+": ");l.appendChild(m);var t=document.createElement("input");t.type="number";t.value=e;t.style.width="200px";t.style.boxSizing="border-box";l.appendChild(t);mxEvent.addListener(t,"change",function(){e=t.value});m=document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";mxUtils.write(m,mxResources.get("siblingSpacing")+": ");l.appendChild(m);var y=document.createElement("input");y.type="number";
-y.value=f;y.style.width="200px";y.style.boxSizing="border-box";l.appendChild(y);mxEvent.addListener(y,"change",function(){f=y.value});l=new CustomDialog(c,l,function(){null==d&&(d=2);b()});c.showDialog(l.container,355,140,!0,!0)},d,null,k());b.addSeparator(d);b.addItem(mxResources.get("parallels"),null,mxUtils.bind(this,function(){var b=new mxParallelEdgeLayout(g);b.checkOverlap=!0;b.spacing=20;c.executeLayout(function(){b.execute(g.getDefaultParent(),g.isSelectionEmpty()?null:g.getSelectionCells())},
-!1)}),d);b.addSeparator(d);c.menus.addMenuItem(b,"runLayout",d,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(b,d){if(!mxClient.IS_CHROMEAPP&&c.isOffline())this.addMenuItems(b,["about"],d);else{var e=b.addItem("Search:",null,null,d,null,null,!1);e.style.backgroundColor=Editor.isDarkMode()?"#505759":"whiteSmoke";e.style.cursor="default";var f=document.createElement("input");f.setAttribute("type","text");f.setAttribute("size","25");f.style.marginLeft=
-"8px";mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(b){var c=mxUtils.trim(f.value);13==b.keyCode&&0<c.length?(this.editorUi.openLink("https://www.diagrams.net/search?src="+(EditorUi.isElectronApp?"DESKTOP":encodeURIComponent(location.host))+"&search="+encodeURIComponent(c)),f.value="",EditorUi.logEvent({category:"SEARCH-HELP",action:"search",label:c}),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0)):27==b.keyCode&&(f.value="")}));e.firstChild.nextSibling.appendChild(f);
-mxEvent.addGestureListeners(f,function(b){document.activeElement!=f&&f.focus();mxEvent.consume(b)},function(b){mxEvent.consume(b)},function(b){mxEvent.consume(b)});window.setTimeout(function(){f.focus()},0);EditorUi.isElectronApp?(c.actions.addAction("website...",function(){c.openLink("https://www.diagrams.net")}),c.actions.addAction("check4Updates",function(){c.checkForUpdates()}),this.addMenuItems(b,"- keyboardShortcuts quickStart website support -".split(" "),d),"1"!=urlParams.disableUpdate&&this.addMenuItems(b,
-["check4Updates","-"],d),this.addMenuItems(b,["forkme","-","about"],d)):this.addMenuItems(b,"- keyboardShortcuts quickStart support - forkme downloadDesktop - about".split(" "),d)}"1"==urlParams.test&&(b.addSeparator(d),this.addSubmenu("testDevelop",b,d))})));mxResources.parse("diagramLanguage=Diagram Language");c.actions.addAction("diagramLanguage...",function(){var b=prompt("Language Code",Graph.diagramLanguage||"");null!=b&&(Graph.diagramLanguage=0<b.length?b:null,g.refresh())});if("1"==urlParams.test){mxResources.parse("testDevelop=Develop");
-mxResources.parse("showBoundingBox=Show bounding box");mxResources.parse("createSidebarEntry=Create Sidebar Entry");mxResources.parse("testCheckFile=Check File");mxResources.parse("testDiff=Diff/Sync");mxResources.parse("testInspect=Inspect");mxResources.parse("testShowConsole=Show Console");mxResources.parse("testXmlImageExport=XML Image Export");mxResources.parse("testDownloadRtModel=Export RT model");mxResources.parse("testImportRtModel=Import RT model");c.actions.addAction("createSidebarEntry",
-mxUtils.bind(this,function(){if(!g.isSelectionEmpty()){var b=g.cloneCells(g.getSelectionCells()),d=g.getBoundingBoxFromGeometry(b),b=g.moveCells(b,-d.x,-d.y);c.showTextDialog("Create Sidebar Entry","this.addDataEntry('tag1 tag2', "+d.width+", "+d.height+", 'The Title', '"+Graph.compress(mxUtils.getXml(g.encodeCells(b)))+"'),")}}));c.actions.addAction("showBoundingBox",mxUtils.bind(this,function(){var b=g.getGraphBounds(),c=g.view.translate,d=g.view.scale;g.insertVertex(g.getDefaultParent(),null,"",
-b.x/d-c.x,b.y/d-c.y,b.width/d,b.height/d,"fillColor=none;strokeColor=red;")}));c.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var b=null!=c.pages&&null!=c.getCurrentFile()?c.getCurrentFile().getAnonymizedXmlForPages(c.pages):"",b=new TextareaDialog(c,"Paste Data:",b,function(b){if(0<b.length)try{var d=function(b){function c(b){if(null==p[b]){if(p[b]=!0,null!=f[b]){for(;0<f[b].length;){var e=f[b].pop();c(e)}delete f[b]}}else mxLog.debug(d+": Visited: "+b)}var d=b.parentNode.id,e=
-b.childNodes;b={};for(var f={},g=null,k={},l=0;l<e.length;l++){var m=e[l];if(null!=m.id&&0<m.id.length)if(null==b[m.id]){b[m.id]=m.id;var n=m.getAttribute("parent");null==n?null!=g?mxLog.debug(d+": Multiple roots: "+m.id):g=m.id:(null==f[n]&&(f[n]=[]),f[n].push(m.id))}else k[m.id]=m.id}0<Object.keys(k).length?(e=d+": "+Object.keys(k).length+" Duplicates: "+Object.keys(k).join(", "),mxLog.debug(e+" (see console)")):mxLog.debug(d+": Checked");var p={};null==g?mxLog.debug(d+": No root"):(c(g),Object.keys(p).length!=
-Object.keys(b).length&&(mxLog.debug(d+": Invalid tree: (see console)"),console.log(d+": Invalid tree",f)))};"<"!=b.charAt(0)&&(b=Graph.decompress(b),mxLog.debug("See console for uncompressed XML"),console.log("xml",b));var e=mxUtils.parseXml(b),f=c.getPagesForNode(e.documentElement,"mxGraphModel");if(null!=f&&0<f.length)try{var g=c.getHashValueForPages(f);mxLog.debug("Checksum: ",g)}catch(K){mxLog.debug("Error: ",K.message)}else mxLog.debug("No pages found for checksum");var k=e.getElementsByTagName("root");
-for(b=0;b<k.length;b++)d(k[b]);mxLog.show()}catch(K){c.handleError(K),null!=window.console&&console.error(K)}});c.showDialog(b.container,620,460,!0,!0);b.init()}));var x=null;c.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=c.pages){var b=new TextareaDialog(c,"Diff/Sync:","",function(b){var d=c.getCurrentFile();if(0<b.length&&null!=d)try{var e=JSON.parse(b);d.patch([e],null,!0);c.hideDialog()}catch(E){c.handleError(E)}},null,"Close",null,null,null,!0,null,"Patch",null,[["Snapshot",
-function(d,e){x=c.getPagesForNode(mxUtils.parseXml(c.getFileData(!0)).documentElement);b.textarea.value="Snapshot updated "+(new Date).toLocaleString()}],["Diff",function(d,e){try{b.textarea.value=JSON.stringify(c.diffPages(x,c.pages),null,2)}catch(D){c.handleError(D)}}]]);null==x?(x=c.getPagesForNode(mxUtils.parseXml(c.getFileData(!0)).documentElement),b.textarea.value="Snapshot created "+(new Date).toLocaleString()):b.textarea.value=JSON.stringify(c.diffPages(x,c.pages),null,2);c.showDialog(b.container,
-620,460,!0,!0);b.init()}else c.alert("No pages")}));c.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(c,g.getModel())}));c.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var b=new mxImageExport,c=g.getGraphBounds(),d=g.view.scale,e=mxUtils.createXmlDocument(),f=e.createElement("output");e.appendChild(f);e=new mxXmlCanvas2D(f);e.translate(Math.floor((1-c.x)/d),Math.floor((1-c.y)/d));e.scale(1/d);var k=0,l=e.save;e.save=function(){k++;l.apply(this,arguments)};
-var m=e.restore;e.restore=function(){k--;m.apply(this,arguments)};var n=b.drawShape;b.drawShape=function(b){mxLog.debug("entering shape",b,k);n.apply(this,arguments);mxLog.debug("leaving shape",b,k)};b.drawState(g.getView().getState(g.model.root),e);mxLog.show();mxLog.debug(mxUtils.getXml(f));mxLog.debug("stateCounter",k)}));c.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-2});this.put("testDevelop",
-new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testShowConsole".split(" "),c)})))}c.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!c.isOffline()?c.showDialog((new MoreShapesDialog(c,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):c.showDialog((new MoreShapesDialog(c,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});c.actions.put("createShape",
-new Action(mxResources.get("shape")+"...",function(b){g.isEnabled()&&(b=new mxCell("",new mxGeometry(0,0,120,120),c.defaultCustomShapeStyle),b.vertex=!0,b=new EditShapeDialog(c,b,mxResources.get("editShape")+":",630,400),c.showDialog(b.container,640,480,!0,!1),b.init())})).isEnabled=k;c.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(b){c.spinner.stop();c.showHtmlDialog(mxResources.get("create"),
-"https://www.diagrams.net/doc/faq/embed-html-options",b,function(b,d,e,f,g,k,l,m,n,p,q){c.createHtml(b,d,e,f,g,k,l,m,n,p,q,mxUtils.bind(this,function(b,d){var e=new EmbedDialog(c,b+"\n"+d,null,null,function(){var e=window.open(),f=e.document;if(null!=f){"CSS1Compat"===document.compatMode&&f.writeln("<!DOCTYPE html>");f.writeln("<html>");f.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');f.writeln("<body>");f.writeln(b);var g=mxClient.IS_IE||
-mxClient.IS_EDGE||null!=document.documentMode;g&&f.writeln(d);f.writeln("</body>");f.writeln("</html>");f.close();if(!g){var k=e.document.createElement("div");k.marginLeft="26px";k.marginTop="26px";mxUtils.write(k,mxResources.get("updatingDocument"));g=e.document.createElement("img");g.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");g.style.marginLeft="6px";k.appendChild(g);e.document.body.insertBefore(k,e.document.body.firstChild);window.setTimeout(function(){var b=
-document.createElement("script");b.type="text/javascript";b.src=/<script.*?src="(.*?)"/.exec(d)[1];f.body.appendChild(b);k.parentNode.removeChild(k)},20)}}else c.handleError({message:mxResources.get("errorUpdatingPreview")})});c.showDialog(e.container,450,240,!0,!0);e.init()}))})})}));c.actions.put("liveImage",new Action("Live image...",function(){var b=c.getCurrentFile();null!=b&&c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(d){c.spinner.stop();
-null!=d?(d=new EmbedDialog(c,'<img src="'+(b.constructor!=DriveFile?d:"https://drive.google.com/uc?id="+b.getId())+'"/>'),c.showDialog(d.container,450,240,!0,!0),d.init()):c.handleError({message:mxResources.get("invalidPublicUrl")})})}));c.actions.put("embedImage",new Action(mxResources.get("image")+"...",function(){c.showEmbedImageDialog(function(b,d,e,f,g,k){c.spinner.spin(document.body,mxResources.get("loading"))&&c.createEmbedImage(b,d,e,f,g,k,function(b){c.spinner.stop();b=new EmbedDialog(c,
-b);c.showDialog(b.container,450,240,!0,!0);b.init()},function(b){c.spinner.stop();c.handleError(b)})},mxResources.get("image"),mxResources.get("retina"),c.isExportToCanvas())}));c.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+"...",function(){c.showEmbedImageDialog(function(b,d,e,f,g,k){c.spinner.spin(document.body,mxResources.get("loading"))&&c.createEmbedSvg(b,d,e,f,g,k,function(b){c.spinner.stop();b=new EmbedDialog(c,b);c.showDialog(b.container,450,240,!0,!0);b.init()},function(b){c.spinner.stop();
-c.handleError(b)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://www.diagrams.net/doc/faq/embed-svg.html")}));c.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var b=g.getGraphBounds();c.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil(b.height/g.view.scale)+2,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(p){c.spinner.stop();var q=[];n&&q.push("tags=%7B%7D");
-p=new EmbedDialog(c,'<iframe frameborder="0" style="width:'+l+";height:"+m+';" src="'+c.createLink(b,d,e,f,g,k,p,null,q)+'"></iframe>');c.showDialog(p.container,450,240,!0,!0);p.init()})},!0)}));c.actions.put("embedNotion",new Action(mxResources.get("notion")+"...",function(){var b=document.createElement("div");b.style.position="absolute";b.style.bottom="30px";b.style.textAlign="center";b.style.width="100%";b.style.left="0px";var d=document.createElement("a");d.setAttribute("href","javascript:void(0);");
-d.setAttribute("target","_blank");d.style.cursor="pointer";mxUtils.write(d,mxResources.get("getNotionChromeExtension"));b.appendChild(d);mxEvent.addListener(d,"click",function(b){c.openLink("https://chrome.google.com/webstore/detail/drawio-for-notion/plhaalebpkihaccllnkdaokdoeaokmle");mxEvent.consume(b)});c.showPublishLinkDialog(mxResources.get("notion"),null,null,null,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(l){c.spinner.stop();
-var m=["border=0"];n&&m.push("tags=%7B%7D");l=new EmbedDialog(c,c.createLink(b,d,e,f,g,k,l,null,m,!0));c.showDialog(l.container,450,240,!0,!0);l.init()})},!0,"https://www.diagrams.net/blog/drawio-notion",b)}));c.actions.put("publishLink",new Action(mxResources.get("link")+"...",function(){c.showPublishLinkDialog(null,null,null,null,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(l){c.spinner.stop();var m=[];n&&m.push("tags=%7B%7D");
-l=new EmbedDialog(c,c.createLink(b,d,e,f,g,k,l,null,m));c.showDialog(l.container,450,240,!0,!0);l.init()})})}));c.actions.addAction("microsoftOffice...",function(){c.openLink("https://office.draw.io")});c.actions.addAction("googleDocs...",function(){c.openLink("http://docsaddon.draw.io")});c.actions.addAction("googleSlides...",function(){c.openLink("https://slidesaddon.draw.io")});c.actions.addAction("googleSheets...",function(){c.openLink("https://sheetsaddon.draw.io")});c.actions.addAction("googleSites...",
-function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(b){c.spinner.stop();b=new GoogleSitesDialog(c,b);c.showDialog(b.container,420,256,!0,!0);b.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)p=c.actions.addAction("scratchpad",function(){c.toggleScratchpad()}),p.setToggleAction(!0),p.setSelectedCallback(function(){return null!=c.scratchpad}),"0"!=urlParams.plugins&&c.actions.addAction("plugins...",function(){c.showDialog((new PluginsDialog(c)).container,
-380,240,!0,!1)});p=c.actions.addAction("search",function(){var b=c.sidebar.isEntryVisible("search");c.sidebar.showPalette("search",!b);isLocalStorage&&(mxSettings.settings.search=!b,mxSettings.save())});p.label=mxResources.get("searchShapes");p.setToggleAction(!0);p.setSelectedCallback(function(){return c.sidebar.isEntryVisible("search")});"1"==urlParams.embed&&(c.actions.get("save").funct=function(b){g.isEditing()&&g.stopEditing();var d="0"!=urlParams.pages||null!=c.pages&&1<c.pages.length?c.getFileData(!0):
-mxUtils.getXml(c.editor.getGraphXml());if("json"==urlParams.proto){var e=c.createLoadMessage("save");e.xml=d;b&&(e.exit=!0);d=JSON.stringify(e)}(window.opener||window.parent).postMessage(d,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(c.editor.modified=!1,c.editor.setStatus(""));b=c.getCurrentFile();null==b||b.constructor==EmbedFile||b.constructor==LocalFile&&null==b.mode||c.saveFile()},c.actions.addAction("saveAndExit",function(){c.actions.get("save").funct(!0)}).label="1"==urlParams.publishClose?
-mxResources.get("publish"):mxResources.get("saveAndExit"),c.actions.addAction("exit",function(){if("1"==urlParams.embedInline)c.sendEmbeddedSvgExport();else{var b=function(){c.editor.modified=!1;var b="json"==urlParams.proto?JSON.stringify({event:"exit",modified:c.editor.modified}):"";(window.opener||window.parent).postMessage(b,"*")};c.editor.modified?c.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}}));this.put("exportAs",new Menu(mxUtils.bind(this,
-function(b,d){c.isExportToCanvas()?(this.addMenuItems(b,["exportPng"],d),c.jpgSupported&&this.addMenuItems(b,["exportJpg"],d)):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPng","exportJpg"],d);this.addMenuItems(b,["exportSvg","-"],d);c.isOffline()||c.printPdfExport?this.addMenuItems(b,["exportPdf"],d):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPdf"],d);mxClient.IS_IE||"undefined"===typeof VsdxExport&&c.isOffline()||this.addMenuItems(b,
-["exportVsdx"],d);this.addMenuItems(b,["-","exportHtml","exportXml","exportUrl"],d);c.isOffline()||(b.addSeparator(d),this.addMenuItem(b,"export",d).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom",new Menu(mxUtils.bind(this,function(b,d){function e(b){b.pickFile(function(d){c.spinner.spin(document.body,mxResources.get("loading"))&&b.getFile(d,function(b){var d="data:image/"==b.getData().substring(0,11)?p(b.getTitle()):"text/xml";/\.svg$/i.test(b.getTitle())&&
-!c.editor.isDataSvg(b.getData())&&(b.setData(Editor.createSvgDataUri(b.getData())),d="image/svg+xml");k(b.getData(),d,b.getTitle())},function(b){c.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null)},b==c.drive)},!0)}var k=mxUtils.bind(this,function(b,d,e){var f=g.view,k=g.getGraphBounds(),l=g.snap(Math.ceil(Math.max(0,k.x/f.scale-f.translate.x)+4*g.gridSize)),m=g.snap(Math.ceil(Math.max(0,(k.y+k.height)/f.scale-f.translate.y)+4*g.gridSize));"data:image/"==b.substring(0,11)?c.loadImage(b,
-mxUtils.bind(this,function(f){var k=!0,n=mxUtils.bind(this,function(){c.resizeImage(f,b,mxUtils.bind(this,function(f,n,p){f=k?Math.min(1,Math.min(c.maxImageSize/n,c.maxImageSize/p)):1;c.importFile(b,d,l,m,Math.round(n*f),Math.round(p*f),e,function(b){c.spinner.stop();g.setSelectionCells(b);g.scrollCellToVisible(g.getSelectionCell())})}),k)});b.length>c.resampleThreshold?c.confirmImageResize(function(b){k=b;n()}):n()}),mxUtils.bind(this,function(){c.handleError({message:mxResources.get("cannotOpenFile")})})):
-c.importFile(b,d,l,m,0,0,e,function(b){c.spinner.stop();g.setSelectionCells(b);g.scrollCellToVisible(g.getSelectionCell())})}),p=mxUtils.bind(this,function(b){var c="text/xml";/\.png$/i.test(b)?c="image/png":/\.jpe?g$/i.test(b)?c="image/jpg":/\.gif$/i.test(b)?c="image/gif":/\.pdf$/i.test(b)&&(c="application/pdf");return c});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){e(c.drive)},d):n&&"function"===typeof window.DriveClient&&
-b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){e(c.oneDrive)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){e(c.dropbox)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+
-" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){e(c.gitHub)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){e(c.gitLab)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){e(c.notion)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){e(c.trello)},d):m&&"function"===typeof window.TrelloClient&&
-b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.importLocalFile(!1)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.importLocalFile(!0)},d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(c,"",mxResources.get("import"),
-function(b){if(null!=b&&0<b.length&&c.spinner.spin(document.body,mxResources.get("loading"))){var d=/(\.png)($|\?)/i.test(b)?"image/png":"text/xml";c.editor.loadUrl(PROXY_URL+"?url="+encodeURIComponent(b),function(c){k(c,d,b)},function(){c.spinner.stop();c.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==d)}},mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d))}))).isEnabled=k;this.put("theme",new Menu(mxUtils.bind(this,function(b,d){var e="1"==urlParams.sketch?
-"sketch":mxSettings.getUi(),f=b.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");c.alert(mxResources.get("restartForChangeRequired"))},d);"kennedy"!=e&&"atlas"!=e&&"dark"!=e&&"min"!=e&&"sketch"!=e&&b.addCheckmark(f,Editor.checkmarkImage);b.addSeparator(d);f=b.addItem(mxResources.get("default"),null,function(){mxSettings.setUi("kennedy");c.alert(mxResources.get("restartForChangeRequired"))},d);"kennedy"==e&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("minimal"),
-null,function(){mxSettings.setUi("min");c.alert(mxResources.get("restartForChangeRequired"))},d);"min"==e&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("atlas"),null,function(){mxSettings.setUi("atlas");c.alert(mxResources.get("restartForChangeRequired"))},d);"atlas"==e&&b.addCheckmark(f,Editor.checkmarkImage);if("dark"==e||!mxClient.IS_IE&&!mxClient.IS_IE11)f=b.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");c.alert(mxResources.get("restartForChangeRequired"))},
-d),"dark"==e&&b.addCheckmark(f,Editor.checkmarkImage);b.addSeparator(d);f=b.addItem(mxResources.get("sketch"),null,function(){mxSettings.setUi("sketch");c.alert(mxResources.get("restartForChangeRequired"))},d);"sketch"==e&&b.addCheckmark(f,Editor.checkmarkImage)})));p=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var b=this.editorUi.getCurrentFile();if(null!=b)if(b.constructor==LocalFile&&null!=b.fileHandle)c.showSaveFilePicker(mxUtils.bind(c,function(d,e){b.invalidFileHandle=
-null;b.fileHandle=d;b.title=e.name;b.desc=e;c.save(e.name)}),null,c.createFileSystemOptions(b.getTitle()));else{var d=null!=b.getTitle()?b.getTitle():this.editorUi.defaultFilename,d=new FilenameDialog(this.editorUi,d,mxResources.get("rename"),mxUtils.bind(this,function(c){null!=c&&0<c.length&&null!=b&&c!=b.getTitle()&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&b.rename(c,mxUtils.bind(this,function(b){this.editorUi.spinner.stop()}),mxUtils.bind(this,function(b){this.editorUi.handleError(b,
-null!=b?mxResources.get("errorRenamingFile"):null)}))}),b.constructor==DriveFile||b.constructor==StorageFile?mxResources.get("diagramName"):null,function(b){if(null!=b&&0<b.length)return!0;c.showError(mxResources.get("error"),mxResources.get("invalidName"),mxResources.get("ok"));return!1},null,null,null,null,c.editor.fileExtensions);this.editorUi.showDialog(d.container,340,96,!0,!0);d.init()}}));p.isEnabled=function(){return this.enabled&&k.apply(this,arguments)};p.visible="1"!=urlParams.embed;c.actions.addAction("makeCopy...",
-mxUtils.bind(this,function(){var b=c.getCurrentFile();if(null!=b){var d=c.getCopyFilename(b);b.constructor==DriveFile?(d=new CreateDialog(c,d,mxUtils.bind(this,function(d,e){"_blank"==e?c.editor.editAsNew(c.getFileData(),d):("download"==e&&(e=App.MODE_GOOGLE),null!=d&&0<d.length&&(e==App.MODE_GOOGLE?c.spinner.spin(document.body,mxResources.get("saving"))&&b.saveAs(d,mxUtils.bind(this,function(d){b.desc=d;b.save(!1,mxUtils.bind(this,function(){c.spinner.stop();b.setModified(!1);b.addAllSavedStatus()}),
-mxUtils.bind(this,function(b){c.handleError(b)}))}),mxUtils.bind(this,function(b){c.handleError(b)})):c.createFile(d,c.getFileData(!0),null,e)))}),mxUtils.bind(this,function(){c.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null,!0,null,!0,null,null,null,null,c.editor.fileExtensions),c.showDialog(d.container,420,380,!0,!0),d.init()):c.editor.editAsNew(this.editorUi.getFileData(!0),d)}}));c.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var b=c.getCurrentFile();
-if(b.getMode()==App.MODE_GOOGLE||b.getMode()==App.MODE_ONEDRIVE){var d=!1;if(b.getMode()==App.MODE_GOOGLE&&null!=b.desc.parents)for(var e=0;e<b.desc.parents.length;e++)if(b.desc.parents[e].isRoot){d=!0;break}c.pickFolder(b.getMode(),mxUtils.bind(this,function(d){c.spinner.spin(document.body,mxResources.get("moving"))&&b.move(d,mxUtils.bind(this,function(b){c.spinner.stop()}),mxUtils.bind(this,function(b){c.handleError(b)}))}),null,!0,d)}}));this.put("publish",new Menu(mxUtils.bind(this,function(b,
-c){this.addMenuItems(b,["publishLink"],c)})));c.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){c.openLink("https://app.draw.io/")}));c.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){c.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...",mxUtils.bind(this,function(){try{var b=c.getCurrentFile();null!=b&&b.share()}catch(C){c.handleError(C)}}));this.put("embed",new Menu(mxUtils.bind(this,function(b,
-d){var e=c.getCurrentFile();null==e||e.getMode()!=App.MODE_GOOGLE&&e.getMode()!=App.MODE_GITHUB||!/(\.png)$/i.test(e.getTitle())||this.addMenuItems(b,["liveImage","-"],d);this.addMenuItems(b,["embedImage","embedSvg","-","embedHtml"],d);navigator.standalone||c.isOffline()||this.addMenuItems(b,["embedIframe"],d);"1"==urlParams.embed||c.isOffline()||this.addMenuItems(b,"- googleDocs googleSlides googleSheets - microsoftOffice - embedNotion".split(" "),d)})));c.addInsertItem=function(b,d,e,f){("plantUml"!=
-f||EditorUi.enablePlantUml&&!c.isOffline())&&b.addItem(e,null,mxUtils.bind(this,function(){if("fromText"==f||"formatSql"==f||"plantUml"==f||"mermaid"==f){var b=new ParseDialog(c,e,f);c.showDialog(b.container,620,420,!0,!1);c.dialog.container.style.overflow="auto"}else b=new CreateGraphDialog(c,e,f),c.showDialog(b.container,620,420,!0,!1);b.init()}),d,null,k())};var A=function(b,d,e,f){var k=new mxCell(b,new mxGeometry(0,0,d,e),f);k.vertex=!0;b=g.getCenterInsertPoint(g.getBoundingBoxFromGeometry([k],
-!0));k.geometry.x=b.x;k.geometry.y=b.y;g.getModel().beginUpdate();try{k=g.addCell(k),g.fireEvent(new mxEventObject("cellsInserted","cells",[k]))}finally{g.getModel().endUpdate()}g.scrollCellToVisible(k);g.setSelectionCell(k);g.container.focus();g.editAfterInsert&&g.startEditing(k);window.setTimeout(function(){null!=c.hoverIcons&&c.hoverIcons.update(g.view.getState(k))},0);return k};c.actions.put("insertText",new Action(mxResources.get("text"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&
-g.startEditingAtCell(A("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=k;c.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&A("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=k;c.actions.put("insertEllipse",new Action(mxResources.get("ellipse"),
-function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&A("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=k;c.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&A("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=k;c.addInsertMenuItems=mxUtils.bind(this,function(b,d,e){for(var f=0;f<e.length;f++)"-"==e[f]?b.addSeparator(d):c.addInsertItem(b,d,mxResources.get(e[f])+
-"...",e[f])});this.put("insert",new Menu(mxUtils.bind(this,function(b,d){this.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - createShape insertFreehand - insertImage".split(" "),d);c.insertTemplateEnabled&&!c.isOffline()&&this.addMenuItems(b,["insertTemplate"],d);b.addSeparator(d);this.addSubmenu("insertLayout",b,d,mxResources.get("layout"));this.addSubmenu("insertAdvanced",b,d,mxResources.get("advanced"))})));this.put("insertLayout",new Menu(mxUtils.bind(this,
-function(b,d){c.addInsertMenuItems(b,d,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(b,d){c.addInsertMenuItems(b,d,["fromText","plantUml","mermaid","-","formatSql"]);b.addItem(mxResources.get("csv")+"...",null,function(){c.showImportCsvDialog()},d,null,k())})));this.put("openRecent",new Menu(function(b,d){var e=c.getRecent();if(null!=e){for(var f=0;f<e.length;f++)(function(e){var f=
-e.mode;f==App.MODE_GOOGLE?f="googleDrive":f==App.MODE_ONEDRIVE&&(f="oneDrive");b.addItem(e.title+" ("+mxResources.get(f)+")",null,function(){c.loadFile(e.id)},d)})(e[f]);b.addSeparator(d)}b.addItem(mxResources.get("reset"),null,function(){c.resetRecent()},d)}));this.put("openFrom",new Menu(function(b,d){null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.pickFile(App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+
-mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickFile(App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.pickFile(App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+
-" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.pickFile(App.MODE_GITHUB)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickFile(App.MODE_GITLAB)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.pickFile(App.MODE_NOTION)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.pickFile(App.MODE_TRELLO)},
-d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.pickFile(App.MODE_BROWSER)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.pickFile(App.MODE_DEVICE)},d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=
-new FilenameDialog(c,"",mxResources.get("open"),function(b){null!=b&&0<b.length&&(null==c.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(b):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(b)))},mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(b,d){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&
-(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+
-" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},
-d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITLAB)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_NOTION)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_TRELLO)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+
-" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},d)})),this.put("openLibraryFrom",new Menu(function(b,d){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&
-(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.pickLibrary(App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickLibrary(App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",
-null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.pickLibrary(App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.pickLibrary(App.MODE_GITHUB)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickLibrary(App.MODE_GITLAB)},
-d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.pickLibrary(App.MODE_NOTION)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.pickLibrary(App.MODE_TRELLO)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.pickLibrary(App.MODE_BROWSER)},
-d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.pickLibrary(App.MODE_DEVICE)},d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(c,"",mxResources.get("open"),function(b){if(null!=b&&0<b.length&&c.spinner.spin(document.body,mxResources.get("loading"))){var d=b;c.editor.isCorsEnabledForUrl(b)||(d=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(d,function(d){if(200<=d.getStatus()&&299>=d.getStatus()){c.spinner.stop();
-try{c.loadLibrary(new UrlLibrary(this,d.getText(),b))}catch(J){c.handleError(J,mxResources.get("errorLoadingFile"))}}else c.spinner.stop(),c.handleError(null,mxResources.get("errorLoadingFile"))},function(){c.spinner.stop();c.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d));"1"==urlParams.confLib&&(b.addSeparator(d),b.addItem(mxResources.get("confluenceCloud")+"...",null,function(){c.showRemotelyStoredLibrary(mxResources.get("libraries"))},
-d))})));this.put("edit",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"undo redo - cut copy copyAsImage paste delete - duplicate - findReplace - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));p=c.actions.addAction("comments",mxUtils.bind(this,function(){if(null==this.commentsWindow)this.commentsWindow=new CommentsWindow(c,document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",
-function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("comments"));else{var b=!this.commentsWindow.window.isVisible();this.commentsWindow.window.setVisible(b);this.commentsWindow.refreshCommentsTime();b&&this.commentsWindow.hasError&&this.commentsWindow.refreshComments()}}));p.setToggleAction(!0);p.setSelectedCallback(mxUtils.bind(this,
-function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));c.editor.addListener("fileLoaded",mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var p=this.get("viewPanels"),z=p.funct;p.funct=function(b,d){z.apply(this,arguments);c.menus.addMenuItems(b,["tags"],d);c.commentsSupported()&&c.menus.addMenuItems(b,["comments"],d)};this.put("view",new Menu(mxUtils.bind(this,function(b,d){this.addMenuItems(b,(null!=
-this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers","tags"]).concat(c.commentsSupported()?["comments","-"]:["-"]));this.addMenuItems(b,["-","search"],d);if(isLocalStorage||mxClient.IS_CHROMEAPP){var e=this.addMenuItem(b,"scratchpad",d);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(e,"https://www.diagrams.net/doc/faq/scratchpad")}this.addMenuItems(b,["shapes","-","pageView","pageScale"]);this.addSubmenu("units",b,d);this.addMenuItems(b,"- scrollbars tooltips ruler - grid guides".split(" "),
-d);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(b,"shadowVisible",d);this.addMenuItems(b,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),d);"1"!=urlParams.sketch&&this.addMenuItems(b,["-","fullscreen"],d)})));if(EditorUi.isElectronApp){var B="1"==urlParams.enableSpellCheck,p=c.actions.addAction("spellCheck",function(){c.toggleSpellCheck();B=!B;c.alert(mxResources.get("restartForChangeRequired"))});p.setToggleAction(!0);p.setSelectedCallback(function(){return B})}this.put("extras",
-new Menu(mxUtils.bind(this,function(b,d){"1"==urlParams.noLangIcon&&(this.addSubmenu("language",b,d),b.addSeparator(d));"1"!=urlParams.embed&&(this.addSubmenu("theme",b,d),b.addSeparator(d));if("undefined"!==typeof MathJax){var e=this.addMenuItem(b,"mathematicalTypesetting",d);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(e,"https://www.diagrams.net/doc/faq/math-typesetting")}EditorUi.isElectronApp&&this.addMenuItems(b,["spellCheck"],d);this.addMenuItems(b,["copyConnect",
-"collapseExpand","-"],d);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(b,["showStartScreen"],d);"1"!=urlParams.embed&&this.addMenuItems(b,["autosave"],d);b.addSeparator(d);!c.isOfflineApp()&&isLocalStorage&&this.addMenuItem(b,"plugins",d);this.addMenuItems(b,["-","editDiagram"],d);Graph.translateDiagram&&this.addMenuItems(b,["diagramLanguage"]);this.addMenuItems(b,["-","configuration"],d);b.addSeparator(d);"1"==urlParams.newTempDlg&&(c.actions.addAction("templates",
-function(){function b(b){return{id:b.id,isExt:!0,url:b.downloadUrl,title:b.title,imgUrl:b.thumbnailLink,changedBy:b.lastModifyingUserName,lastModifiedOn:b.modifiedDate}}var d=new TemplatesDialog(c,function(b){console.log(arguments)},null,null,null,"user",function(d,e,f){var g=new Date;g.setDate(g.getDate()-7);c.drive.listFiles(null,g,f?!0:!1,function(c){for(var e=[],f=0;f<c.items.length;f++)e.push(b(c.items[f]));d(e)},e)},function(d,e,f,g){c.drive.listFiles(d,null,g?!0:!1,function(c){for(var d=[],
-f=0;f<c.items.length;f++)d.push(b(c.items[f]));e(d)},f)},function(b,d,e){c.drive.getFile(b.id,function(b){d(b.data)},e)},null,function(b){b({Test:[]},1)},!0,!1);c.showDialog(d.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0)}),this.addMenuItem(b,"templates",d))})));this.put("file",new Menu(mxUtils.bind(this,function(b,d){if("1"==urlParams.embed)this.addSubmenu("importFrom",b,d),this.addSubmenu("exportAs",b,d),this.addSubmenu("embed",b,d),"1"==urlParams.libraries&&(this.addMenuItems(b,
-["-"],d),this.addSubmenu("newLibrary",b,d),this.addSubmenu("openLibraryFrom",b,d)),c.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],d),this.addMenuItems(b,["-","pageSetup","print","-","rename"],d),"1"!=urlParams.embedInline&&("1"==urlParams.noSaveBtn?"0"!=urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"],d):(this.addMenuItems(b,["save"],d),"1"==urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"],d))),"1"!=urlParams.noExitBtn&&this.addMenuItems(b,["exit"],
-d);else{var e=this.editorUi.getCurrentFile();if(null!=e&&e.constructor==DriveFile){e.isRestricted()&&this.addMenuItems(b,["exportOptionsDisabled"],d);this.addMenuItems(b,["save","-","share"],d);var f=this.addMenuItem(b,"synchronize",d);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(f,"https://www.diagrams.net/doc/faq/synchronize");b.addSeparator(d)}else this.addMenuItems(b,["new"],d);this.addSubmenu("openFrom",b,d);isLocalStorage&&this.addSubmenu("openRecent",
-b,d);null!=e&&e.constructor==DriveFile?this.addMenuItems(b,["new","-","rename","makeCopy","moveToFolder"],d):(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==e||e.constructor==LocalFile&&null==e.fileHandle||(b.addSeparator(d),f=this.addMenuItem(b,"synchronize",d),(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(f,"https://www.diagrams.net/doc/faq/synchronize")),this.addMenuItems(b,["-","save","saveAs","-"],d),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=
-c.getServiceName()||c.isOfflineApp()||null==e||this.addMenuItems(b,["share","-"],d),this.addMenuItems(b,["rename"],d),c.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(b,["upload"],d):(this.addMenuItems(b,["makeCopy"],d),null!=e&&e.constructor==OneDriveFile&&this.addMenuItems(b,["moveToFolder"],d)));b.addSeparator(d);this.addSubmenu("importFrom",b,d);this.addSubmenu("exportAs",b,d);b.addSeparator(d);this.addSubmenu("embed",b,d);this.addSubmenu("publish",
-b,d);b.addSeparator(d);this.addSubmenu("newLibrary",b,d);this.addSubmenu("openLibraryFrom",b,d);c.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],d);null!=e&&null!=c.fileNode&&"1"!=urlParams.embedInline&&(e=null!=e.getTitle()?e.getTitle():c.defaultFilename,/(\.html)$/i.test(e)||/(\.svg)$/i.test(e)||this.addMenuItems(b,["-","properties"]));this.addMenuItems(b,["-","pageSetup"],d);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["print"],d);this.addMenuItems(b,["-",
-"close"])}})));b.prototype.execute=function(){var b=this.ui.editor.graph;this.customFonts=this.prevCustomFonts;this.prevCustomFonts=this.ui.menus.customFonts;this.ui.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts));this.extFonts=this.previousExtFonts;for(var c=b.extFonts,d=0;null!=c&&d<c.length;d++){var e=document.getElementById("extFont_"+c[d].name);null!=e&&e.parentNode.removeChild(e)}b.extFonts=[];for(d=0;null!=this.previousExtFonts&&d<this.previousExtFonts.length;d++)this.ui.editor.graph.addExtFont(this.previousExtFonts[d].name,
-this.previousExtFonts[d].url);this.previousExtFonts=c};this.put("fontFamily",new Menu(mxUtils.bind(this,function(d,e){for(var f=mxUtils.bind(this,function(f,g,k,l,m){var n=c.editor.graph;l=this.styleChange(d,l||f,"1"!=urlParams["ext-fonts"]?[mxConstants.STYLE_FONTFAMILY,"fontSource","FType"]:[mxConstants.STYLE_FONTFAMILY],"1"!=urlParams["ext-fonts"]?[f,null!=g?encodeURIComponent(g):null,null]:[f],null,e,function(){"1"!=urlParams["ext-fonts"]?n.setFont(f,g):(document.execCommand("fontname",!1,f),n.addExtFont(f,
-g));c.fireEvent(new mxEventObject("styleChanged","keys","1"!=urlParams["ext-fonts"]?[mxConstants.STYLE_FONTFAMILY,"fontSource","FType"]:[mxConstants.STYLE_FONTFAMILY],"values","1"!=urlParams["ext-fonts"]?[f,null!=g?encodeURIComponent(g):null,null]:[f],"cells",[n.cellEditor.getEditingCell()]))},function(){n.updateLabelElements(n.getSelectionCells(),function(b){b.removeAttribute("face");b.style.fontFamily=null;"PRE"==b.nodeName&&n.replaceElement(b,"div")});"1"==urlParams["ext-fonts"]&&n.addExtFont(f,
-g)});k&&(k=document.createElement("span"),k.className="geSprite geSprite-delete",k.style.cursor="pointer",k.style.display="inline-block",l.firstChild.nextSibling.nextSibling.appendChild(k),mxEvent.addListener(k,mxClient.IS_POINTER?"pointerup":"mouseup",mxUtils.bind(this,function(d){if("1"!=urlParams["ext-fonts"]){delete Graph.recentCustomFonts[f.toLowerCase()];for(var e=0;e<this.customFonts.length;e++)if(this.customFonts[e].name==f&&this.customFonts[e].url==g){this.customFonts.splice(e,1);c.fireEvent(new mxEventObject("customFontsChanged"));
-break}}else{var k=mxUtils.clone(this.editorUi.editor.graph.extFonts);if(null!=k&&0<k.length)for(e=0;e<k.length;e++)if(k[e].name==f){k.splice(e,1);break}for(var l=mxUtils.clone(this.customFonts),e=0;e<l.length;e++)if(l[e].name==f){l.splice(e,1);break}e=new b(this.editorUi,k,l);this.editorUi.editor.graph.model.execute(e)}this.editorUi.hideCurrentMenu();mxEvent.consume(d)})));Graph.addFont(f,g);l.firstChild.nextSibling.style.fontFamily=f;null!=m&&l.setAttribute("title",m)}),g={},k=0;k<this.defaultFonts.length;k++){var l=
-this.defaultFonts[k];"string"===typeof l?f(l):null!=l.fontFamily&&null!=l.fontUrl&&(g[encodeURIComponent(l.fontFamily)+"@"+encodeURIComponent(l.fontUrl)]=!0,f(l.fontFamily,l.fontUrl))}d.addSeparator(e);if("1"!=urlParams["ext-fonts"]){for(var l=function(b){var c=encodeURIComponent(b.name)+(null==b.url?"":"@"+encodeURIComponent(b.url));if(!g[c]){for(var d=b.name,e=0;null!=n[d.toLowerCase()];)d=b.name+" ("+ ++e+")";null==m[c]&&(p.push({name:b.name,url:b.url,label:d,title:b.url}),n[d.toLowerCase()]=b,
-m[c]=b)}},m={},n={},p=[],k=0;k<this.customFonts.length;k++)l(this.customFonts[k]);for(var q in Graph.recentCustomFonts)l(Graph.recentCustomFonts[q]);p.sort(function(b,c){return b.label<c.label?-1:b.label>c.label?1:0});if(0<p.length){for(k=0;k<p.length;k++)f(p[k].name,p[k].url,!0,p[k].label,p[k].url);d.addSeparator(e)}d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){Graph.recentCustomFonts={};this.customFonts=[];c.fireEvent(new mxEventObject("customFontsChanged"))}),e);d.addSeparator(e)}else{q=
-this.editorUi.editor.graph.extFonts;if(null!=q&&0<q.length){for(var l={},t=!1,k=0;k<this.customFonts.length;k++)l[this.customFonts[k].name]=!0;for(k=0;k<q.length;k++)l[q[k].name]||(this.customFonts.push(q[k]),t=!0);t&&this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts))}if(0<this.customFonts.length){for(k=0;k<this.customFonts.length;k++)q=this.customFonts[k].name,l=this.customFonts[k].url,f(q,l,!0),this.editorUi.editor.graph.addExtFont(q,l,!0);d.addSeparator(e);
-d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){var d=new b(this.editorUi,[],[]);c.editor.graph.model.execute(d)}),e);d.addSeparator(e)}}d.addItem(mxResources.get("custom")+"...",null,mxUtils.bind(this,function(){var b=this.editorUi.editor.graph,c=b.getStylesheet().getDefaultVertexStyle()[mxConstants.STYLE_FONTFAMILY],d="s",e=null;if("1"!=urlParams["ext-fonts"]&&b.isEditing()){var f=b.getSelectedEditingElement();null!=f&&(f=mxUtils.getCurrentStyle(f),null!=f&&(c=Graph.stripQuotes(f.fontFamily),
-e=Graph.getFontUrl(c,null),null!=e&&(Graph.isGoogleFontUrl(e)?(e=null,d="g"):d="w")))}else f=b.getView().getState(b.getSelectionCell()),null!=f&&(c=f.style[mxConstants.STYLE_FONTFAMILY]||c,"1"!=urlParams["ext-fonts"]?(f=f.style.fontSource,null!=f&&(f=decodeURIComponent(f),Graph.isGoogleFontUrl(f)?d="g":(d="w",e=f))):(d=f.style.FType||d,"w"==d&&(e=this.editorUi.editor.graph.extFonts,f=null,null!=e&&(f=e.find(function(b){return b.name==c})),e=null!=f?f.url:mxResources.get("urlNotFound",null,"URL not found"))));
-null!=e&&e.substring(0,PROXY_URL.length)==PROXY_URL&&(e=decodeURIComponent(e.substr((PROXY_URL+"?url=").length)));var g=null;document.activeElement==b.cellEditor.textarea&&(g=b.cellEditor.saveSelection());d=new FontDialog(this.editorUi,c,e,d,mxUtils.bind(this,function(c,d,e){null!=g&&(b.cellEditor.restoreSelection(g),g=null);if(null!=c&&0<c.length)if("1"!=urlParams["ext-fonts"]&&b.isEditing())b.setFont(c,d);else{b.getModel().beginUpdate();try{b.stopEditing(!1);"1"!=urlParams["ext-fonts"]?(b.setCellStyles(mxConstants.STYLE_FONTFAMILY,
-c),b.setCellStyles("fontSource",null!=d?encodeURIComponent(d):null),b.setCellStyles("FType",null)):(b.setCellStyles(mxConstants.STYLE_FONTFAMILY,c),"s"!=e&&(b.setCellStyles("FType",e),0==d.indexOf("http://")&&(d=PROXY_URL+"?url="+encodeURIComponent(d)),this.editorUi.editor.graph.addExtFont(c,d)));e=!0;for(var f=0;f<this.customFonts.length;f++)if(this.customFonts[f].name==c){e=!1;break}e&&(this.customFonts.push({name:c,url:d}),this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",
-this.customFonts)))}finally{b.getModel().endUpdate()}}}));this.editorUi.showDialog(d.container,380,Editor.enableWebFonts?250:180,!0,!0);d.init()}),e,null,!0)})))}})();function DiagramPage(b,e){this.node=b;null!=e?this.node.setAttribute("id",e):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")};
+function(){try{mxEvent.isShiftDown(b)?(localStorage.removeItem(Editor.settingsKey),localStorage.removeItem(".drawio-config")):(localStorage.removeItem(Editor.configurationKey),c.hideDialog(),c.alert(mxResources.get("restartForChangeRequired")))}catch(I){c.handleError(I)}})},"Shift+Click to Reset Settings"]],f=c.actions.get("plugins");null!=f&&"1"==urlParams.sketch&&d.push([mxResources.get("plugins"),f.funct]);EditorUi.isElectronApp||d.push([mxResources.get("share"),function(b,d){if(0<d.value.length)try{var e=
+JSON.parse(d.value),f=window.location.protocol+"//"+window.location.host+"/"+c.getSearch()+"#_CONFIG_"+Graph.compress(JSON.stringify(e)),g=new EmbedDialog(c,f);c.showDialog(g.container,450,240,!0);g.init()}catch(K){c.handleError(K)}else c.handleError({message:mxResources.get("invalidInput")})}]);d=new TextareaDialog(c,mxResources.get("configuration")+":",null!=e?JSON.stringify(JSON.parse(e),null,2):"",function(d){if(null!=d)try{if(null!=b.parentNode&&(mxSettings.setShowStartScreen(b.checked),mxSettings.save()),
+d==e)c.hideDialog();else{if(0<d.length){var f=JSON.parse(d);localStorage.setItem(Editor.configurationKey,JSON.stringify(f))}else localStorage.removeItem(Editor.configurationKey);c.hideDialog();c.alert(mxResources.get("restartForChangeRequired"))}}catch(I){c.handleError(I)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/configure-diagram-editor",d,b.parentNode);c.showDialog(d.container,620,460,!0,!1);d.init()});if(mxClient.IS_CHROMEAPP||isLocalStorage){this.put("language",
+new Menu(mxUtils.bind(this,function(b,d){var e=mxUtils.bind(this,function(e){var f=""==e?mxResources.get("automatic"):mxLanguageMap[e],g=null;""!=f&&(g=b.addItem(f,null,mxUtils.bind(this,function(){mxSettings.setLanguage(e);mxSettings.save();mxClient.language=e;mxResources.loadDefaultBundle=!1;mxResources.add(RESOURCE_BASE);c.alert(mxResources.get("restartForChangeRequired"))}),d),(e==mxLanguage||""==e&&null==mxLanguage)&&b.addCheckmark(g,Editor.checkmarkImage));return g});e("");b.addSeparator(d);
+for(var f in mxLanguageMap)e(f)})));var v=Menus.prototype.createMenubar;Menus.prototype.createMenubar=function(b){var c=v.apply(this,arguments);if(null!=c&&"1"!=urlParams.noLangIcon){var d=this.get("language");if(null!=d){d=c.addMenu("",d.funct);d.setAttribute("title",mxResources.get("language"));d.style.width="16px";d.style.paddingTop="2px";d.style.paddingLeft="4px";d.style.zIndex="1";d.style.position="absolute";d.style.display="block";d.style.cursor="pointer";d.style.right="17px";"atlas"==uiTheme?
+(d.style.top="6px",d.style.right="15px"):d.style.top="min"==uiTheme?"2px":"0px";var e=document.createElement("div");e.style.backgroundImage="url("+Editor.globeImage+")";e.style.backgroundPosition="center center";e.style.backgroundRepeat="no-repeat";e.style.backgroundSize="19px 19px";e.style.position="absolute";e.style.height="19px";e.style.width="19px";e.style.marginTop="2px";e.style.zIndex="1";d.appendChild(e);mxUtils.setOpacity(d,40);"1"==urlParams.winCtrls&&(d.style.right="95px",d.style.width=
+"19px",d.style.height="19px",d.style.webkitAppRegion="no-drag",e.style.webkitAppRegion="no-drag");if("atlas"==uiTheme||"dark"==uiTheme)d.style.opacity="0.85",d.style.filter="invert(100%)";document.body.appendChild(d);c.langIcon=d}}return c}}c.customLayoutConfig=[{layout:"mxHierarchicalLayout",config:{orientation:"west",intraCellSpacing:30,interRankCellSpacing:100,interHierarchySpacing:60,parallelEdgeSpacing:10}}];c.actions.addAction("runLayout",function(){var b=new TextareaDialog(c,"Run Layouts:",
+JSON.stringify(c.customLayoutConfig,null,2),function(b){if(0<b.length)try{var d=JSON.parse(b);c.executeLayoutList(d);c.customLayoutConfig=d}catch(D){c.handleError(D),null!=window.console&&console.error(D)}},null,null,null,null,null,!0,null,null,"https://www.diagrams.net/doc/faq/apply-layouts");c.showDialog(b.container,620,460,!0,!0);b.init()});var p=this.get("layout"),u=p.funct;p.funct=function(b,d){u.apply(this,arguments);b.addItem(mxResources.get("orgChart"),null,function(){function b(){"undefined"!==
+typeof mxOrgChartLayout||c.loadingOrgChart||c.isOffline(!0)?k():c.spinner.spin(document.body,mxResources.get("loading"))&&(c.loadingOrgChart=!0,"1"==urlParams.dev?mxscript("js/orgchart/bridge.min.js",function(){mxscript("js/orgchart/bridge.collections.min.js",function(){mxscript("js/orgchart/OrgChart.Layout.min.js",function(){mxscript("js/orgchart/mxOrgChartLayout.js",k)})})}):mxscript("js/extensions.min.js",k))}var d=null,e=20,f=20,g=!0,k=function(){c.loadingOrgChart=!1;c.spinner.stop();if("undefined"!==
+typeof mxOrgChartLayout&&null!=d&&g){var b=c.editor.graph,k=new mxOrgChartLayout(b,d,e,f),l=b.getDefaultParent();1<b.model.getChildCount(b.getSelectionCell())&&(l=b.getSelectionCell());k.execute(l);g=!1}},l=document.createElement("div"),m=document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";mxUtils.write(m,mxResources.get("orgChartType")+": ");l.appendChild(m);var n=document.createElement("select");n.style.width="200px";n.style.boxSizing="border-box";
+for(var m=[mxResources.get("linear"),mxResources.get("hanger2"),mxResources.get("hanger4"),mxResources.get("fishbone1"),mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")],p=0;p<m.length;p++){var q=document.createElement("option");mxUtils.write(q,m[p]);q.value=p;2==p&&q.setAttribute("selected","selected");n.appendChild(q)}mxEvent.addListener(n,"change",function(){d=n.value});l.appendChild(n);m=document.createElement("div");m.style.marginTop=
+"6px";m.style.display="inline-block";m.style.width="140px";mxUtils.write(m,mxResources.get("parentChildSpacing")+": ");l.appendChild(m);var y=document.createElement("input");y.type="number";y.value=e;y.style.width="200px";y.style.boxSizing="border-box";l.appendChild(y);mxEvent.addListener(y,"change",function(){e=y.value});m=document.createElement("div");m.style.marginTop="6px";m.style.display="inline-block";m.style.width="140px";mxUtils.write(m,mxResources.get("siblingSpacing")+": ");l.appendChild(m);
+var t=document.createElement("input");t.type="number";t.value=f;t.style.width="200px";t.style.boxSizing="border-box";l.appendChild(t);mxEvent.addListener(t,"change",function(){f=t.value});l=new CustomDialog(c,l,function(){null==d&&(d=2);b()});c.showDialog(l.container,355,140,!0,!0)},d,null,k());b.addSeparator(d);b.addItem(mxResources.get("parallels"),null,mxUtils.bind(this,function(){var b=new mxParallelEdgeLayout(g);b.checkOverlap=!0;b.spacing=20;c.executeLayout(function(){b.execute(g.getDefaultParent(),
+g.isSelectionEmpty()?null:g.getSelectionCells())},!1)}),d);b.addSeparator(d);c.menus.addMenuItem(b,"runLayout",d,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(b,d){if(!mxClient.IS_CHROMEAPP&&c.isOffline())this.addMenuItems(b,["about"],d);else{var e=b.addItem("Search:",null,null,d,null,null,!1);e.style.backgroundColor=Editor.isDarkMode()?"#505759":"whiteSmoke";e.style.cursor="default";var f=document.createElement("input");f.setAttribute("type","text");
+f.setAttribute("size","25");f.style.marginLeft="8px";mxEvent.addListener(f,"keydown",mxUtils.bind(this,function(b){var c=mxUtils.trim(f.value);13==b.keyCode&&0<c.length?(this.editorUi.openLink("https://www.diagrams.net/search?src="+(EditorUi.isElectronApp?"DESKTOP":encodeURIComponent(location.host))+"&search="+encodeURIComponent(c)),f.value="",EditorUi.logEvent({category:"SEARCH-HELP",action:"search",label:c}),window.setTimeout(mxUtils.bind(this,function(){this.editorUi.hideCurrentMenu()}),0)):27==
+b.keyCode&&(f.value="")}));e.firstChild.nextSibling.appendChild(f);mxEvent.addGestureListeners(f,function(b){document.activeElement!=f&&f.focus();mxEvent.consume(b)},function(b){mxEvent.consume(b)},function(b){mxEvent.consume(b)});window.setTimeout(function(){f.focus()},0);EditorUi.isElectronApp?(c.actions.addAction("website...",function(){c.openLink("https://www.diagrams.net")}),c.actions.addAction("check4Updates",function(){c.checkForUpdates()}),this.addMenuItems(b,"- keyboardShortcuts quickStart website support -".split(" "),
+d),"1"!=urlParams.disableUpdate&&this.addMenuItems(b,["check4Updates","-"],d),this.addMenuItems(b,["forkme","-","about"],d)):this.addMenuItems(b,"- keyboardShortcuts quickStart support - forkme downloadDesktop - about".split(" "),d)}"1"==urlParams.test&&(b.addSeparator(d),this.addSubmenu("testDevelop",b,d))})));mxResources.parse("diagramLanguage=Diagram Language");c.actions.addAction("diagramLanguage...",function(){var b=prompt("Language Code",Graph.diagramLanguage||"");null!=b&&(Graph.diagramLanguage=
+0<b.length?b:null,g.refresh())});if("1"==urlParams.test){mxResources.parse("testDevelop=Develop");mxResources.parse("showBoundingBox=Show bounding box");mxResources.parse("createSidebarEntry=Create Sidebar Entry");mxResources.parse("testCheckFile=Check File");mxResources.parse("testDiff=Diff/Sync");mxResources.parse("testInspect=Inspect");mxResources.parse("testShowConsole=Show Console");mxResources.parse("testXmlImageExport=XML Image Export");mxResources.parse("testDownloadRtModel=Export RT model");
+mxResources.parse("testImportRtModel=Import RT model");c.actions.addAction("createSidebarEntry",mxUtils.bind(this,function(){if(!g.isSelectionEmpty()){var b=g.cloneCells(g.getSelectionCells()),d=g.getBoundingBoxFromGeometry(b),b=g.moveCells(b,-d.x,-d.y);c.showTextDialog("Create Sidebar Entry","this.addDataEntry('tag1 tag2', "+d.width+", "+d.height+", 'The Title', '"+Graph.compress(mxUtils.getXml(g.encodeCells(b)))+"'),")}}));c.actions.addAction("showBoundingBox",mxUtils.bind(this,function(){var b=
+g.getGraphBounds(),c=g.view.translate,d=g.view.scale;g.insertVertex(g.getDefaultParent(),null,"",b.x/d-c.x,b.y/d-c.y,b.width/d,b.height/d,"fillColor=none;strokeColor=red;")}));c.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var b=null!=c.pages&&null!=c.getCurrentFile()?c.getCurrentFile().getAnonymizedXmlForPages(c.pages):"",b=new TextareaDialog(c,"Paste Data:",b,function(b){if(0<b.length)try{var d=function(b){function c(b){if(null==p[b]){if(p[b]=!0,null!=f[b]){for(;0<f[b].length;){var e=
+f[b].pop();c(e)}delete f[b]}}else mxLog.debug(d+": Visited: "+b)}var d=b.parentNode.id,e=b.childNodes;b={};for(var f={},g=null,k={},l=0;l<e.length;l++){var m=e[l];if(null!=m.id&&0<m.id.length)if(null==b[m.id]){b[m.id]=m.id;var n=m.getAttribute("parent");null==n?null!=g?mxLog.debug(d+": Multiple roots: "+m.id):g=m.id:(null==f[n]&&(f[n]=[]),f[n].push(m.id))}else k[m.id]=m.id}0<Object.keys(k).length?(e=d+": "+Object.keys(k).length+" Duplicates: "+Object.keys(k).join(", "),mxLog.debug(e+" (see console)")):
+mxLog.debug(d+": Checked");var p={};null==g?mxLog.debug(d+": No root"):(c(g),Object.keys(p).length!=Object.keys(b).length&&(mxLog.debug(d+": Invalid tree: (see console)"),console.log(d+": Invalid tree",f)))};"<"!=b.charAt(0)&&(b=Graph.decompress(b),mxLog.debug("See console for uncompressed XML"),console.log("xml",b));var e=mxUtils.parseXml(b),f=c.getPagesForNode(e.documentElement,"mxGraphModel");if(null!=f&&0<f.length)try{var g=c.getHashValueForPages(f);mxLog.debug("Checksum: ",g)}catch(J){mxLog.debug("Error: ",
+J.message)}else mxLog.debug("No pages found for checksum");var k=e.getElementsByTagName("root");for(b=0;b<k.length;b++)d(k[b]);mxLog.show()}catch(J){c.handleError(J),null!=window.console&&console.error(J)}});c.showDialog(b.container,620,460,!0,!0);b.init()}));var x=null;c.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=c.pages){var b=new TextareaDialog(c,"Diff/Sync:","",function(b){var d=c.getCurrentFile();if(0<b.length&&null!=d)try{var e=JSON.parse(b);d.patch([e],null,!0);c.hideDialog()}catch(F){c.handleError(F)}},
+null,"Close",null,null,null,!0,null,"Patch",null,[["Snapshot",function(d,e){x=c.getPagesForNode(mxUtils.parseXml(c.getFileData(!0)).documentElement);b.textarea.value="Snapshot updated "+(new Date).toLocaleString()}],["Diff",function(d,e){try{b.textarea.value=JSON.stringify(c.diffPages(x,c.pages),null,2)}catch(D){c.handleError(D)}}]]);null==x?(x=c.getPagesForNode(mxUtils.parseXml(c.getFileData(!0)).documentElement),b.textarea.value="Snapshot created "+(new Date).toLocaleString()):b.textarea.value=
+JSON.stringify(c.diffPages(x,c.pages),null,2);c.showDialog(b.container,620,460,!0,!0);b.init()}else c.alert("No pages")}));c.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(c,g.getModel())}));c.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var b=new mxImageExport,c=g.getGraphBounds(),d=g.view.scale,e=mxUtils.createXmlDocument(),f=e.createElement("output");e.appendChild(f);e=new mxXmlCanvas2D(f);e.translate(Math.floor((1-c.x)/d),Math.floor((1-c.y)/d));
+e.scale(1/d);var k=0,l=e.save;e.save=function(){k++;l.apply(this,arguments)};var m=e.restore;e.restore=function(){k--;m.apply(this,arguments)};var n=b.drawShape;b.drawShape=function(b){mxLog.debug("entering shape",b,k);n.apply(this,arguments);mxLog.debug("leaving shape",b,k)};b.drawState(g.getView().getState(g.model.root),e);mxLog.show();mxLog.debug(mxUtils.getXml(f));mxLog.debug("stateCounter",k)}));c.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();
+mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-2});this.put("testDevelop",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testShowConsole".split(" "),c)})))}c.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!c.isOffline()?c.showDialog((new MoreShapesDialog(c,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):c.showDialog((new MoreShapesDialog(c,
+!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});c.actions.put("createShape",new Action(mxResources.get("shape")+"...",function(b){g.isEnabled()&&(b=new mxCell("",new mxGeometry(0,0,120,120),c.defaultCustomShapeStyle),b.vertex=!0,b=new EditShapeDialog(c,b,mxResources.get("editShape")+":",630,400),c.showDialog(b.container,640,480,!0,!1),b.init())})).isEnabled=k;c.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&
+c.getPublicUrl(c.getCurrentFile(),function(b){c.spinner.stop();c.showHtmlDialog(mxResources.get("create"),"https://www.diagrams.net/doc/faq/embed-html-options",b,function(b,d,e,f,g,k,l,m,n,p,q){c.createHtml(b,d,e,f,g,k,l,m,n,p,q,mxUtils.bind(this,function(b,d){var e=new EmbedDialog(c,b+"\n"+d,null,null,function(){var e=window.open(),f=e.document;if(null!=f){"CSS1Compat"===document.compatMode&&f.writeln("<!DOCTYPE html>");f.writeln("<html>");f.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+
+'</title><meta charset="utf-8"></head>');f.writeln("<body>");f.writeln(b);var g=mxClient.IS_IE||mxClient.IS_EDGE||null!=document.documentMode;g&&f.writeln(d);f.writeln("</body>");f.writeln("</html>");f.close();if(!g){var k=e.document.createElement("div");k.marginLeft="26px";k.marginTop="26px";mxUtils.write(k,mxResources.get("updatingDocument"));g=e.document.createElement("img");g.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");g.style.marginLeft=
+"6px";k.appendChild(g);e.document.body.insertBefore(k,e.document.body.firstChild);window.setTimeout(function(){var b=document.createElement("script");b.type="text/javascript";b.src=/<script.*?src="(.*?)"/.exec(d)[1];f.body.appendChild(b);k.parentNode.removeChild(k)},20)}}else c.handleError({message:mxResources.get("errorUpdatingPreview")})});c.showDialog(e.container,450,240,!0,!0);e.init()}))})})}));c.actions.put("liveImage",new Action("Live image...",function(){var b=c.getCurrentFile();null!=b&&
+c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(d){c.spinner.stop();null!=d?(d=new EmbedDialog(c,'<img src="'+(b.constructor!=DriveFile?d:"https://drive.google.com/uc?id="+b.getId())+'"/>'),c.showDialog(d.container,450,240,!0,!0),d.init()):c.handleError({message:mxResources.get("invalidPublicUrl")})})}));c.actions.put("embedImage",new Action(mxResources.get("image")+"...",function(){c.showEmbedImageDialog(function(b,d,e,f,g,k){c.spinner.spin(document.body,
+mxResources.get("loading"))&&c.createEmbedImage(b,d,e,f,g,k,function(b){c.spinner.stop();b=new EmbedDialog(c,b);c.showDialog(b.container,450,240,!0,!0);b.init()},function(b){c.spinner.stop();c.handleError(b)})},mxResources.get("image"),mxResources.get("retina"),c.isExportToCanvas())}));c.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+"...",function(){c.showEmbedImageDialog(function(b,d,e,f,g,k){c.spinner.spin(document.body,mxResources.get("loading"))&&c.createEmbedSvg(b,d,e,f,g,k,
+function(b){c.spinner.stop();b=new EmbedDialog(c,b);c.showDialog(b.container,450,240,!0,!0);b.init()},function(b){c.spinner.stop();c.handleError(b)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://www.diagrams.net/doc/faq/embed-svg.html")}));c.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var b=g.getGraphBounds();c.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil(b.height/g.view.scale)+2,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,
+mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(p){c.spinner.stop();var q=[];n&&q.push("tags=%7B%7D");p=new EmbedDialog(c,'<iframe frameborder="0" style="width:'+l+";height:"+m+';" src="'+c.createLink(b,d,e,f,g,k,p,null,q)+'"></iframe>');c.showDialog(p.container,450,240,!0,!0);p.init()})},!0)}));c.actions.put("embedNotion",new Action(mxResources.get("notion")+"...",function(){var b=document.createElement("div");b.style.position="absolute";b.style.bottom="30px";b.style.textAlign=
+"center";b.style.width="100%";b.style.left="0px";var d=document.createElement("a");d.setAttribute("href","javascript:void(0);");d.setAttribute("target","_blank");d.style.cursor="pointer";mxUtils.write(d,mxResources.get("getNotionChromeExtension"));b.appendChild(d);mxEvent.addListener(d,"click",function(b){c.openLink("https://chrome.google.com/webstore/detail/drawio-for-notion/plhaalebpkihaccllnkdaokdoeaokmle");mxEvent.consume(b)});c.showPublishLinkDialog(mxResources.get("notion"),null,null,null,function(b,
+d,e,f,g,k,l,m,n){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(l){c.spinner.stop();var m=["border=0"];n&&m.push("tags=%7B%7D");l=new EmbedDialog(c,c.createLink(b,d,e,f,g,k,l,null,m,!0));c.showDialog(l.container,450,240,!0,!0);l.init()})},!0,"https://www.diagrams.net/blog/drawio-notion",b)}));c.actions.put("publishLink",new Action(mxResources.get("link")+"...",function(){c.showPublishLinkDialog(null,null,null,null,function(b,d,e,f,g,k,l,m,n){c.spinner.spin(document.body,
+mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(l){c.spinner.stop();var m=[];n&&m.push("tags=%7B%7D");l=new EmbedDialog(c,c.createLink(b,d,e,f,g,k,l,null,m));c.showDialog(l.container,450,240,!0,!0);l.init()})})}));c.actions.addAction("microsoftOffice...",function(){c.openLink("https://office.draw.io")});c.actions.addAction("googleDocs...",function(){c.openLink("http://docsaddon.draw.io")});c.actions.addAction("googleSlides...",function(){c.openLink("https://slidesaddon.draw.io")});
+c.actions.addAction("googleSheets...",function(){c.openLink("https://sheetsaddon.draw.io")});c.actions.addAction("googleSites...",function(){c.spinner.spin(document.body,mxResources.get("loading"))&&c.getPublicUrl(c.getCurrentFile(),function(b){c.spinner.stop();b=new GoogleSitesDialog(c,b);c.showDialog(b.container,420,256,!0,!0);b.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)p=c.actions.addAction("scratchpad",function(){c.toggleScratchpad()}),p.setToggleAction(!0),p.setSelectedCallback(function(){return null!=
+c.scratchpad}),"0"!=urlParams.plugins&&c.actions.addAction("plugins...",function(){c.showDialog((new PluginsDialog(c)).container,380,240,!0,!1)});p=c.actions.addAction("search",function(){var b=c.sidebar.isEntryVisible("search");c.sidebar.showPalette("search",!b);isLocalStorage&&(mxSettings.settings.search=!b,mxSettings.save())});p.label=mxResources.get("searchShapes");p.setToggleAction(!0);p.setSelectedCallback(function(){return c.sidebar.isEntryVisible("search")});"1"==urlParams.embed&&(c.actions.get("save").funct=
+function(b){g.isEditing()&&g.stopEditing();var d="0"!=urlParams.pages||null!=c.pages&&1<c.pages.length?c.getFileData(!0):mxUtils.getXml(c.editor.getGraphXml());if("json"==urlParams.proto){var e=c.createLoadMessage("save");e.xml=d;b&&(e.exit=!0);d=JSON.stringify(e)}(window.opener||window.parent).postMessage(d,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(c.editor.modified=!1,c.editor.setStatus(""));b=c.getCurrentFile();null==b||b.constructor==EmbedFile||b.constructor==LocalFile&&null==
+b.mode||c.saveFile()},c.actions.addAction("saveAndExit",function(){c.actions.get("save").funct(!0)}).label="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit"),c.actions.addAction("exit",function(){if("1"==urlParams.embedInline)c.sendEmbeddedSvgExport();else{var b=function(){c.editor.modified=!1;var b="json"==urlParams.proto?JSON.stringify({event:"exit",modified:c.editor.modified}):"";(window.opener||window.parent).postMessage(b,"*")};c.editor.modified?c.confirm(mxResources.get("allChangesLost"),
+null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b()}}));this.put("exportAs",new Menu(mxUtils.bind(this,function(b,d){c.isExportToCanvas()?(this.addMenuItems(b,["exportPng"],d),c.jpgSupported&&this.addMenuItems(b,["exportJpg"],d)):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["exportPng","exportJpg"],d);this.addMenuItems(b,["exportSvg","-"],d);c.isOffline()||c.printPdfExport?this.addMenuItems(b,["exportPdf"],d):c.isOffline()||mxClient.IS_IOS&&navigator.standalone||
+this.addMenuItems(b,["exportPdf"],d);mxClient.IS_IE||"undefined"===typeof VsdxExport&&c.isOffline()||this.addMenuItems(b,["exportVsdx"],d);this.addMenuItems(b,["-","exportHtml","exportXml","exportUrl"],d);c.isOffline()||(b.addSeparator(d),this.addMenuItem(b,"export",d).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom",new Menu(mxUtils.bind(this,function(b,d){function e(b){b.pickFile(function(d){c.spinner.spin(document.body,mxResources.get("loading"))&&b.getFile(d,
+function(b){var d="data:image/"==b.getData().substring(0,11)?p(b.getTitle()):"text/xml";/\.svg$/i.test(b.getTitle())&&!c.editor.isDataSvg(b.getData())&&(b.setData(Editor.createSvgDataUri(b.getData())),d="image/svg+xml");k(b.getData(),d,b.getTitle())},function(b){c.handleError(b,null!=b?mxResources.get("errorLoadingFile"):null)},b==c.drive)},!0)}var k=mxUtils.bind(this,function(b,d,e){var f=g.view,k=g.getGraphBounds(),l=g.snap(Math.ceil(Math.max(0,k.x/f.scale-f.translate.x)+4*g.gridSize)),m=g.snap(Math.ceil(Math.max(0,
+(k.y+k.height)/f.scale-f.translate.y)+4*g.gridSize));"data:image/"==b.substring(0,11)?c.loadImage(b,mxUtils.bind(this,function(f){var k=!0,n=mxUtils.bind(this,function(){c.resizeImage(f,b,mxUtils.bind(this,function(f,n,p){f=k?Math.min(1,Math.min(c.maxImageSize/n,c.maxImageSize/p)):1;c.importFile(b,d,l,m,Math.round(n*f),Math.round(p*f),e,function(b){c.spinner.stop();g.setSelectionCells(b);g.scrollCellToVisible(g.getSelectionCell())})}),k)});b.length>c.resampleThreshold?c.confirmImageResize(function(b){k=
+b;n()}):n()}),mxUtils.bind(this,function(){c.handleError({message:mxResources.get("cannotOpenFile")})})):c.importFile(b,d,l,m,0,0,e,function(b){c.spinner.stop();g.setSelectionCells(b);g.scrollCellToVisible(g.getSelectionCell())})}),p=mxUtils.bind(this,function(b){var c="text/xml";/\.png$/i.test(b)?c="image/png":/\.jpe?g$/i.test(b)?c="image/jpg":/\.gif$/i.test(b)?c="image/gif":/\.pdf$/i.test(b)&&(c="application/pdf");return c});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=
+c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){e(c.drive)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){e(c.oneDrive)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?
+b.addItem(mxResources.get("dropbox")+"...",null,function(){e(c.dropbox)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){e(c.gitHub)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){e(c.gitLab)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",
+null,function(){e(c.notion)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){e(c.trello)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.importLocalFile(!1)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.importLocalFile(!0)},
+d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(c,"",mxResources.get("import"),function(b){if(null!=b&&0<b.length&&c.spinner.spin(document.body,mxResources.get("loading"))){var d=/(\.png)($|\?)/i.test(b)?"image/png":"text/xml";c.editor.loadUrl(PROXY_URL+"?url="+encodeURIComponent(b),function(c){k(c,d,b)},function(){c.spinner.stop();c.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==d)}},mxResources.get("url"));
+c.showDialog(b.container,300,80,!0,!0);b.init()},d))}))).isEnabled=k;this.put("theme",new Menu(mxUtils.bind(this,function(b,d){var e="1"==urlParams.sketch?"sketch":mxSettings.getUi(),f=b.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");c.alert(mxResources.get("restartForChangeRequired"))},d);"kennedy"!=e&&"atlas"!=e&&"dark"!=e&&"min"!=e&&"sketch"!=e&&b.addCheckmark(f,Editor.checkmarkImage);b.addSeparator(d);f=b.addItem(mxResources.get("default"),null,function(){mxSettings.setUi("kennedy");
+c.alert(mxResources.get("restartForChangeRequired"))},d);"kennedy"==e&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("minimal"),null,function(){mxSettings.setUi("min");c.alert(mxResources.get("restartForChangeRequired"))},d);"min"==e&&b.addCheckmark(f,Editor.checkmarkImage);f=b.addItem(mxResources.get("atlas"),null,function(){mxSettings.setUi("atlas");c.alert(mxResources.get("restartForChangeRequired"))},d);"atlas"==e&&b.addCheckmark(f,Editor.checkmarkImage);if("dark"==e||!mxClient.IS_IE&&
+!mxClient.IS_IE11)f=b.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");c.alert(mxResources.get("restartForChangeRequired"))},d),"dark"==e&&b.addCheckmark(f,Editor.checkmarkImage);b.addSeparator(d);f=b.addItem(mxResources.get("sketch"),null,function(){mxSettings.setUi("sketch");c.alert(mxResources.get("restartForChangeRequired"))},d);"sketch"==e&&b.addCheckmark(f,Editor.checkmarkImage)})));p=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var b=this.editorUi.getCurrentFile();
+if(null!=b)if(b.constructor==LocalFile&&null!=b.fileHandle)c.showSaveFilePicker(mxUtils.bind(c,function(d,e){b.invalidFileHandle=null;b.fileHandle=d;b.title=e.name;b.desc=e;c.save(e.name)}),null,c.createFileSystemOptions(b.getTitle()));else{var d=null!=b.getTitle()?b.getTitle():this.editorUi.defaultFilename,d=new FilenameDialog(this.editorUi,d,mxResources.get("rename"),mxUtils.bind(this,function(c){null!=c&&0<c.length&&null!=b&&c!=b.getTitle()&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&
+b.rename(c,mxUtils.bind(this,function(b){this.editorUi.spinner.stop()}),mxUtils.bind(this,function(b){this.editorUi.handleError(b,null!=b?mxResources.get("errorRenamingFile"):null)}))}),b.constructor==DriveFile||b.constructor==StorageFile?mxResources.get("diagramName"):null,function(b){if(null!=b&&0<b.length)return!0;c.showError(mxResources.get("error"),mxResources.get("invalidName"),mxResources.get("ok"));return!1},null,null,null,null,c.editor.fileExtensions);this.editorUi.showDialog(d.container,
+340,96,!0,!0);d.init()}}));p.isEnabled=function(){return this.enabled&&k.apply(this,arguments)};p.visible="1"!=urlParams.embed;c.actions.addAction("makeCopy...",mxUtils.bind(this,function(){var b=c.getCurrentFile();if(null!=b){var d=c.getCopyFilename(b);b.constructor==DriveFile?(d=new CreateDialog(c,d,mxUtils.bind(this,function(d,e){"_blank"==e?c.editor.editAsNew(c.getFileData(),d):("download"==e&&(e=App.MODE_GOOGLE),null!=d&&0<d.length&&(e==App.MODE_GOOGLE?c.spinner.spin(document.body,mxResources.get("saving"))&&
+b.saveAs(d,mxUtils.bind(this,function(d){b.desc=d;b.save(!1,mxUtils.bind(this,function(){c.spinner.stop();b.setModified(!1);b.addAllSavedStatus()}),mxUtils.bind(this,function(b){c.handleError(b)}))}),mxUtils.bind(this,function(b){c.handleError(b)})):c.createFile(d,c.getFileData(!0),null,e)))}),mxUtils.bind(this,function(){c.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null,!0,null,!0,null,null,null,null,c.editor.fileExtensions),c.showDialog(d.container,420,380,!0,!0),
+d.init()):c.editor.editAsNew(this.editorUi.getFileData(!0),d)}}));c.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var b=c.getCurrentFile();if(b.getMode()==App.MODE_GOOGLE||b.getMode()==App.MODE_ONEDRIVE){var d=!1;if(b.getMode()==App.MODE_GOOGLE&&null!=b.desc.parents)for(var e=0;e<b.desc.parents.length;e++)if(b.desc.parents[e].isRoot){d=!0;break}c.pickFolder(b.getMode(),mxUtils.bind(this,function(d){c.spinner.spin(document.body,mxResources.get("moving"))&&b.move(d,mxUtils.bind(this,
+function(b){c.spinner.stop()}),mxUtils.bind(this,function(b){c.handleError(b)}))}),null,!0,d)}}));this.put("publish",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,["publishLink"],c)})));c.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){c.openLink("https://app.draw.io/")}));c.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){c.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...",mxUtils.bind(this,
+function(){try{var b=c.getCurrentFile();null!=b&&b.share()}catch(C){c.handleError(C)}}));this.put("embed",new Menu(mxUtils.bind(this,function(b,d){var e=c.getCurrentFile();null==e||e.getMode()!=App.MODE_GOOGLE&&e.getMode()!=App.MODE_GITHUB||!/(\.png)$/i.test(e.getTitle())||this.addMenuItems(b,["liveImage","-"],d);this.addMenuItems(b,["embedImage","embedSvg","-","embedHtml"],d);navigator.standalone||c.isOffline()||this.addMenuItems(b,["embedIframe"],d);"1"==urlParams.embed||c.isOffline()||this.addMenuItems(b,
+"- googleDocs googleSlides googleSheets - microsoftOffice - embedNotion".split(" "),d)})));c.addInsertItem=function(b,d,e,f){("plantUml"!=f||EditorUi.enablePlantUml&&!c.isOffline())&&b.addItem(e,null,mxUtils.bind(this,function(){if("fromText"==f||"formatSql"==f||"plantUml"==f||"mermaid"==f){var b=new ParseDialog(c,e,f);c.showDialog(b.container,620,420,!0,!1);c.dialog.container.style.overflow="auto"}else b=new CreateGraphDialog(c,e,f),c.showDialog(b.container,620,420,!0,!1);b.init()}),d,null,k())};
+var z=function(b,d,e,f){var k=new mxCell(b,new mxGeometry(0,0,d,e),f);k.vertex=!0;b=g.getCenterInsertPoint(g.getBoundingBoxFromGeometry([k],!0));k.geometry.x=b.x;k.geometry.y=b.y;g.getModel().beginUpdate();try{k=g.addCell(k),g.fireEvent(new mxEventObject("cellsInserted","cells",[k]))}finally{g.getModel().endUpdate()}g.scrollCellToVisible(k);g.setSelectionCell(k);g.container.focus();g.editAfterInsert&&g.startEditing(k);window.setTimeout(function(){null!=c.hoverIcons&&c.hoverIcons.update(g.view.getState(k))},
+0);return k};c.actions.put("insertText",new Action(mxResources.get("text"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&g.startEditingAtCell(z("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=k;c.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&z("",120,60,
+"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=k;c.actions.put("insertEllipse",new Action(mxResources.get("ellipse"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&z("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=k;c.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){g.isEnabled()&&!g.isCellLocked(g.getDefaultParent())&&z("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=k;c.addInsertMenuItems=
+mxUtils.bind(this,function(b,d,e){for(var f=0;f<e.length;f++)"-"==e[f]?b.addSeparator(d):c.addInsertItem(b,d,mxResources.get(e[f])+"...",e[f])});this.put("insert",new Menu(mxUtils.bind(this,function(b,d){this.addMenuItems(b,"insertRectangle insertEllipse insertRhombus - insertText insertLink - createShape insertFreehand - insertImage".split(" "),d);c.insertTemplateEnabled&&!c.isOffline()&&this.addMenuItems(b,["insertTemplate"],d);b.addSeparator(d);this.addSubmenu("insertLayout",b,d,mxResources.get("layout"));
+this.addSubmenu("insertAdvanced",b,d,mxResources.get("advanced"))})));this.put("insertLayout",new Menu(mxUtils.bind(this,function(b,d){c.addInsertMenuItems(b,d,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(b,d){c.addInsertMenuItems(b,d,["fromText","plantUml","mermaid","-","formatSql"]);b.addItem(mxResources.get("csv")+"...",null,function(){c.showImportCsvDialog()},d,null,k())})));
+this.put("openRecent",new Menu(function(b,d){var e=c.getRecent();if(null!=e){for(var f=0;f<e.length;f++)(function(e){var f=e.mode;f==App.MODE_GOOGLE?f="googleDrive":f==App.MODE_ONEDRIVE&&(f="oneDrive");b.addItem(e.title+" ("+mxResources.get(f)+")",null,function(){c.loadFile(e.id)},d)})(e[f]);b.addSeparator(d)}b.addItem(mxResources.get("reset"),null,function(){c.resetRecent()},d)}));this.put("openFrom",new Menu(function(b,d){null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.pickFile(App.MODE_GOOGLE)},
+d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickFile(App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.pickFile(App.MODE_DROPBOX)},
+d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.pickFile(App.MODE_GITHUB)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickFile(App.MODE_GITLAB)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.pickFile(App.MODE_NOTION)},
+d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.pickFile(App.MODE_TRELLO)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.pickFile(App.MODE_BROWSER)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.pickFile(App.MODE_DEVICE)},
+d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(c,"",mxResources.get("open"),function(b){null!=b&&0<b.length&&(null==c.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(b):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(b)))},mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d))}));Editor.enableCustomLibraries&&
+(this.put("newLibrary",new Menu(function(b,d){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.showLibraryDialog(null,
+null,null,null,App.MODE_ONEDRIVE)},d):l&&"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=
+c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_GITLAB)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_NOTION)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.showLibraryDialog(null,
+null,null,null,App.MODE_TRELLO)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},
+d)})),this.put("openLibraryFrom",new Menu(function(b,d){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=c.drive?b.addItem(mxResources.get("googleDrive")+"...",null,function(){c.pickLibrary(App.MODE_GOOGLE)},d):n&&"function"===typeof window.DriveClient&&b.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1));null!=c.oneDrive?b.addItem(mxResources.get("oneDrive")+"...",null,function(){c.pickLibrary(App.MODE_ONEDRIVE)},d):l&&
+"function"===typeof window.OneDriveClient&&b.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);null!=c.dropbox?b.addItem(mxResources.get("dropbox")+"...",null,function(){c.pickLibrary(App.MODE_DROPBOX)},d):f&&"function"===typeof window.DropboxClient&&b.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);null!=c.gitHub&&b.addItem(mxResources.get("github")+"...",null,function(){c.pickLibrary(App.MODE_GITHUB)},
+d);null!=c.gitLab&&b.addItem(mxResources.get("gitlab")+"...",null,function(){c.pickLibrary(App.MODE_GITLAB)},d);null!=c.notion&&(b.addSeparator(d),b.addItem(mxResources.get("notion")+"...",null,function(){c.pickLibrary(App.MODE_NOTION)},d));null!=c.trello?b.addItem(mxResources.get("trello")+"...",null,function(){c.pickLibrary(App.MODE_TRELLO)},d):m&&"function"===typeof window.TrelloClient&&b.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},d,null,!1);b.addSeparator(d);
+isLocalStorage&&"0"!=urlParams.browser&&b.addItem(mxResources.get("browser")+"...",null,function(){c.pickLibrary(App.MODE_BROWSER)},d);"1"!=urlParams.noDevice&&b.addItem(mxResources.get("device")+"...",null,function(){c.pickLibrary(App.MODE_DEVICE)},d);c.isOffline()||(b.addSeparator(d),b.addItem(mxResources.get("url")+"...",null,function(){var b=new FilenameDialog(c,"",mxResources.get("open"),function(b){if(null!=b&&0<b.length&&c.spinner.spin(document.body,mxResources.get("loading"))){var d=b;c.editor.isCorsEnabledForUrl(b)||
+(d=PROXY_URL+"?url="+encodeURIComponent(b));mxUtils.get(d,function(d){if(200<=d.getStatus()&&299>=d.getStatus()){c.spinner.stop();try{c.loadLibrary(new UrlLibrary(this,d.getText(),b))}catch(I){c.handleError(I,mxResources.get("errorLoadingFile"))}}else c.spinner.stop(),c.handleError(null,mxResources.get("errorLoadingFile"))},function(){c.spinner.stop();c.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));c.showDialog(b.container,300,80,!0,!0);b.init()},d));"1"==urlParams.confLib&&
+(b.addSeparator(d),b.addItem(mxResources.get("confluenceCloud")+"...",null,function(){c.showRemotelyStoredLibrary(mxResources.get("libraries"))},d))})));this.put("edit",new Menu(mxUtils.bind(this,function(b,c){this.addMenuItems(b,"undo redo - cut copy copyAsImage paste delete - duplicate - findReplace - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));p=c.actions.addAction("comments",mxUtils.bind(this,
+function(){if(null==this.commentsWindow)this.commentsWindow=new CommentsWindow(c,document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",function(){c.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),c.fireEvent(new mxEventObject("comments"));else{var b=!this.commentsWindow.window.isVisible();this.commentsWindow.window.setVisible(b);
+this.commentsWindow.refreshCommentsTime();b&&this.commentsWindow.hasError&&this.commentsWindow.refreshComments()}}));p.setToggleAction(!0);p.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));c.editor.addListener("fileLoaded",mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var p=this.get("viewPanels"),A=p.funct;p.funct=function(b,d){A.apply(this,arguments);
+c.menus.addMenuItems(b,["tags"],d);c.commentsSupported()&&c.menus.addMenuItems(b,["comments"],d)};this.put("view",new Menu(mxUtils.bind(this,function(b,d){this.addMenuItems(b,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers","tags"]).concat(c.commentsSupported()?["comments","-"]:["-"]));this.addMenuItems(b,["-","search"],d);if(isLocalStorage||mxClient.IS_CHROMEAPP){var e=this.addMenuItem(b,"scratchpad",d);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(e,
+"https://www.diagrams.net/doc/faq/scratchpad")}this.addMenuItems(b,["shapes","-","pageView","pageScale"]);this.addSubmenu("units",b,d);this.addMenuItems(b,"- scrollbars tooltips ruler - grid guides".split(" "),d);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(b,"shadowVisible",d);this.addMenuItems(b,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),d);"1"!=urlParams.sketch&&this.addMenuItems(b,["-","fullscreen"],d)})));if(EditorUi.isElectronApp){var B=
+"1"==urlParams.enableSpellCheck,p=c.actions.addAction("spellCheck",function(){c.toggleSpellCheck();B=!B;c.alert(mxResources.get("restartForChangeRequired"))});p.setToggleAction(!0);p.setSelectedCallback(function(){return B})}this.put("extras",new Menu(mxUtils.bind(this,function(b,d){"1"==urlParams.noLangIcon&&(this.addSubmenu("language",b,d),b.addSeparator(d));"1"!=urlParams.embed&&(this.addSubmenu("theme",b,d),b.addSeparator(d));if("undefined"!==typeof MathJax){var e=this.addMenuItem(b,"mathematicalTypesetting",
+d);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(e,"https://www.diagrams.net/doc/faq/math-typesetting")}EditorUi.isElectronApp&&this.addMenuItems(b,["spellCheck"],d);this.addMenuItems(b,["copyConnect","collapseExpand","-"],d);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(b,["showStartScreen"],d);"1"!=urlParams.embed&&this.addMenuItems(b,["autosave"],d);b.addSeparator(d);!c.isOfflineApp()&&isLocalStorage&&this.addMenuItem(b,"plugins",
+d);this.addMenuItems(b,["-","editDiagram"],d);Graph.translateDiagram&&this.addMenuItems(b,["diagramLanguage"]);this.addMenuItems(b,["-","configuration"],d);b.addSeparator(d);"1"==urlParams.newTempDlg&&(c.actions.addAction("templates",function(){function b(b){return{id:b.id,isExt:!0,url:b.downloadUrl,title:b.title,imgUrl:b.thumbnailLink,changedBy:b.lastModifyingUserName,lastModifiedOn:b.modifiedDate}}var d=new TemplatesDialog(c,function(b){console.log(arguments)},null,null,null,"user",function(d,e,
+f){var g=new Date;g.setDate(g.getDate()-7);c.drive.listFiles(null,g,f?!0:!1,function(c){for(var e=[],f=0;f<c.items.length;f++)e.push(b(c.items[f]));d(e)},e)},function(d,e,f,g){c.drive.listFiles(d,null,g?!0:!1,function(c){for(var d=[],f=0;f<c.items.length;f++)d.push(b(c.items[f]));e(d)},f)},function(b,d,e){c.drive.getFile(b.id,function(b){d(b.data)},e)},null,function(b){b({Test:[]},1)},!0,!1);c.showDialog(d.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0)}),this.addMenuItem(b,"templates",
+d))})));this.put("file",new Menu(mxUtils.bind(this,function(b,d){if("1"==urlParams.embed)this.addSubmenu("importFrom",b,d),this.addSubmenu("exportAs",b,d),this.addSubmenu("embed",b,d),"1"==urlParams.libraries&&(this.addMenuItems(b,["-"],d),this.addSubmenu("newLibrary",b,d),this.addSubmenu("openLibraryFrom",b,d)),c.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],d),this.addMenuItems(b,["-","pageSetup","print","-","rename"],d),"1"!=urlParams.embedInline&&("1"==urlParams.noSaveBtn?
+"0"!=urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"],d):(this.addMenuItems(b,["save"],d),"1"==urlParams.saveAndExit&&this.addMenuItems(b,["saveAndExit"],d))),"1"!=urlParams.noExitBtn&&this.addMenuItems(b,["exit"],d);else{var e=this.editorUi.getCurrentFile();if(null!=e&&e.constructor==DriveFile){e.isRestricted()&&this.addMenuItems(b,["exportOptionsDisabled"],d);this.addMenuItems(b,["save","-","share"],d);var f=this.addMenuItem(b,"synchronize",d);(!c.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&
+this.addLinkToItem(f,"https://www.diagrams.net/doc/faq/synchronize");b.addSeparator(d)}else this.addMenuItems(b,["new"],d);this.addSubmenu("openFrom",b,d);isLocalStorage&&this.addSubmenu("openRecent",b,d);null!=e&&e.constructor==DriveFile?this.addMenuItems(b,["new","-","rename","makeCopy","moveToFolder"],d):(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||null==e||e.constructor==LocalFile&&null==e.fileHandle||(b.addSeparator(d),f=this.addMenuItem(b,"synchronize",d),(!c.isOffline()||mxClient.IS_CHROMEAPP||
+EditorUi.isElectronApp)&&this.addLinkToItem(f,"https://www.diagrams.net/doc/faq/synchronize")),this.addMenuItems(b,["-","save","saveAs","-"],d),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=c.getServiceName()||c.isOfflineApp()||null==e||this.addMenuItems(b,["share","-"],d),this.addMenuItems(b,["rename"],d),c.isOfflineApp()?navigator.onLine&&"1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&this.addMenuItems(b,["upload"],d):(this.addMenuItems(b,["makeCopy"],d),null!=e&&e.constructor==OneDriveFile&&
+this.addMenuItems(b,["moveToFolder"],d)));b.addSeparator(d);this.addSubmenu("importFrom",b,d);this.addSubmenu("exportAs",b,d);b.addSeparator(d);this.addSubmenu("embed",b,d);this.addSubmenu("publish",b,d);b.addSeparator(d);this.addSubmenu("newLibrary",b,d);this.addSubmenu("openLibraryFrom",b,d);c.isRevisionHistorySupported()&&this.addMenuItems(b,["-","revisionHistory"],d);null!=e&&null!=c.fileNode&&"1"!=urlParams.embedInline&&(e=null!=e.getTitle()?e.getTitle():c.defaultFilename,/(\.html)$/i.test(e)||
+/(\.svg)$/i.test(e)||this.addMenuItems(b,["-","properties"]));this.addMenuItems(b,["-","pageSetup"],d);mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(b,["print"],d);this.addMenuItems(b,["-","close"])}})));b.prototype.execute=function(){var b=this.ui.editor.graph;this.customFonts=this.prevCustomFonts;this.prevCustomFonts=this.ui.menus.customFonts;this.ui.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts));this.extFonts=this.previousExtFonts;for(var c=b.extFonts,
+d=0;null!=c&&d<c.length;d++){var e=document.getElementById("extFont_"+c[d].name);null!=e&&e.parentNode.removeChild(e)}b.extFonts=[];for(d=0;null!=this.previousExtFonts&&d<this.previousExtFonts.length;d++)this.ui.editor.graph.addExtFont(this.previousExtFonts[d].name,this.previousExtFonts[d].url);this.previousExtFonts=c};this.put("fontFamily",new Menu(mxUtils.bind(this,function(d,e){for(var f=mxUtils.bind(this,function(f,g,k,l,m){var n=c.editor.graph;l=this.styleChange(d,l||f,"1"!=urlParams["ext-fonts"]?
+[mxConstants.STYLE_FONTFAMILY,"fontSource","FType"]:[mxConstants.STYLE_FONTFAMILY],"1"!=urlParams["ext-fonts"]?[f,null!=g?encodeURIComponent(g):null,null]:[f],null,e,function(){"1"!=urlParams["ext-fonts"]?n.setFont(f,g):(document.execCommand("fontname",!1,f),n.addExtFont(f,g));c.fireEvent(new mxEventObject("styleChanged","keys","1"!=urlParams["ext-fonts"]?[mxConstants.STYLE_FONTFAMILY,"fontSource","FType"]:[mxConstants.STYLE_FONTFAMILY],"values","1"!=urlParams["ext-fonts"]?[f,null!=g?encodeURIComponent(g):
+null,null]:[f],"cells",[n.cellEditor.getEditingCell()]))},function(){n.updateLabelElements(n.getSelectionCells(),function(b){b.removeAttribute("face");b.style.fontFamily=null;"PRE"==b.nodeName&&n.replaceElement(b,"div")});"1"==urlParams["ext-fonts"]&&n.addExtFont(f,g)});k&&(k=document.createElement("span"),k.className="geSprite geSprite-delete",k.style.cursor="pointer",k.style.display="inline-block",l.firstChild.nextSibling.nextSibling.appendChild(k),mxEvent.addListener(k,mxClient.IS_POINTER?"pointerup":
+"mouseup",mxUtils.bind(this,function(d){if("1"!=urlParams["ext-fonts"]){delete Graph.recentCustomFonts[f.toLowerCase()];for(var e=0;e<this.customFonts.length;e++)if(this.customFonts[e].name==f&&this.customFonts[e].url==g){this.customFonts.splice(e,1);c.fireEvent(new mxEventObject("customFontsChanged"));break}}else{var k=mxUtils.clone(this.editorUi.editor.graph.extFonts);if(null!=k&&0<k.length)for(e=0;e<k.length;e++)if(k[e].name==f){k.splice(e,1);break}for(var l=mxUtils.clone(this.customFonts),e=0;e<
+l.length;e++)if(l[e].name==f){l.splice(e,1);break}e=new b(this.editorUi,k,l);this.editorUi.editor.graph.model.execute(e)}this.editorUi.hideCurrentMenu();mxEvent.consume(d)})));Graph.addFont(f,g);l.firstChild.nextSibling.style.fontFamily=f;null!=m&&l.setAttribute("title",m)}),g={},k=0;k<this.defaultFonts.length;k++){var l=this.defaultFonts[k];"string"===typeof l?f(l):null!=l.fontFamily&&null!=l.fontUrl&&(g[encodeURIComponent(l.fontFamily)+"@"+encodeURIComponent(l.fontUrl)]=!0,f(l.fontFamily,l.fontUrl))}d.addSeparator(e);
+if("1"!=urlParams["ext-fonts"]){for(var l=function(b){var c=encodeURIComponent(b.name)+(null==b.url?"":"@"+encodeURIComponent(b.url));if(!g[c]){for(var d=b.name,e=0;null!=n[d.toLowerCase()];)d=b.name+" ("+ ++e+")";null==m[c]&&(p.push({name:b.name,url:b.url,label:d,title:b.url}),n[d.toLowerCase()]=b,m[c]=b)}},m={},n={},p=[],k=0;k<this.customFonts.length;k++)l(this.customFonts[k]);for(var q in Graph.recentCustomFonts)l(Graph.recentCustomFonts[q]);p.sort(function(b,c){return b.label<c.label?-1:b.label>
+c.label?1:0});if(0<p.length){for(k=0;k<p.length;k++)f(p[k].name,p[k].url,!0,p[k].label,p[k].url);d.addSeparator(e)}d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){Graph.recentCustomFonts={};this.customFonts=[];c.fireEvent(new mxEventObject("customFontsChanged"))}),e);d.addSeparator(e)}else{q=this.editorUi.editor.graph.extFonts;if(null!=q&&0<q.length){for(var l={},t=!1,k=0;k<this.customFonts.length;k++)l[this.customFonts[k].name]=!0;for(k=0;k<q.length;k++)l[q[k].name]||(this.customFonts.push(q[k]),
+t=!0);t&&this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts))}if(0<this.customFonts.length){for(k=0;k<this.customFonts.length;k++)q=this.customFonts[k].name,l=this.customFonts[k].url,f(q,l,!0),this.editorUi.editor.graph.addExtFont(q,l,!0);d.addSeparator(e);d.addItem(mxResources.get("reset"),null,mxUtils.bind(this,function(){var d=new b(this.editorUi,[],[]);c.editor.graph.model.execute(d)}),e);d.addSeparator(e)}}d.addItem(mxResources.get("custom")+"...",null,
+mxUtils.bind(this,function(){var b=this.editorUi.editor.graph,c=b.getStylesheet().getDefaultVertexStyle()[mxConstants.STYLE_FONTFAMILY],d="s",e=null;if("1"!=urlParams["ext-fonts"]&&b.isEditing()){var f=b.getSelectedEditingElement();null!=f&&(f=mxUtils.getCurrentStyle(f),null!=f&&(c=Graph.stripQuotes(f.fontFamily),e=Graph.getFontUrl(c,null),null!=e&&(Graph.isGoogleFontUrl(e)?(e=null,d="g"):d="w")))}else f=b.getView().getState(b.getSelectionCell()),null!=f&&(c=f.style[mxConstants.STYLE_FONTFAMILY]||
+c,"1"!=urlParams["ext-fonts"]?(f=f.style.fontSource,null!=f&&(f=decodeURIComponent(f),Graph.isGoogleFontUrl(f)?d="g":(d="w",e=f))):(d=f.style.FType||d,"w"==d&&(e=this.editorUi.editor.graph.extFonts,f=null,null!=e&&(f=e.find(function(b){return b.name==c})),e=null!=f?f.url:mxResources.get("urlNotFound",null,"URL not found"))));null!=e&&e.substring(0,PROXY_URL.length)==PROXY_URL&&(e=decodeURIComponent(e.substr((PROXY_URL+"?url=").length)));var g=null;document.activeElement==b.cellEditor.textarea&&(g=
+b.cellEditor.saveSelection());d=new FontDialog(this.editorUi,c,e,d,mxUtils.bind(this,function(c,d,e){null!=g&&(b.cellEditor.restoreSelection(g),g=null);if(null!=c&&0<c.length)if("1"!=urlParams["ext-fonts"]&&b.isEditing())b.setFont(c,d);else{b.getModel().beginUpdate();try{b.stopEditing(!1);"1"!=urlParams["ext-fonts"]?(b.setCellStyles(mxConstants.STYLE_FONTFAMILY,c),b.setCellStyles("fontSource",null!=d?encodeURIComponent(d):null),b.setCellStyles("FType",null)):(b.setCellStyles(mxConstants.STYLE_FONTFAMILY,
+c),"s"!=e&&(b.setCellStyles("FType",e),0==d.indexOf("http://")&&(d=PROXY_URL+"?url="+encodeURIComponent(d)),this.editorUi.editor.graph.addExtFont(c,d)));e=!0;for(var f=0;f<this.customFonts.length;f++)if(this.customFonts[f].name==c){e=!1;break}e&&(this.customFonts.push({name:c,url:d}),this.editorUi.fireEvent(new mxEventObject("customFontsChanged","customFonts",this.customFonts)))}finally{b.getModel().endUpdate()}}}));this.editorUi.showDialog(d.container,380,Editor.enableWebFonts?250:180,!0,!0);d.init()}),
+e,null,!0)})))}})();function DiagramPage(b,e){this.node=b;null!=e?this.node.setAttribute("id",e):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")};
DiagramPage.prototype.setName=function(b){null==b?this.node.removeAttribute("name"):this.node.setAttribute("name",b)};function RenamePage(b,e,d){this.ui=b;this.page=e;this.previous=this.name=d}RenamePage.prototype.execute=function(){var b=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=b;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))};
function MovePage(b,e,d){this.ui=b;this.oldIndex=e;this.newIndex=d}MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var b=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=b;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))};
function SelectPage(b,e,d){this.ui=b;this.previousPage=this.page=e;this.neverShown=!0;null!=e&&(this.neverShown=null==e.viewState,this.ui.updatePageRoot(e),null!=d&&(e.viewState=d,this.neverShown=!1))}
@@ -12125,26 +12136,26 @@ b.geometry.height+10:-g[1].geometry.height-10)*n;var q=u.getOutgoingTreeEdges(u.
p.height,x.y+x.height)-Math.max(p.y,x.y))/n))}}t?l=0:e=0;for(v=0;v<q.length;v++)if(D=u.model.getTerminal(q[v],!1),k==f(D)&&(x=u.view.getState(D),D!=b&&null!=x&&(t&&c!=x.getCenterX()<m.getCenterX()||!t&&c!=x.getCenterY()<m.getCenterY()))){var y=[];u.traverse(x.cell,!0,function(b,c){var d=null!=c&&u.isTreeEdge(c);d&&y.push(c);(null==c||d)&&y.push(b);return null==c||d});u.moveCells(y,(c?1:-1)*e,(c?1:-1)*l)}}}return u.addCells(g,d)}finally{u.model.endUpdate()}}function m(b){u.model.beginUpdate();try{var c=
f(b),d=u.getIncomingTreeEdges(b),e=u.cloneCells([d[0],b]);u.model.setTerminal(d[0],e[1],!1);u.model.setTerminal(e[0],e[1],!0);u.model.setTerminal(e[0],b,!1);var g=u.model.getParent(b),k=g.geometry,l=[];u.view.currentRoot!=g&&(e[1].geometry.x-=k.x,e[1].geometry.y-=k.y);u.traverse(b,!0,function(b,c){var d=null!=c&&u.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});var m=b.geometry.width+40,n=b.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?m=0:c==mxConstants.DIRECTION_NORTH?
(m=0,n=-n):c==mxConstants.DIRECTION_WEST?(m=-m,n=0):c==mxConstants.DIRECTION_EAST&&(n=0);u.moveCells(l,m,n);return u.addCells(e,g)}finally{u.model.endUpdate()}}function p(b,c){u.model.beginUpdate();try{var d=u.model.getParent(b),e=u.getIncomingTreeEdges(b),g=f(b);0==e.length&&(e=[u.createEdge(d,null,"",null,null,u.createCurrentEdgeStyle())],g=c);var k=u.cloneCells([e[0],b]);u.model.setTerminal(k[0],b,!0);if(null==u.model.getTerminal(k[0],!1)){u.model.setTerminal(k[0],k[1],!1);var l=u.getCellStyle(k[1]).newEdgeStyle;
-if(null!=l)try{var m=JSON.parse(l),n;for(n in m)u.setCellStyles(n,m[n],[k[0]]),"edgeStyle"==n&&"elbowEdgeStyle"==m[n]&&u.setCellStyles("elbow",g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[k[0]])}catch(sa){}}var e=u.getOutgoingTreeEdges(b),p=d.geometry,l=[];u.view.currentRoot==d&&(p=new mxRectangle);for(m=0;m<e.length;m++){var q=u.model.getTerminal(e[m],!1);null!=q&&l.push(q)}var t=u.view.getBounds(l),v=u.view.translate,D=u.view.scale;g==mxConstants.DIRECTION_SOUTH?
-(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/D-v.x-p.x+10,k[1].geometry.y+=k[1].geometry.height-p.y+40):g==mxConstants.DIRECTION_NORTH?(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/D-v.x+-p.x+10,k[1].geometry.y-=k[1].geometry.height+p.y+40):(k[1].geometry.x=g==mxConstants.DIRECTION_WEST?k[1].geometry.x-(k[1].geometry.width+p.x+40):k[1].geometry.x+(k[1].geometry.width-p.x+40),k[1].geometry.y=null==t?b.geometry.y+
-(b.geometry.height-k[1].geometry.height)/2:(t.y+t.height)/D-v.y+-p.y+10);return u.addCells(k,d)}finally{u.model.endUpdate()}}function q(b,c,d){b=u.getOutgoingTreeEdges(b);d=u.view.getState(d);var e=[];if(null!=d&&null!=b){for(var f=0;f<b.length;f++){var g=u.view.getState(u.model.getTerminal(b[f],!1));null!=g&&(!c&&Math.min(g.x+g.width,d.x+d.width)>=Math.max(g.x,d.x)||c&&Math.min(g.y+g.height,d.y+d.height)>=Math.max(g.y,d.y))&&e.push(g)}e.sort(function(b,d){return c?b.x+b.width-d.x-d.width:b.y+b.height-
+if(null!=l)try{var m=JSON.parse(l),n;for(n in m)u.setCellStyles(n,m[n],[k[0]]),"edgeStyle"==n&&"elbowEdgeStyle"==m[n]&&u.setCellStyles("elbow",g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[k[0]])}catch(ra){}}var e=u.getOutgoingTreeEdges(b),p=d.geometry,l=[];u.view.currentRoot==d&&(p=new mxRectangle);for(m=0;m<e.length;m++){var q=u.model.getTerminal(e[m],!1);null!=q&&l.push(q)}var t=u.view.getBounds(l),v=u.view.translate,x=u.view.scale;g==mxConstants.DIRECTION_SOUTH?
+(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/x-v.x-p.x+10,k[1].geometry.y+=k[1].geometry.height-p.y+40):g==mxConstants.DIRECTION_NORTH?(k[1].geometry.x=null==t?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(t.x+t.width)/x-v.x+-p.x+10,k[1].geometry.y-=k[1].geometry.height+p.y+40):(k[1].geometry.x=g==mxConstants.DIRECTION_WEST?k[1].geometry.x-(k[1].geometry.width+p.x+40):k[1].geometry.x+(k[1].geometry.width-p.x+40),k[1].geometry.y=null==t?b.geometry.y+
+(b.geometry.height-k[1].geometry.height)/2:(t.y+t.height)/x-v.y+-p.y+10);return u.addCells(k,d)}finally{u.model.endUpdate()}}function q(b,c,d){b=u.getOutgoingTreeEdges(b);d=u.view.getState(d);var e=[];if(null!=d&&null!=b){for(var f=0;f<b.length;f++){var g=u.view.getState(u.model.getTerminal(b[f],!1));null!=g&&(!c&&Math.min(g.x+g.width,d.x+d.width)>=Math.max(g.x,d.x)||c&&Math.min(g.y+g.height,d.y+d.height)>=Math.max(g.y,d.y))&&e.push(g)}e.sort(function(b,d){return c?b.x+b.width-d.x-d.width:b.y+b.height-
d.y-d.height})}return e}function t(b,c){var d=f(b),e=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;(d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST)==e&&d!=c?v.actions.get("selectParent").funct():d==c?(e=u.getOutgoingTreeEdges(b),null!=e&&0<e.length&&u.setSelectionCell(u.model.getTerminal(e[0],!1))):(d=u.getIncomingTreeEdges(b),null!=d&&0<d.length&&(e=q(u.model.getTerminal(d[0],!0),e,b),d=u.view.getState(b),null!=d&&(d=mxUtils.indexOf(e,d),0<=d&&(d+=c==mxConstants.DIRECTION_NORTH||
-c==mxConstants.DIRECTION_WEST?-1:1,0<=d&&d<=e.length-1&&u.setSelectionCell(e[d].cell)))))}var v=this,u=v.editor.graph,x=u.getModel(),A=v.menus.createPopupMenu;v.menus.createPopupMenu=function(c,d,e){A.apply(this,arguments);if(1==u.getSelectionCount()){d=u.getSelectionCell();var f=u.getOutgoingTreeEdges(d);c.addSeparator();0<f.length&&(b(u.getSelectionCell())&&this.addMenuItems(c,["selectChildren"],null,e),this.addMenuItems(c,["selectDescendants"],null,e));b(u.getSelectionCell())?(c.addSeparator(),
+c==mxConstants.DIRECTION_WEST?-1:1,0<=d&&d<=e.length-1&&u.setSelectionCell(e[d].cell)))))}var v=this,u=v.editor.graph,x=u.getModel(),z=v.menus.createPopupMenu;v.menus.createPopupMenu=function(c,d,e){z.apply(this,arguments);if(1==u.getSelectionCount()){d=u.getSelectionCell();var f=u.getOutgoingTreeEdges(d);c.addSeparator();0<f.length&&(b(u.getSelectionCell())&&this.addMenuItems(c,["selectChildren"],null,e),this.addMenuItems(c,["selectDescendants"],null,e));b(u.getSelectionCell())?(c.addSeparator(),
0<u.getIncomingTreeEdges(d).length&&this.addMenuItems(c,["selectSiblings","selectParent"],null,e)):0<u.model.getEdgeCount(d)&&this.addMenuItems(c,["selectConnections"],null,e)}};v.actions.addAction("selectChildren",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var b=u.getSelectionCell(),b=u.getOutgoingTreeEdges(b);if(null!=b){for(var c=[],d=0;d<b.length;d++)c.push(u.model.getTerminal(b[d],!1));u.setSelectionCells(c)}}},null,null,"Alt+Shift+X");v.actions.addAction("selectSiblings",function(){if(u.isEnabled()&&
1==u.getSelectionCount()){var b=u.getSelectionCell(),b=u.getIncomingTreeEdges(b);if(null!=b&&0<b.length&&(b=u.getOutgoingTreeEdges(u.model.getTerminal(b[0],!0)),null!=b)){for(var c=[],d=0;d<b.length;d++)c.push(u.model.getTerminal(b[d],!1));u.setSelectionCells(c)}}},null,null,"Alt+Shift+S");v.actions.addAction("selectParent",function(){if(u.isEnabled()&&1==u.getSelectionCount()){var b=u.getSelectionCell(),b=u.getIncomingTreeEdges(b);null!=b&&0<b.length&&u.setSelectionCell(u.model.getTerminal(b[0],
!0))}},null,null,"Alt+Shift+P");v.actions.addAction("selectDescendants",function(b,c){var d=u.getSelectionCell();if(u.isEnabled()&&u.model.isVertex(d)){if(null!=c&&mxEvent.isAltDown(c))u.setSelectionCells(u.model.getTreeEdges(d,null==c||!mxEvent.isShiftDown(c),null==c||!mxEvent.isControlDown(c)));else{var e=[];u.traverse(d,!0,function(b,d){var f=null!=d&&u.isTreeEdge(d);f&&e.push(d);null!=d&&!f||null!=c&&mxEvent.isShiftDown(c)||e.push(b);return null==d||f})}u.setSelectionCells(e)}},null,null,"Alt+Shift+D");
-var z=u.removeCells;u.removeCells=function(c,d){d=null!=d?d:!0;null==c&&(c=this.getDeletableCells(this.getSelectionCells()));d&&(c=this.getDeletableCells(this.addAllEdges(c)));for(var f=[],g=0;g<c.length;g++){var k=c[g];x.isEdge(k)&&e(k)&&(f.push(k),k=x.getTerminal(k,!1));if(b(k)){var l=[];u.traverse(k,!0,function(b,c){var d=null!=c&&u.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});0<l.length&&(f=f.concat(l),k=u.getIncomingTreeEdges(c[g]),c=c.concat(k))}else null!=k&&f.push(c[g])}c=
-f;return z.apply(this,arguments)};v.hoverIcons.getStateAt=function(c,d,e){return b(c.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,e))};var B=u.duplicateCells;u.duplicateCells=function(c,d){c=null!=c?c:this.getSelectionCells();for(var e=c.slice(0),f=0;f<e.length;f++){var g=u.view.getState(e[f]);if(null!=g&&b(g.cell))for(var k=u.getIncomingTreeEdges(g.cell),g=0;g<k.length;g++)mxUtils.remove(k[g],c)}this.model.beginUpdate();try{var l=B.call(this,c,d);if(l.length==c.length)for(f=0;f<c.length;f++)if(b(c[f])){var m=
+var A=u.removeCells;u.removeCells=function(c,d){d=null!=d?d:!0;null==c&&(c=this.getDeletableCells(this.getSelectionCells()));d&&(c=this.getDeletableCells(this.addAllEdges(c)));for(var f=[],g=0;g<c.length;g++){var k=c[g];x.isEdge(k)&&e(k)&&(f.push(k),k=x.getTerminal(k,!1));if(b(k)){var l=[];u.traverse(k,!0,function(b,c){var d=null!=c&&u.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});0<l.length&&(f=f.concat(l),k=u.getIncomingTreeEdges(c[g]),c=c.concat(k))}else null!=k&&f.push(c[g])}c=
+f;return A.apply(this,arguments)};v.hoverIcons.getStateAt=function(c,d,e){return b(c.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,e))};var B=u.duplicateCells;u.duplicateCells=function(c,d){c=null!=c?c:this.getSelectionCells();for(var e=c.slice(0),f=0;f<e.length;f++){var g=u.view.getState(e[f]);if(null!=g&&b(g.cell))for(var k=u.getIncomingTreeEdges(g.cell),g=0;g<k.length;g++)mxUtils.remove(k[g],c)}this.model.beginUpdate();try{var l=B.call(this,c,d);if(l.length==c.length)for(f=0;f<c.length;f++)if(b(c[f])){var m=
u.getIncomingTreeEdges(l[f]),k=u.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,u.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var y=u.moveCells;u.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var n=g,p=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||u.model.isEdge(c[q])&&null==u.model.getTerminal(c[q],
-!0)){g=u.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var t=u.getIncomingTreeEdges(c[0]);if(0<t.length){var v=u.view.getState(u.model.getTerminal(t[0],!0));if(null!=v){var D=u.view.getState(n);null!=D&&(d=(D.getCenterX()-v.getCenterX())/u.view.scale,e=(D.getCenterY()-v.getCenterY())/u.view.scale)}}}}m=y.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
+!0)){g=u.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var t=u.getIncomingTreeEdges(c[0]);if(0<t.length){var v=u.view.getState(u.model.getTerminal(t[0],!0));if(null!=v){var x=u.view.getState(n);null!=x&&(d=(x.getCenterX()-v.getCenterX())/u.view.scale,e=(x.getCenterY()-v.getCenterY())/u.view.scale)}}}}m=y.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
!0))&&this.model.setTerminal(m[q],n,!0);else if(b(c[q])&&(t=u.getIncomingTreeEdges(c[q]),0<t.length))if(!f)b(n)&&0>mxUtils.indexOf(c,this.model.getTerminal(t[0],!0))&&this.model.setTerminal(t[0],n,!0);else if(0==u.getIncomingTreeEdges(m[q]).length){p=n;if(null==p||p==u.model.getParent(c[q]))p=u.model.getTerminal(t[0],!0);f=this.cloneCell(t[0]);this.addEdge(f,u.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=v.sidebar){var C=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=
-function(c,d,e,f){var g=u.model,k=null;g.beginUpdate();try{if(k=C.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=u.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var G={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},D=v.onKeyDown;v.onKeyDown=function(c){try{if(u.isEnabled()&&
+function(c,d,e,f){var g=u.model,k=null;g.beginUpdate();try{if(k=C.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=u.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var E={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},D=v.onKeyDown;v.onKeyDown=function(c){try{if(u.isEnabled()&&
!u.isEditing()&&b(u.getSelectionCell())&&1==u.getSelectionCount()){var d=null;0<u.getIncomingTreeEdges(u.getSelectionCell()).length&&(9==c.which?d=mxEvent.isShiftDown(c)?m(u.getSelectionCell()):p(u.getSelectionCell()):13==c.which&&(d=l(u.getSelectionCell(),!mxEvent.isShiftDown(c))));if(null!=d&&0<d.length)1==d.length&&u.model.isEdge(d[0])?u.setSelectionCell(u.model.getTerminal(d[0],!1)):u.setSelectionCell(d[d.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(u.view.getState(u.getSelectionCell())),
-u.startEditingAtCell(u.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=G[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(t(u.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(t(u.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(t(u.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(t(u.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(c))}}catch(M){v.handleError(M)}mxEvent.isConsumed(c)||D.apply(this,arguments)};var E=u.connectVertex;u.connectVertex=function(c,d,e,g,k,n,q){var t=u.getIncomingTreeEdges(c);if(b(c)){var v=f(c),D=v==mxConstants.DIRECTION_EAST||v==mxConstants.DIRECTION_WEST,x=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST;return v==d||0==t.length?p(c,d):D==x?m(c):l(c,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)}return E.apply(this,arguments)};u.getSubtree=function(c){var e=
-[c];!d(c)&&!b(c)||n(c)||u.traverse(c,!0,function(b,c){var d=null!=c&&u.isTreeEdge(c);d&&0>mxUtils.indexOf(e,c)&&e.push(c);(null==c||d)&&0>mxUtils.indexOf(e,b)&&e.push(b);return null==c||d});return e};var F=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){F.apply(this,arguments);(d(this.state.cell)||b(this.state.cell))&&!n(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title",
+u.startEditingAtCell(u.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=E[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(t(u.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(t(u.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(t(u.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(t(u.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
+mxEvent.consume(c))}}catch(M){v.handleError(M)}mxEvent.isConsumed(c)||D.apply(this,arguments)};var F=u.connectVertex;u.connectVertex=function(c,d,e,g,k,n,q){var t=u.getIncomingTreeEdges(c);if(b(c)){var v=f(c),x=v==mxConstants.DIRECTION_EAST||v==mxConstants.DIRECTION_WEST,D=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST;return v==d||0==t.length?p(c,d):x==D?m(c):l(c,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)}return F.apply(this,arguments)};u.getSubtree=function(c){var e=
+[c];!d(c)&&!b(c)||n(c)||u.traverse(c,!0,function(b,c){var d=null!=c&&u.isTreeEdge(c);d&&0>mxUtils.indexOf(e,c)&&e.push(c);(null==c||d)&&0>mxUtils.indexOf(e,b)&&e.push(b);return null==c||d});return e};var G=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){G.apply(this,arguments);(d(this.state.cell)||b(this.state.cell))&&!n(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title",
"Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(b){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(b);
-this.graph.isMouseDown=!0;v.hoverIcons.reset();mxEvent.consume(b)})))};var J=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){J.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 K=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){K.apply(this,
+this.graph.isMouseDown=!0;v.hoverIcons.reset();mxEvent.consume(b)})))};var I=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){I.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 J=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){J.apply(this,
arguments);null!=this.moveHandle&&(this.moveHandle.style.display=b?"":"none")};var H=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(b,c){H.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 b=d.apply(this,arguments),e=this.graph;return b.concat([this.addEntry("tree container",
function(){var b=new mxCell("Tree Container",new mxGeometry(0,0,400,320),"swimlane;startSize=20;horizontal=1;containerType=tree;");b.vertex=!0;var c=new mxCell("Parent",new mxGeometry(140,60,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');c.vertex=!0;var d=new mxCell("Child",new mxGeometry(140,140,120,40),'whiteSpace=wrap;html=1;treeFolding=1;treeMoving=1;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","startArrow":"none","endArrow":"none"};');
d.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=none;endArrow=none;rounded=0;");e.geometry.relative=!0;e.edge=!0;c.insertEdge(e,!0);d.insertEdge(e,!1);b.insert(e);b.insert(c);b.insert(d);return sb.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,b.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var b=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;startSize=20;horizontal=1;containerType=tree;");
@@ -12202,9 +12213,9 @@ b.className="geToolbarButton";b.innerHTML="";b.style.backgroundImage="url("+Edit
b.appendChild(c));this.buttonContainer.appendChild(b);this.buttonContainer.style.top="6px";this.editor.fireEvent(new mxEventObject("statusChanged"))}};var v=Sidebar.prototype.getTooltipOffset;Sidebar.prototype.getTooltipOffset=function(b,c){if(null==this.editorUi.sidebarWindow||mxUtils.isAncestorNode(this.editorUi.picker,b)){var d=mxUtils.getOffset(this.editorUi.picker);d.x+=this.editorUi.picker.offsetWidth+4;d.y+=b.offsetTop-c.height/2+16;return d}var e=v.apply(this,arguments),d=mxUtils.getOffset(this.editorUi.sidebarWindow.window.div);
e.x+=d.x-16;e.y+=d.y;return e};var u=Menus.prototype.createPopupMenu;Menus.prototype.createPopupMenu=function(b,c,d){var e=this.editorUi.editor.graph;b.smartSeparators=!0;u.apply(this,arguments);"1"==urlParams.sketch?e.isEnabled()&&(b.addSeparator(),1==e.getSelectionCount()&&this.addMenuItems(b,["-","lockUnlock"],null,d)):1==e.getSelectionCount()?(e.isCellFoldable(e.getSelectionCell())&&this.addMenuItems(b,e.isCellCollapsed(c)?["expand"]:["collapse"],null,d),this.addMenuItems(b,["collapsible","-",
"lockUnlock","enterGroup"],null,d),b.addSeparator(),this.addSubmenu("layout",b)):e.isSelectionEmpty()&&e.isEnabled()?(b.addSeparator(),this.addMenuItems(b,["editData"],null,d),b.addSeparator(),this.addSubmenu("layout",b),this.addSubmenu("insert",b),this.addMenuItems(b,["-","exitGroup"],null,d)):e.isEnabled()&&this.addMenuItems(b,["-","lockUnlock"],null,d)};var x=Menus.prototype.addPopupMenuEditItems;Menus.prototype.addPopupMenuEditItems=function(b,c,d){x.apply(this,arguments);this.editorUi.editor.graph.isSelectionEmpty()&&
-this.addMenuItems(b,["copyAsImage"],null,d)};EditorUi.prototype.toggleFormatPanel=function(c){null!=this.formatWindow?this.formatWindow.window.setVisible(null!=c?c:!this.formatWindow.window.isVisible()):b(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var A=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.addMenuItems(b,["copyAsImage"],null,d)};EditorUi.prototype.toggleFormatPanel=function(c){null!=this.formatWindow?this.formatWindow.window.setVisible(null!=c?c:!this.formatWindow.window.isVisible()):b(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var z=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.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);null!=this.menus.findReplaceWindow&&(this.menus.findReplaceWindow.window.setVisible(!1),this.menus.findReplaceWindow.window.destroy(),this.menus.findReplaceWindow=null);A.apply(this,arguments)};var z=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(b){z.apply(this,arguments);if(b){var c=window.innerWidth||
+this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);null!=this.menus.findReplaceWindow&&(this.menus.findReplaceWindow.window.setVisible(!1),this.menus.findReplaceWindow.window.destroy(),this.menus.findReplaceWindow=null);z.apply(this,arguments)};var A=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(b){A.apply(this,arguments);if(b){var c=window.innerWidth||
document.documentElement.clientWidth||document.body.clientWidth;1E3<=c&&null!=this.sidebarWindow&&"1"!=urlParams.sketch&&this.sidebarWindow.window.setVisible(!0);null!=this.formatWindow&&(1E3<=c||"1"==urlParams.sketch)&&this.formatWindow.window.setVisible(!0)}else null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1)};EditorUi.prototype.chromelessWindowResize=function(){};var B=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=
function(b){b=B.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;if(d.isEnabled()&&"1"==urlParams.sketch){var e=this.createOption(mxResources.get("sketch"),function(){return Editor.sketchMode},function(b,e){c.setSketchMode(!Editor.sketchMode);null!=e&&mxEvent.isShiftDown(e)||d.updateCellStyles({sketch:b?"1":null},d.getVerticesAndEdges())},{install:function(b){this.listener=function(){b(Editor.sketchMode)};c.addListener("sketchModeChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});
b.appendChild(e)}return b};var y=Menus.prototype.init;Menus.prototype.init=function(){y.apply(this,arguments);var c=this.editorUi,e=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.get("tags").label=mxResources.get("tags")+"...";c.actions.get("forkme").visible="1"!=
@@ -12227,17 +12238,17 @@ d),b.addSeparator(d),c.mode!=App.MODE_ATLAS&&this.addMenuItems(b,["fullscreen"],
e){"1"==urlParams.sketch?(c.insertTemplateEnabled&&!c.isOffline()&&c.menus.addMenuItems(b,["insertTemplate"],e),c.menus.addMenuItems(b,["insertImage","insertLink","-"],e),c.menus.addSubmenu("insertLayout",b,e,mxResources.get("layout")),c.menus.addSubmenu("insertAdvanced",b,e,mxResources.get("advanced"))):(d.apply(this,arguments),c.menus.addSubmenu("table",b,e))}})();var n="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),p=function(b,d,e,f){b.addItem(e,
null,mxUtils.bind(this,function(){var b=new CreateGraphDialog(c,e,f);c.showDialog(b.container,620,420,!0,!1);b.init()}),d)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(b,c){for(var d=0;d<n.length;d++)"-"==n[d]?b.addSeparator(c):p(b,c,mxResources.get(n[d])+"...",n[d])})))};EditorUi.prototype.installFormatToolbar=function(b){var c=this.editor.graph,d=document.createElement("div");d.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
c.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(e,f){0<c.getSelectionCount()?(b.appendChild(d),d.innerHTML="Selected: "+c.getSelectionCount()):null!=d.parentNode&&d.parentNode.removeChild(d)}))};var C=!1;EditorUi.prototype.initFormatWindow=function(){if(!C&&null!=this.formatWindow){C=!0;this.formatWindow.window.setClosable(!1);var b=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){b.apply(this,arguments);this.minimized?(this.div.style.width=
-"90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(b){mxEvent.getSource(b)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var G=EditorUi.prototype.init;EditorUi.prototype.init=function(){function e(b,
+"90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(b){mxEvent.getSource(b)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var E=EditorUi.prototype.init;EditorUi.prototype.init=function(){function e(b,
c,d){var e=m.menus.get(b),f=t.addMenu(mxResources.get(b),mxUtils.bind(this,function(){e.funct.apply(this,arguments)}),q);f.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";f.style.display="inline-block";f.style.boxSizing="border-box";f.style.top="6px";f.style.marginRight="6px";f.style.height="30px";f.style.paddingTop="6px";f.style.paddingBottom="6px";f.style.cursor="pointer";f.setAttribute("title",mxResources.get(b));m.menus.menuCreated(e,f,"geMenuItem");null!=d?(f.style.backgroundImage=
"url("+d+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.width="34px",f.innerHTML=""):c||(f.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",f.style.backgroundPosition="right 6px center",f.style.backgroundRepeat="no-repeat",f.style.paddingRight="22px");return f}function f(b,c,d,e,f,g){var k=document.createElement("a");k.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";k.style.display="inline-block";
k.style.boxSizing="border-box";k.style.height="30px";k.style.padding="6px";k.style.position="relative";k.style.verticalAlign="top";k.style.top="0px";"1"==urlParams.sketch&&(k.style.borderStyle="none",k.style.boxShadow="none",k.style.padding="6px",k.style.margin="0px");null!=m.statusContainer?p.insertBefore(k,m.statusContainer):p.appendChild(k);null!=g?(k.style.backgroundImage="url("+g+")",k.style.backgroundPosition="center center",k.style.backgroundRepeat="no-repeat",k.style.backgroundSize="24px 24px",
k.style.width="34px"):mxUtils.write(k,b);mxEvent.addListener(k,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(k,"click",function(b){"disabled"!=k.getAttribute("disabled")&&c(b);mxEvent.consume(b)});null==d&&(k.style.marginRight="4px");null!=e&&k.setAttribute("title",e);null!=f&&(b=function(){f.isEnabled()?(k.removeAttribute("disabled"),k.style.cursor="pointer"):(k.setAttribute("disabled","disabled"),k.style.cursor="default")},
f.addListener("stateChanged",b),n.addListener("enabledChanged",b),b());return k}function g(b,c,d){d=document.createElement("div");d.className="geMenuItem";d.style.display="inline-block";d.style.verticalAlign="top";d.style.marginRight="6px";d.style.padding="0 4px 0 4px";d.style.height="30px";d.style.position="relative";d.style.top="0px";"1"==urlParams.sketch&&(d.style.boxShadow="none");for(var e=0;e<b.length;e++)null!=b[e]&&("1"==urlParams.sketch&&(b[e].style.padding="10px 8px",b[e].style.width="30px"),
-b[e].style.margin="0px",b[e].style.boxShadow="none",d.appendChild(b[e]));null!=c&&mxUtils.setOpacity(d,c);null!=m.statusContainer&&"1"!=urlParams.sketch?p.insertBefore(d,m.statusContainer):p.appendChild(d);return d}function k(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(N.style.left=58>B.offsetTop-B.offsetHeight/2?"70px":"10px");else{for(var b=p.firstChild;null!=b;){var d=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=d}q=p.firstChild;c=window.innerWidth||
+b[e].style.margin="0px",b[e].style.boxShadow="none",d.appendChild(b[e]));null!=c&&mxUtils.setOpacity(d,c);null!=m.statusContainer&&"1"!=urlParams.sketch?p.insertBefore(d,m.statusContainer):p.appendChild(d);return d}function k(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(T.style.left=58>B.offsetTop-B.offsetHeight/2?"70px":"10px");else{for(var b=p.firstChild;null!=b;){var d=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=d}q=p.firstChild;c=window.innerWidth||
document.documentElement.clientWidth||document.body.clientWidth;var b=1E3>c||"1"==urlParams.sketch,k=null;b||(k=e("diagram"));d=b?e("diagram",null,Editor.drawLogoImage):null;null!=d&&(k=d);g([k,f(mxResources.get("shapes"),m.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),m.actions.get("image"),b?Editor.shapesImage:null),f(mxResources.get("format"),m.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+m.actions.get("formatPanel").shortcut+")",m.actions.get("image"),
-b?Editor.formatImage:null)],b?60:null);d=e("insert",!0,b?A:null);g([d,f(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=c&&(g([ba,ta],60),520<=c&&g([za,640<=c?f("",pa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",pa,Editor.zoomInImage):null,640<=c?f("",ra.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",ra,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
+b?Editor.formatImage:null)],b?60:null);d=e("insert",!0,b?A:null);g([d,f(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=c&&(g([ba,ta],60),520<=c&&g([za,640<=c?f("",oa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",oa,Editor.zoomInImage):null,640<=c?f("",qa.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",qa,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
mxEvent.addGestureListeners(k,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&m.appIconClicked(b)}),null,null));d=m.menus.get("language");null!=d&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=c&&"1"!=urlParams.sketch?(null==ua&&(d=t.addMenu("",d.funct),d.setAttribute("title",mxResources.get("language")),d.className="geToolbarButton",d.style.backgroundImage="url("+Editor.globeImage+")",
-d.style.backgroundPosition="center center",d.style.backgroundRepeat="no-repeat",d.style.backgroundSize="24px 24px",d.style.position="absolute",d.style.height="24px",d.style.width="24px",d.style.zIndex="1",d.style.right="8px",d.style.cursor="pointer",d.style.top="1"==urlParams.embed?"12px":"11px",p.appendChild(d),ua=d),m.buttonContainer.style.paddingRight="34px"):(m.buttonContainer.style.paddingRight="4px",null!=ua&&(ua.parentNode.removeChild(ua),ua=null))}G.apply(this,arguments);"1"!=urlParams.embedInline&&
+d.style.backgroundPosition="center center",d.style.backgroundRepeat="no-repeat",d.style.backgroundSize="24px 24px",d.style.position="absolute",d.style.height="24px",d.style.width="24px",d.style.zIndex="1",d.style.right="8px",d.style.cursor="pointer",d.style.top="1"==urlParams.embed?"12px":"11px",p.appendChild(d),ua=d),m.buttonContainer.style.paddingRight="34px"):(m.buttonContainer.style.paddingRight="4px",null!=ua&&(ua.parentNode.removeChild(ua),ua=null))}E.apply(this,arguments);"1"!=urlParams.embedInline&&
this.doSetDarkMode(null!=urlParams.dark?1==urlParams.dark&&!mxClient.IS_IE&&!mxClient.IS_IE11:null!=mxSettings.settings.darkMode?mxSettings.settings.darkMode:window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches);var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";l.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(l);"1"==urlParams.sketch&&
null!=this.sidebar&&this.isSettingsEnabled()&&(this.editor.chromeless&&!this.editor.editable||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save()),this.sidebar.showPalette("search",mxSettings.settings.search));if("1"!=urlParams.sketch&&1E3<=c||null!=urlParams.clibs||null!=urlParams.libs||null!=urlParams["search-shapes"])d(this,!0),null!=this.sidebar&&null!=urlParams["search-shapes"]&&null!=this.sidebar.searchShapes&&(this.sidebar.searchShapes(urlParams["search-shapes"]),
this.sidebar.showEntries("search"));var m=this;mxWindow.prototype.fit=function(){if(Editor.inlineFullscreen||null==m.embedViewport)mxUtils.fit(this.div);else{var b=parseInt(this.div.offsetLeft),c=parseInt(this.div.offsetWidth);this.div.style.left=Math.max(m.embedViewport.x,Math.min(b,m.embedViewport.x+m.embedViewport.width-c))+"px";b=parseInt(this.div.offsetTop);c=parseInt(this.div.offsetHeight);this.div.style.top=Math.max(m.embedViewport.y,Math.min(b,m.embedViewport.y+m.embedViewport.height-c))+
@@ -12246,63 +12257,62 @@ p);m.statusContainer=m.createStatusContainer();m.statusContainer.style.position=
if(null!=b&&null!=b.getTitle()){var c=b.getMode();"google"==c?c="googleDrive":"github"==c?c="gitHub":"gitlab"==c?c="gitLab":"onedrive"==c&&(c="oneDrive");c=mxResources.get(c);p.setAttribute("title",b.getTitle()+(null!=c?" ("+c+")":""))}else p.removeAttribute("title")};m.setStatusText(m.editor.getStatus());p.appendChild(m.statusContainer);m.buttonContainer=document.createElement("div");m.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";
p.appendChild(m.buttonContainer);m.menubarContainer=m.buttonContainer;m.tabContainer=document.createElement("div");m.tabContainer.className="geTabContainer";m.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";var l=m.diagramContainer.parentNode,x=document.createElement("div");x.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";m.diagramContainer.style.top="1"==urlParams.sketch?
"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){x.style.top="20px";m.titlebar=document.createElement("div");m.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var y=document.createElement("div");y.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";m.titlebar.appendChild(y);l.appendChild(m.titlebar)}var z=
-m.menus.get("viewZoom"),A="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,C="1"==urlParams.sketch?document.createElement("div"):null,B="1"==urlParams.sketch?document.createElement("div"):null,N="1"==urlParams.sketch?document.createElement("div"):null,y=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();n.refresh();n.view.validateBackground()});m.addListener("darkModeChanged",y);m.addListener("sketchModeChanged",y);var ha=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)N.style.left=
-"10px",N.style.top="10px",B.style.left="10px",B.style.top="60px",C.style.top="10px",C.style.right="12px",C.style.left="",m.diagramContainer.setAttribute("data-bounds",m.diagramContainer.style.top+" "+m.diagramContainer.style.left+" "+m.diagramContainer.style.width+" "+m.diagramContainer.style.height),m.diagramContainer.style.top="0px",m.diagramContainer.style.left="0px",m.diagramContainer.style.bottom="0px",m.diagramContainer.style.right="0px",m.diagramContainer.style.width="",m.diagramContainer.style.height=
+m.menus.get("viewZoom"),A="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,C="1"==urlParams.sketch?document.createElement("div"):null,B="1"==urlParams.sketch?document.createElement("div"):null,T="1"==urlParams.sketch?document.createElement("div"):null,y=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();n.refresh();n.view.validateBackground()});m.addListener("darkModeChanged",y);m.addListener("sketchModeChanged",y);var ha=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)T.style.left=
+"10px",T.style.top="10px",B.style.left="10px",B.style.top="60px",C.style.top="10px",C.style.right="12px",C.style.left="",m.diagramContainer.setAttribute("data-bounds",m.diagramContainer.style.top+" "+m.diagramContainer.style.left+" "+m.diagramContainer.style.width+" "+m.diagramContainer.style.height),m.diagramContainer.style.top="0px",m.diagramContainer.style.left="0px",m.diagramContainer.style.bottom="0px",m.diagramContainer.style.right="0px",m.diagramContainer.style.width="",m.diagramContainer.style.height=
"";else{var b=m.diagramContainer.getAttribute("data-bounds");if(null!=b){m.diagramContainer.style.background="transparent";m.diagramContainer.removeAttribute("data-bounds");var c=n.getGraphBounds(),b=b.split(" ");m.diagramContainer.style.top=b[0];m.diagramContainer.style.left=b[1];m.diagramContainer.style.width=c.width+50+"px";m.diagramContainer.style.height=c.height+46+"px";m.diagramContainer.style.bottom="";m.diagramContainer.style.right="";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",
-rect:m.diagramContainer.getBoundingClientRect()}),"*");m.refresh()}N.style.left=m.diagramContainer.offsetLeft+"px";N.style.top=m.diagramContainer.offsetTop-N.offsetHeight-4+"px";B.style.display="";B.style.left=m.diagramContainer.offsetLeft-B.offsetWidth-4+"px";B.style.top=m.diagramContainer.offsetTop+"px";C.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-C.offsetWidth+"px";C.style.top=N.style.top;C.style.right="";m.bottomResizer.style.left=m.diagramContainer.offsetLeft+(m.diagramContainer.offsetWidth-
+rect:m.diagramContainer.getBoundingClientRect()}),"*");m.refresh()}T.style.left=m.diagramContainer.offsetLeft+"px";T.style.top=m.diagramContainer.offsetTop-T.offsetHeight-4+"px";B.style.display="";B.style.left=m.diagramContainer.offsetLeft-B.offsetWidth-4+"px";B.style.top=m.diagramContainer.offsetTop+"px";C.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-C.offsetWidth+"px";C.style.top=T.style.top;C.style.right="";m.bottomResizer.style.left=m.diagramContainer.offsetLeft+(m.diagramContainer.offsetWidth-
m.bottomResizer.offsetWidth)/2+"px";m.bottomResizer.style.top=m.diagramContainer.offsetTop+m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight/2-1+"px";m.rightResizer.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-m.rightResizer.offsetWidth/2-1+"px";m.rightResizer.style.top=m.diagramContainer.offsetTop+(m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight)/2+"px"}m.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";m.rightResizer.style.visibility=
-m.bottomResizer.style.visibility;p.style.display="none";N.style.visibility="";C.style.visibility=""}),sa=mxUtils.bind(this,function(){ja.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";ha()}),y=mxUtils.bind(this,function(){sa();b(m,!0);m.initFormatWindow();var c=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(c.x+
-c.width+4,c.y)});m.addListener("inlineFullscreenChanged",sa);m.addListener("editInlineStart",y);"1"==urlParams.embedInline&&m.addListener("darkModeChanged",y);m.addListener("editInlineStop",mxUtils.bind(this,function(b){m.diagramContainer.style.width="10px";m.diagramContainer.style.height="10px";m.diagramContainer.style.border="";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";N.style.visibility="hidden";C.style.visibility="hidden";B.style.display="none"}));if(null!=
-m.hoverIcons){var la=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||la.apply(this,arguments)}}if(null!=n.freehand){var ka=n.freehand.createStyle;n.freehand.createStyle=function(b){return ka.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){B.className="geToolbarContainer";C.className="geToolbarContainer";N.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=B;var V=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
-"inline-block"});mxEvent.addListener(p,"mouseleave",function(){V||(m.statusContainer.style.display="none")});var Z=mxUtils.bind(this,function(b){null!=m.notificationBtn&&(null!=b?m.notificationBtn.setAttribute("title",b):m.notificationBtn.removeAttribute("title"))});"1"!=urlParams.embed?(p.style.visibility=14>p.clientWidth?"hidden":"",m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus());if(0==m.statusContainer.children.length||1==m.statusContainer.children.length&&
+m.bottomResizer.style.visibility;p.style.display="none";T.style.visibility="";C.style.visibility=""}),ra=mxUtils.bind(this,function(){ia.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";ha()}),y=mxUtils.bind(this,function(){ra();b(m,!0);m.initFormatWindow();var c=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(c.x+
+c.width+4,c.y)});m.addListener("inlineFullscreenChanged",ra);m.addListener("editInlineStart",y);"1"==urlParams.embedInline&&m.addListener("darkModeChanged",y);m.addListener("editInlineStop",mxUtils.bind(this,function(b){m.diagramContainer.style.width="10px";m.diagramContainer.style.height="10px";m.diagramContainer.style.border="";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";T.style.visibility="hidden";C.style.visibility="hidden";B.style.display="none"}));if(null!=
+m.hoverIcons){var ka=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||ka.apply(this,arguments)}}if(null!=n.freehand){var ja=n.freehand.createStyle;n.freehand.createStyle=function(b){return ja.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){B.className="geToolbarContainer";C.className="geToolbarContainer";T.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=B;var U=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
+"inline-block"});mxEvent.addListener(p,"mouseleave",function(){U||(m.statusContainer.style.display="none")});var Z=mxUtils.bind(this,function(b){null!=m.notificationBtn&&(null!=b?m.notificationBtn.setAttribute("title",b):m.notificationBtn.removeAttribute("title"))});"1"!=urlParams.embed?(p.style.visibility=14>p.clientWidth?"hidden":"",m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus());if(0==m.statusContainer.children.length||1==m.statusContainer.children.length&&
"function"===typeof m.statusContainer.firstChild.getAttribute&&null==m.statusContainer.firstChild.getAttribute("class")){var b=null!=m.statusContainer.firstChild&&"function"===typeof m.statusContainer.firstChild.getAttribute?m.statusContainer.firstChild.getAttribute("title"):m.editor.getStatus();Z(b);var c=m.getCurrentFile(),c=null!=c?c.savingStatusKey:DrawioFile.prototype.savingStatusKey;b==mxResources.get(c)+"..."?(m.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(c))+
-'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",V=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",V=!1)}else m.statusContainer.style.display="inline-block",Z(null),V=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));R=e("diagram",null,Editor.menuImage);R.style.boxShadow="none";R.style.padding="6px";R.style.margin="0px";
-N.appendChild(R);mxEvent.disableContextMenu(R);mxEvent.addGestureListeners(R,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(c-240,280)+"px";m.statusContainer.style.display=
-"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var O=document.createElement("a");O.style.padding="0px";O.style.boxShadow="none";O.className="geMenuItem";O.style.display="inline-block";O.style.width="40px";O.style.height="12px";O.style.marginBottom="-2px";O.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";O.style.backgroundPosition="top center";
-O.style.backgroundRepeat="no-repeat";O.setAttribute("title","Minimize");var fa=!1,Y=mxUtils.bind(this,function(){B.innerHTML="";if(!fa){var b=function(b,d,e){b=f("",b.funct,null,d,b,e);b.style.width="40px";b.style.opacity="0.7";return c(b,null,"pointer")},c=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";B.appendChild(b);mxUtils.br(B);return b};c(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
+'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",U=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",U=!1)}else m.statusContainer.style.display="inline-block",Z(null),U=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));Q=e("diagram",null,Editor.menuImage);Q.style.boxShadow="none";Q.style.padding="6px";Q.style.margin="0px";
+T.appendChild(Q);mxEvent.disableContextMenu(Q);mxEvent.addGestureListeners(Q,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(c-240,280)+"px";m.statusContainer.style.display=
+"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var N=document.createElement("a");N.style.padding="0px";N.style.boxShadow="none";N.className="geMenuItem";N.style.display="inline-block";N.style.width="40px";N.style.height="12px";N.style.marginBottom="-2px";N.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";N.style.backgroundPosition="top center";
+N.style.backgroundRepeat="no-repeat";N.setAttribute("title","Minimize");var fa=!1,Y=mxUtils.bind(this,function(){B.innerHTML="";if(!fa){var b=function(b,d,e){b=f("",b.funct,null,d,b,e);b.style.width="40px";b.style.opacity="0.7";return c(b,null,"pointer")},c=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";B.appendChild(b);mxUtils.br(B);return b};c(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
60,30,"Text",mxResources.get("text"),!0,!1,null,!0,!0),mxResources.get("text")+" ("+Editor.ctrlKey+"+Shift+X)");c(m.sidebar.createVertexTemplate("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontColor=#000000;darkOpacity=0.05;fillColor=#FFF9B2;strokeColor=none;fillStyle=solid;direction=west;gradientDirection=north;gradientColor=#FFF2A1;shadow=1;size=20;pointerEvents=1;",140,160,"",mxResources.get("note"),!0,!1,null,!0),mxResources.get("note"));c(m.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");c(m.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var b=new mxCell("",new mxGeometry(0,0,n.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,0),!1);
b.geometry.points=[];b.geometry.relative=!0;b.edge=!0;c(m.sidebar.createEdgeTemplateFromCells([b],b.geometry.width,b.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));b=b.clone();b.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";b.geometry.width=n.defaultEdgeLength+20;b.geometry.setTerminalPoint(new mxPoint(0,20),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,20),!1);b=c(m.sidebar.createEdgeTemplateFromCells([b],
-b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var d=m.actions.get("toggleShapes");b(d,mxResources.get("shapes")+" ("+d.shortcut+")",A);R=e("table",null,Editor.calendarImage);R.style.boxShadow="none";R.style.opacity="0.7";R.style.padding="6px";
-R.style.margin="0px";R.style.width="37px";c(R,null,"pointer");R=e("insert",null,Editor.plusImage);R.style.boxShadow="none";R.style.opacity="0.7";R.style.padding="6px";R.style.margin="0px";R.style.width="37px";c(R,null,"pointer")}"1"!=urlParams.embedInline&&B.appendChild(O)});mxEvent.addListener(O,"click",mxUtils.bind(this,function(){fa?(mxUtils.setPrefixedStyle(B.style,"transform","translate(0, -50%)"),B.style.padding="8px 6px 4px",B.style.top="50%",B.style.bottom="",B.style.height="",O.style.backgroundImage=
-"url("+mxWindow.prototype.normalizeImage+")",O.style.width="40px",O.style.height="12px",O.setAttribute("title","Minimize"),fa=!1,Y()):(B.innerHTML="",B.appendChild(O),mxUtils.setPrefixedStyle(B.style,"transform","translate(0, 0)"),B.style.top="",B.style.bottom="12px",B.style.padding="0px",B.style.height="24px",O.style.height="24px",O.style.backgroundImage="url("+Editor.plusImage+")",O.setAttribute("title",mxResources.get("insert")),O.style.width="24px",fa=!0)}));Y();m.addListener("darkModeChanged",
-Y);m.addListener("sketchModeChanged",Y)}else m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=z){var ca=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},pa=m.actions.get("zoomIn"),ra=m.actions.get("zoomOut"),U=m.actions.get("resetView"),y=m.actions.get("fullscreen"),na=m.actions.get("undo"),ga=m.actions.get("redo"),ba=f("",
-na.funct,null,mxResources.get("undo")+" ("+na.shortcut+")",na,Editor.undoImage),ta=f("",ga.funct,null,mxResources.get("redo")+" ("+ga.shortcut+")",ga,Editor.redoImage),ja=f("",y.funct,null,mxResources.get("fullscreen"),y,Editor.fullscreenImage);if(null!=C){z=function(){aa.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};U=function(){aa.innerHTML="";null!=m.currentPage&&mxUtils.write(aa,m.currentPage.getName())};ja.parentNode.removeChild(ja);
-var qa=m.actions.get("delete"),ma=f("",qa.funct,null,mxResources.get("delete"),qa,Editor.trashImage);ma.style.opacity="0.1";N.appendChild(ma);qa.addListener("stateChanged",function(){ma.style.opacity=qa.enabled?"":"0.1"});var ia=function(){ba.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";ta.style.display=ba.style.display;ba.style.opacity=na.enabled?"":"0.1";ta.style.opacity=ga.enabled?"":"0.1"};N.appendChild(ba);N.appendChild(ta);na.addListener("stateChanged",
-ia);ga.addListener("stateChanged",ia);ia();null!=urlParams.layers&&(ia=m.actions.get("layers"),ia=f("",ia.funct,null,mxResources.get("layers"),ia,Editor.layersImage),ia.style.opacity="0.4",C.appendChild(ia));null!=urlParams.tags&&(ia=m.actions.get("tags"),ia=f("",ia.funct,null,mxResources.get("tags"),ia,Editor.tagsImage),ia.style.opacity="0.4",C.appendChild(ia));var aa=this.createPageMenuTab(!1,!0);aa.style.display="none";aa.style.position="";aa.style.marginLeft="";aa.style.top="";aa.style.left="";
-aa.style.height="100%";aa.style.lineHeight="";aa.style.borderStyle="none";aa.style.padding="3px 0";aa.style.margin="0px";aa.style.background="";aa.style.border="";aa.style.boxShadow="none";aa.style.verticalAlign="top";aa.style.width="auto";aa.style.maxWidth="160px";aa.style.position="relative";aa.style.padding="6px";aa.style.textOverflow="ellipsis";aa.style.opacity="0.8";m.editor.addListener("pageSelected",U);m.editor.addListener("pageRenamed",U);m.editor.addListener("fileLoaded",U);U();null!=m.currentPage&&
-(mxUtils.write(R,m.currentPage.getName()),console.log("initial page not emptry"));C.appendChild(aa);m.addListener("fileDescriptorChanged",z);m.addListener("pagesVisibleChanged",z);z();z=f("",ra.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",ra,Editor.zoomOutImage);C.appendChild(z);var R=document.createElement("div");R.innerHTML="100%";R.setAttribute("title",mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");R.style.display="inline-block";R.style.cursor=
-"pointer";R.style.textAlign="center";R.style.whiteSpace="nowrap";R.style.paddingRight="10px";R.style.textDecoration="none";R.style.verticalAlign="top";R.style.padding="6px 0";R.style.fontSize="14px";R.style.width="40px";R.style.opacity="0.4";C.appendChild(R);mxEvent.addListener(R,"click",ca);ca=f("",pa.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",pa,Editor.zoomInImage);C.appendChild(ca);y.visible&&(C.appendChild(ja),mxEvent.addListener(document,"fullscreenchange",function(){ja.style.backgroundImage=
-"url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(y=m.actions.get("exit"),C.appendChild(f("",y.funct,null,mxResources.get("exit"),y,Editor.closeImage)));m.tabContainer.style.visibility="hidden";p.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
-N.style.cssText="position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";C.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";x.appendChild(N);x.appendChild(C);B.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
-x.appendChild(B);window.setTimeout(function(){mxUtils.setPrefixedStyle(B.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var za=f("",ca,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",U,Editor.zoomFitImage);p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";R=t.addMenu("100%",z.funct);R.setAttribute("title",mxResources.get("zoom")+
-" (Alt+Mousewheel)");R.style.whiteSpace="nowrap";R.style.paddingRight="10px";R.style.textDecoration="none";R.style.textDecoration="none";R.style.overflow="hidden";R.style.visibility="hidden";R.style.textAlign="center";R.style.cursor="pointer";R.style.height=parseInt(m.tabContainerHeight)-1+"px";R.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";R.style.position="absolute";R.style.display="block";R.style.fontSize="12px";R.style.width="59px";R.style.right="0px";R.style.bottom="0px";R.style.backgroundImage=
-"url("+mxWindow.prototype.minimizeImage+")";R.style.backgroundPosition="right 6px center";R.style.backgroundRepeat="no-repeat";x.appendChild(R)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML="";mxUtils.write(b,Math.round(100*m.editor.graph.view.scale)+"%")});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(R);var ya=m.setGraphEnabled;m.setGraphEnabled=function(){ya.apply(this,arguments);null!=this.tabContainer&&
-(R.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==C?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=c)&&"1"!=urlParams.embedInline&&b(this,!0);null==C&&x.appendChild(m.tabContainer);var ua=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();
+b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var d=m.actions.get("toggleShapes");b(d,mxResources.get("shapes")+" ("+d.shortcut+")",A);Q=e("table",null,Editor.calendarImage);Q.style.boxShadow="none";Q.style.opacity="0.7";Q.style.padding="6px";
+Q.style.margin="0px";Q.style.width="37px";c(Q,null,"pointer");Q=e("insert",null,Editor.plusImage);Q.style.boxShadow="none";Q.style.opacity="0.7";Q.style.padding="6px";Q.style.margin="0px";Q.style.width="37px";c(Q,null,"pointer")}"1"!=urlParams.embedInline&&B.appendChild(N)});mxEvent.addListener(N,"click",mxUtils.bind(this,function(){fa?(mxUtils.setPrefixedStyle(B.style,"transform","translate(0, -50%)"),B.style.padding="8px 6px 4px",B.style.top="50%",B.style.bottom="",B.style.height="",N.style.backgroundImage=
+"url("+mxWindow.prototype.normalizeImage+")",N.style.width="40px",N.style.height="12px",N.setAttribute("title","Minimize"),fa=!1,Y()):(B.innerHTML="",B.appendChild(N),mxUtils.setPrefixedStyle(B.style,"transform","translate(0, 0)"),B.style.top="",B.style.bottom="12px",B.style.padding="0px",B.style.height="24px",N.style.height="24px",N.style.backgroundImage="url("+Editor.plusImage+")",N.setAttribute("title",mxResources.get("insert")),N.style.width="24px",fa=!0)}));Y();m.addListener("darkModeChanged",
+Y);m.addListener("sketchModeChanged",Y)}else m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=z){var ca=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},oa=m.actions.get("zoomIn"),qa=m.actions.get("zoomOut"),S=m.actions.get("resetView"),y=m.actions.get("fullscreen"),ma=m.actions.get("undo"),ga=m.actions.get("redo"),ba=f("",
+ma.funct,null,mxResources.get("undo")+" ("+ma.shortcut+")",ma,Editor.undoImage),ta=f("",ga.funct,null,mxResources.get("redo")+" ("+ga.shortcut+")",ga,Editor.redoImage),ia=f("",y.funct,null,mxResources.get("fullscreen"),y,Editor.fullscreenImage);if(null!=C){z=function(){aa.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};S=function(){aa.innerHTML="";null!=m.currentPage&&mxUtils.write(aa,m.currentPage.getName())};ia.parentNode.removeChild(ia);
+var pa=m.actions.get("delete"),la=f("",pa.funct,null,mxResources.get("delete"),pa,Editor.trashImage);la.style.opacity="0.1";T.appendChild(la);pa.addListener("stateChanged",function(){la.style.opacity=pa.enabled?"":"0.1"});var sa=function(){ba.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";ta.style.display=ba.style.display;ba.style.opacity=ma.enabled?"":"0.1";ta.style.opacity=ga.enabled?"":"0.1"};T.appendChild(ba);T.appendChild(ta);ma.addListener("stateChanged",
+sa);ga.addListener("stateChanged",sa);sa();var aa=this.createPageMenuTab(!1,!0);aa.style.display="none";aa.style.position="";aa.style.marginLeft="";aa.style.top="";aa.style.left="";aa.style.height="100%";aa.style.lineHeight="";aa.style.borderStyle="none";aa.style.padding="3px 0";aa.style.margin="0px";aa.style.background="";aa.style.border="";aa.style.boxShadow="none";aa.style.verticalAlign="top";aa.style.width="auto";aa.style.maxWidth="160px";aa.style.position="relative";aa.style.padding="6px";aa.style.textOverflow=
+"ellipsis";aa.style.opacity="0.8";m.editor.addListener("pageSelected",S);m.editor.addListener("pageRenamed",S);m.editor.addListener("fileLoaded",S);S();null!=m.currentPage&&(mxUtils.write(Q,m.currentPage.getName()),console.log("initial page not emptry"));C.appendChild(aa);m.addListener("fileDescriptorChanged",z);m.addListener("pagesVisibleChanged",z);z();z=f("",qa.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",qa,Editor.zoomOutImage);C.appendChild(z);var Q=document.createElement("div");
+Q.innerHTML="100%";Q.setAttribute("title",mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");Q.style.display="inline-block";Q.style.cursor="pointer";Q.style.textAlign="center";Q.style.whiteSpace="nowrap";Q.style.paddingRight="10px";Q.style.textDecoration="none";Q.style.verticalAlign="top";Q.style.padding="6px 0";Q.style.fontSize="14px";Q.style.width="40px";Q.style.opacity="0.4";C.appendChild(Q);mxEvent.addListener(Q,"click",ca);ca=f("",oa.funct,!0,mxResources.get("zoomIn")+
+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",oa,Editor.zoomInImage);C.appendChild(ca);y.visible&&(C.appendChild(ia),mxEvent.addListener(document,"fullscreenchange",function(){ia.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(y=m.actions.get("exit"),C.appendChild(f("",y.funct,null,mxResources.get("exit"),y,Editor.closeImage)));m.tabContainer.style.visibility="hidden";p.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
+T.style.cssText="position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";C.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";x.appendChild(T);x.appendChild(C);B.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
+x.appendChild(B);window.setTimeout(function(){mxUtils.setPrefixedStyle(B.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var za=f("",ca,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",S,Editor.zoomFitImage);p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";Q=t.addMenu("100%",z.funct);Q.setAttribute("title",mxResources.get("zoom")+
+" (Alt+Mousewheel)");Q.style.whiteSpace="nowrap";Q.style.paddingRight="10px";Q.style.textDecoration="none";Q.style.textDecoration="none";Q.style.overflow="hidden";Q.style.visibility="hidden";Q.style.textAlign="center";Q.style.cursor="pointer";Q.style.height=parseInt(m.tabContainerHeight)-1+"px";Q.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";Q.style.position="absolute";Q.style.display="block";Q.style.fontSize="12px";Q.style.width="59px";Q.style.right="0px";Q.style.bottom="0px";Q.style.backgroundImage=
+"url("+mxWindow.prototype.minimizeImage+")";Q.style.backgroundPosition="right 6px center";Q.style.backgroundRepeat="no-repeat";x.appendChild(Q)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML="";mxUtils.write(b,Math.round(100*m.editor.graph.view.scale)+"%")});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(Q);var ya=m.setGraphEnabled;m.setGraphEnabled=function(){ya.apply(this,arguments);null!=this.tabContainer&&
+(Q.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==C?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=c)&&"1"!=urlParams.embedInline&&b(this,!0);null==C&&x.appendChild(m.tabContainer);var ua=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();
null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&m.actions.outlineWindow.window.fit();null!=m.actions.layersWindow&&m.actions.layersWindow.window.fit();null!=m.menus.tagsWindow&&m.menus.tagsWindow.window.fit();null!=m.menus.findWindow&&m.menus.findWindow.window.fit();null!=m.menus.findReplaceWindow&&m.menus.findReplaceWindow.window.fit()});if("1"==urlParams.embedInline){document.body.style.cursor="text";B.style.transform="";mxEvent.addGestureListeners(m.diagramContainer.parentNode,
function(b){mxEvent.getSource(b)==m.diagramContainer.parentNode&&(m.embedExitPoint=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),m.sendEmbeddedSvgExport())});l=document.createElement("div");l.style.position="absolute";l.style.width="10px";l.style.height="10px";l.style.borderRadius="5px";l.style.border="1px solid gray";l.style.background="#ffffff";l.style.cursor="row-resize";m.diagramContainer.parentNode.appendChild(l);m.bottomResizer=l;var va=null,xa=null,wa=null,Da=null;mxEvent.addGestureListeners(l,
function(b){Da=parseInt(m.diagramContainer.style.height);xa=mxEvent.getClientY(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});l=l.cloneNode(!1);l.style.cursor="col-resize";m.diagramContainer.parentNode.appendChild(l);m.rightResizer=l;mxEvent.addGestureListeners(l,function(b){wa=parseInt(m.diagramContainer.style.width);va=mxEvent.getClientX(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});mxEvent.addGestureListeners(document.body,null,function(b){var c=!1;null!=va&&(m.diagramContainer.style.width=
Math.max(20,wa+mxEvent.getClientX(b)-va)+"px",c=!0);null!=xa&&(m.diagramContainer.style.height=Math.max(20,Da+mxEvent.getClientY(b)-xa)+"px",c=!0);c&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:m.diagramContainer.getBoundingClientRect()}),"*"),ha(),m.refresh())},function(b){null==va&&null==xa||mxEvent.consume(b);xa=va=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";m.bottomResizer.style.visibility=
-"hidden";m.rightResizer.style.visibility="hidden";N.style.visibility="hidden";C.style.visibility="hidden";B.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var e=EditorUi.initTheme;EditorUi.initTheme=function(){e.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();(function(){var b=mxGuide.prototype.move;mxGuide.prototype.move=function(c,d,e,n){var f=d.y,g=d.x,k=!1,p=!1;if(null!=this.states&&null!=c&&null!=d){var q=this,t=new mxCellState,v=this.graph.getView().scale,u=Math.max(2,this.getGuideTolerance()/2);t.x=c.x+g;t.y=c.y+f;t.width=c.width;t.height=c.height;for(var x=[],A=[],z=0;z<this.states.length;z++){var B=this.states[z];B instanceof mxCellState&&(n||!this.graph.isCellSelected(B.cell))&&((t.x>=B.x&&t.x<=B.x+B.width||B.x>=t.x&&B.x<=t.x+t.width)&&(t.y>
-B.y+B.height+4||t.y+t.height+4<B.y)?x.push(B):(t.y>=B.y&&t.y<=B.y+B.height||B.y>=t.y&&B.y<=t.y+t.height)&&(t.x>B.x+B.width+4||t.x+t.width+4<B.x)&&A.push(B))}var y=0,C=0,G=B=0,D=0,E=0,F=0,J=0,K=5*v;if(1<x.length){x.push(t);x.sort(function(b,c){return b.y-c.y});var H=!1,z=t==x[0],v=t==x[x.length-1];if(!z&&!v)for(z=1;z<x.length-1;z++)if(t==x[z]){v=x[z-1];z=x[z+1];B=C=G=(z.y-v.y-v.height-t.height)/2;break}for(z=0;z<x.length-1;z++){var v=x[z],I=x[z+1],S=t==v||t==I,I=I.y-v.y-v.height,H=H|t==v;if(0==C&&
-0==y)C=I,y=1;else if(Math.abs(C-I)<=(S||1==z&&H?u:0))y+=1;else if(1<y&&H){x=x.slice(0,z+1);break}else if(3<=x.length-z&&!H)y=0,B=C=0!=G?G:0,x.splice(0,0==z?1:z),z=-1;else break;0!=B||S||(C=B=I)}3==x.length&&x[1]==t&&(B=0)}if(1<A.length){A.push(t);A.sort(function(b,c){return b.x-c.x});H=!1;z=t==A[0];v=t==A[A.length-1];if(!z&&!v)for(z=1;z<A.length-1;z++)if(t==A[z]){v=A[z-1];z=A[z+1];F=E=J=(z.x-v.x-v.width-t.width)/2;break}for(z=0;z<A.length-1;z++){v=A[z];I=A[z+1];S=t==v||t==I;I=I.x-v.x-v.width;H|=t==
-v;if(0==E&&0==D)E=I,D=1;else if(Math.abs(E-I)<=(S||1==z&&H?u:0))D+=1;else if(1<D&&H){A=A.slice(0,z+1);break}else if(3<=A.length-z&&!H)D=0,F=E=0!=J?J:0,A.splice(0,0==z?1:z),z=-1;else break;0!=F||S||(E=F=I)}3==A.length&&A[1]==t&&(F=0)}u=function(b,c,d,e){var f=[],g;e?(e=K,g=0):(e=0,g=K);f.push(new mxPoint(b.x-e,b.y-g));f.push(new mxPoint(b.x+e,b.y+g));f.push(b);f.push(c);f.push(new mxPoint(c.x-e,c.y-g));f.push(new mxPoint(c.x+e,c.y+g));if(null!=d)return d.points=f,d;b=new mxPolyline(f,mxConstants.GUIDE_COLOR,
-mxConstants.GUIDE_STROKEWIDTH);b.dialect=mxConstants.DIALECT_SVG;b.pointerEvents=!1;b.init(q.graph.getView().getOverlayPane());return b};E=function(b,c){if(b&&null!=q.guidesArrHor)for(var d=0;d<q.guidesArrHor.length;d++)q.guidesArrHor[d].node.style.visibility="hidden";if(c&&null!=q.guidesArrVer)for(d=0;d<q.guidesArrVer.length;d++)q.guidesArrVer[d].node.style.visibility="hidden"};if(1<D&&D==A.length-1){D=[];J=q.guidesArrHor;k=[];g=0;z=A[0]==t?1:0;H=A[z].y+A[z].height;if(0<F)for(z=0;z<A.length-1;z++)v=
-A[z],I=A[z+1],t==v?(g=I.x-v.width-F,k.push(new mxPoint(g+v.width+K,H)),k.push(new mxPoint(I.x-K,H))):t==I?(k.push(new mxPoint(v.x+v.width+K,H)),g=v.x+v.width+F,k.push(new mxPoint(g-K,H))):(k.push(new mxPoint(v.x+v.width+K,H)),k.push(new mxPoint(I.x-K,H)));else v=A[0],z=A[2],g=v.x+v.width+(z.x-v.x-v.width-t.width)/2,k.push(new mxPoint(v.x+v.width+K,H)),k.push(new mxPoint(g-K,H)),k.push(new mxPoint(g+t.width+K,H)),k.push(new mxPoint(z.x-K,H));for(z=0;z<k.length;z+=2)A=k[z],F=k[z+1],A=u(A,F,null!=J?
-J[z/2]:null),A.node.style.visibility="visible",A.redraw(),D.push(A);for(z=k.length/2;null!=J&&z<J.length;z++)J[z].destroy();q.guidesArrHor=D;g-=c.x;k=!0}else E(!0);if(1<y&&y==x.length-1){D=[];J=q.guidesArrVer;p=[];f=0;z=x[0]==t?1:0;y=x[z].x+x[z].width;if(0<B)for(z=0;z<x.length-1;z++)v=x[z],I=x[z+1],t==v?(f=I.y-v.height-B,p.push(new mxPoint(y,f+v.height+K)),p.push(new mxPoint(y,I.y-K))):t==I?(p.push(new mxPoint(y,v.y+v.height+K)),f=v.y+v.height+B,p.push(new mxPoint(y,f-K))):(p.push(new mxPoint(y,v.y+
-v.height+K)),p.push(new mxPoint(y,I.y-K)));else v=x[0],z=x[2],f=v.y+v.height+(z.y-v.y-v.height-t.height)/2,p.push(new mxPoint(y,v.y+v.height+K)),p.push(new mxPoint(y,f-K)),p.push(new mxPoint(y,f+t.height+K)),p.push(new mxPoint(y,z.y-K));for(z=0;z<p.length;z+=2)A=p[z],F=p[z+1],A=u(A,F,null!=J?J[z/2]:null,!0),A.node.style.visibility="visible",A.redraw(),D.push(A);for(z=p.length/2;null!=J&&z<J.length;z++)J[z].destroy();q.guidesArrVer=D;f-=c.y;p=!0}else E(!1,!0)}if(k||p)return t=new mxPoint(g,f),x=b.call(this,
-c,t,e,n),k&&!p?t.y=x.y:p&&!k&&(t.x=x.x),x.y!=t.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),x.x!=t.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),t;E(!0,!0);return b.apply(this,arguments)};var e=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(b){e.call(this,b);var c=this.guidesArrVer,d=this.guidesArrHor;if(null!=c)for(var n=0;n<c.length;n++)c[n].node.style.visibility=b?"visible":"hidden";if(null!=
+"hidden";m.rightResizer.style.visibility="hidden";T.style.visibility="hidden";C.style.visibility="hidden";B.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var e=EditorUi.initTheme;EditorUi.initTheme=function(){e.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();(function(){var b=mxGuide.prototype.move;mxGuide.prototype.move=function(c,d,e,n){var f=d.y,g=d.x,k=!1,p=!1;if(null!=this.states&&null!=c&&null!=d){var q=this,t=new mxCellState,v=this.graph.getView().scale,u=Math.max(2,this.getGuideTolerance()/2);t.x=c.x+g;t.y=c.y+f;t.width=c.width;t.height=c.height;for(var x=[],z=[],A=0;A<this.states.length;A++){var B=this.states[A];B instanceof mxCellState&&(n||!this.graph.isCellSelected(B.cell))&&((t.x>=B.x&&t.x<=B.x+B.width||B.x>=t.x&&B.x<=t.x+t.width)&&(t.y>
+B.y+B.height+4||t.y+t.height+4<B.y)?x.push(B):(t.y>=B.y&&t.y<=B.y+B.height||B.y>=t.y&&B.y<=t.y+t.height)&&(t.x>B.x+B.width+4||t.x+t.width+4<B.x)&&z.push(B))}var y=0,C=0,E=B=0,D=0,F=0,G=0,I=0,J=5*v;if(1<x.length){x.push(t);x.sort(function(b,c){return b.y-c.y});var H=!1,A=t==x[0],v=t==x[x.length-1];if(!A&&!v)for(A=1;A<x.length-1;A++)if(t==x[A]){v=x[A-1];A=x[A+1];B=C=E=(A.y-v.y-v.height-t.height)/2;break}for(A=0;A<x.length-1;A++){var v=x[A],K=x[A+1],R=t==v||t==K,K=K.y-v.y-v.height,H=H|t==v;if(0==C&&
+0==y)C=K,y=1;else if(Math.abs(C-K)<=(R||1==A&&H?u:0))y+=1;else if(1<y&&H){x=x.slice(0,A+1);break}else if(3<=x.length-A&&!H)y=0,B=C=0!=E?E:0,x.splice(0,0==A?1:A),A=-1;else break;0!=B||R||(C=B=K)}3==x.length&&x[1]==t&&(B=0)}if(1<z.length){z.push(t);z.sort(function(b,c){return b.x-c.x});H=!1;A=t==z[0];v=t==z[z.length-1];if(!A&&!v)for(A=1;A<z.length-1;A++)if(t==z[A]){v=z[A-1];A=z[A+1];G=F=I=(A.x-v.x-v.width-t.width)/2;break}for(A=0;A<z.length-1;A++){v=z[A];K=z[A+1];R=t==v||t==K;K=K.x-v.x-v.width;H|=t==
+v;if(0==F&&0==D)F=K,D=1;else if(Math.abs(F-K)<=(R||1==A&&H?u:0))D+=1;else if(1<D&&H){z=z.slice(0,A+1);break}else if(3<=z.length-A&&!H)D=0,G=F=0!=I?I:0,z.splice(0,0==A?1:A),A=-1;else break;0!=G||R||(F=G=K)}3==z.length&&z[1]==t&&(G=0)}u=function(b,c,d,e){var f=[],g;e?(e=J,g=0):(e=0,g=J);f.push(new mxPoint(b.x-e,b.y-g));f.push(new mxPoint(b.x+e,b.y+g));f.push(b);f.push(c);f.push(new mxPoint(c.x-e,c.y-g));f.push(new mxPoint(c.x+e,c.y+g));if(null!=d)return d.points=f,d;b=new mxPolyline(f,mxConstants.GUIDE_COLOR,
+mxConstants.GUIDE_STROKEWIDTH);b.dialect=mxConstants.DIALECT_SVG;b.pointerEvents=!1;b.init(q.graph.getView().getOverlayPane());return b};F=function(b,c){if(b&&null!=q.guidesArrHor)for(var d=0;d<q.guidesArrHor.length;d++)q.guidesArrHor[d].node.style.visibility="hidden";if(c&&null!=q.guidesArrVer)for(d=0;d<q.guidesArrVer.length;d++)q.guidesArrVer[d].node.style.visibility="hidden"};if(1<D&&D==z.length-1){D=[];I=q.guidesArrHor;k=[];g=0;A=z[0]==t?1:0;H=z[A].y+z[A].height;if(0<G)for(A=0;A<z.length-1;A++)v=
+z[A],K=z[A+1],t==v?(g=K.x-v.width-G,k.push(new mxPoint(g+v.width+J,H)),k.push(new mxPoint(K.x-J,H))):t==K?(k.push(new mxPoint(v.x+v.width+J,H)),g=v.x+v.width+G,k.push(new mxPoint(g-J,H))):(k.push(new mxPoint(v.x+v.width+J,H)),k.push(new mxPoint(K.x-J,H)));else v=z[0],A=z[2],g=v.x+v.width+(A.x-v.x-v.width-t.width)/2,k.push(new mxPoint(v.x+v.width+J,H)),k.push(new mxPoint(g-J,H)),k.push(new mxPoint(g+t.width+J,H)),k.push(new mxPoint(A.x-J,H));for(A=0;A<k.length;A+=2)z=k[A],G=k[A+1],z=u(z,G,null!=I?
+I[A/2]:null),z.node.style.visibility="visible",z.redraw(),D.push(z);for(A=k.length/2;null!=I&&A<I.length;A++)I[A].destroy();q.guidesArrHor=D;g-=c.x;k=!0}else F(!0);if(1<y&&y==x.length-1){D=[];I=q.guidesArrVer;p=[];f=0;A=x[0]==t?1:0;y=x[A].x+x[A].width;if(0<B)for(A=0;A<x.length-1;A++)v=x[A],K=x[A+1],t==v?(f=K.y-v.height-B,p.push(new mxPoint(y,f+v.height+J)),p.push(new mxPoint(y,K.y-J))):t==K?(p.push(new mxPoint(y,v.y+v.height+J)),f=v.y+v.height+B,p.push(new mxPoint(y,f-J))):(p.push(new mxPoint(y,v.y+
+v.height+J)),p.push(new mxPoint(y,K.y-J)));else v=x[0],A=x[2],f=v.y+v.height+(A.y-v.y-v.height-t.height)/2,p.push(new mxPoint(y,v.y+v.height+J)),p.push(new mxPoint(y,f-J)),p.push(new mxPoint(y,f+t.height+J)),p.push(new mxPoint(y,A.y-J));for(A=0;A<p.length;A+=2)z=p[A],G=p[A+1],z=u(z,G,null!=I?I[A/2]:null,!0),z.node.style.visibility="visible",z.redraw(),D.push(z);for(A=p.length/2;null!=I&&A<I.length;A++)I[A].destroy();q.guidesArrVer=D;f-=c.y;p=!0}else F(!1,!0)}if(k||p)return t=new mxPoint(g,f),x=b.call(this,
+c,t,e,n),k&&!p?t.y=x.y:p&&!k&&(t.x=x.x),x.y!=t.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),x.x!=t.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),t;F(!0,!0);return b.apply(this,arguments)};var e=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(b){e.call(this,b);var c=this.guidesArrVer,d=this.guidesArrHor;if(null!=c)for(var n=0;n<c.length;n++)c[n].node.style.visibility=b?"visible":"hidden";if(null!=
d)for(n=0;n<d.length;n++)d[n].node.style.visibility=b?"visible":"hidden"};var d=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){d.call(this);var b=this.guidesArrVer,e=this.guidesArrHor;if(null!=b){for(var k=0;k<b.length;k++)b[k].destroy();this.guidesArrVer=null}if(null!=e){for(k=0;k<e.length;k++)e[k].destroy();this.guidesArrHor=null}}})();function mxRuler(b,e,d,c){function g(){var c=b.diagramContainer;q.style.top=c.offsetTop-l+"px";q.style.left=c.offsetLeft-l+"px";q.style.width=(d?0:c.offsetWidth)+l+"px";q.style.height=(d?c.offsetHeight:0)+l+"px"}function k(b,c,d){if(null!=n)return b;var e;return function(){var f=this,g=arguments,k=d&&!e;clearTimeout(e);e=setTimeout(function(){e=null;d||b.apply(f,g)},c);k&&b.apply(f,g)}}var n=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,
f=window.cancelAnimationFrame||window.mozCancelAnimationFrame,l=this.RULER_THICKNESS,m=this;this.unit=e;var p=Editor.isDarkMode()?{bkgClr:"#202020",outBkgClr:Editor.darkColor,cornerClr:Editor.darkColor,strokeClr:"#505759",fontClr:"#BBBBBB",guideClr:"#0088cf"}:{bkgClr:"#ffffff",outBkgClr:"#e8e9ed",cornerClr:"#fbfbfb",strokeClr:"#dadce0",fontClr:"#BBBBBB",guideClr:"#0000BB"},q=document.createElement("div");q.style.position="absolute";this.updateStyle=mxUtils.bind(this,function(){p=Editor.isDarkMode()?
{bkgClr:"#202020",outBkgClr:Editor.darkColor,cornerClr:Editor.darkColor,strokeClr:"#505759",fontClr:"#BBBBBB",guideClr:"#0088cf"}:{bkgClr:"#ffffff",outBkgClr:"#e8e9ed",cornerClr:"#fbfbfb",strokeClr:"#dadce0",fontClr:"#BBBBBB",guideClr:"#0000BB"};q.style.background=p.bkgClr;q.style[d?"borderRight":"borderBottom"]="0.5px solid "+p.strokeClr;q.style.borderLeft="0.5px solid "+p.strokeClr});this.updateStyle();document.body.appendChild(q);mxEvent.disableContextMenu(q);this.editorUiRefresh=b.refresh;b.refresh=
function(c){m.editorUiRefresh.apply(b,arguments);g()};g();var t=document.createElement("canvas");t.width=q.offsetWidth;t.height=q.offsetHeight;q.style.overflow="hidden";t.style.position="relative";q.appendChild(t);var v=t.getContext("2d");this.ui=b;var u=b.editor.graph;this.graph=u;this.container=q;this.canvas=t;var x=function(b,c,e,f,g){b=Math.round(b);c=Math.round(c);e=Math.round(e);f=Math.round(f);v.beginPath();v.moveTo(b+.5,c+.5);v.lineTo(e+.5,f+.5);v.stroke();g&&(d?(v.save(),v.translate(b,c),
-v.rotate(-Math.PI/2),v.fillText(g,0,0),v.restore()):v.fillText(g,b,c))},A=function(){v.clearRect(0,0,t.width,t.height);v.beginPath();v.lineWidth=.7;v.strokeStyle=p.strokeClr;v.setLineDash([]);v.font="9px Arial";v.textAlign="center";var b=u.view.scale,c=u.view.getBackgroundPageBounds(),e=u.view.translate,f=u.pageVisible,e=f?l+(d?c.y-u.container.scrollTop:c.x-u.container.scrollLeft):l+(d?e.y*b-u.container.scrollTop:e.x*b-u.container.scrollLeft),g=0;f&&(g=u.getPageLayout(),g=d?g.y*u.pageFormat.height:
+v.rotate(-Math.PI/2),v.fillText(g,0,0),v.restore()):v.fillText(g,b,c))},z=function(){v.clearRect(0,0,t.width,t.height);v.beginPath();v.lineWidth=.7;v.strokeStyle=p.strokeClr;v.setLineDash([]);v.font="9px Arial";v.textAlign="center";var b=u.view.scale,c=u.view.getBackgroundPageBounds(),e=u.view.translate,f=u.pageVisible,e=f?l+(d?c.y-u.container.scrollTop:c.x-u.container.scrollLeft):l+(d?e.y*b-u.container.scrollTop:e.x*b-u.container.scrollLeft),g=0;f&&(g=u.getPageLayout(),g=d?g.y*u.pageFormat.height:
g.x*u.pageFormat.width);var k,n,q;switch(m.unit){case mxConstants.POINTS:k=q=10;n=[3,5,5,5,5,10,5,5,5,5];break;case mxConstants.MILLIMETERS:q=10;k=mxConstants.PIXELS_PER_MM;n=[5,3,3,3,3,6,3,3,3,3];break;case mxConstants.METERS:q=20;k=mxConstants.PIXELS_PER_MM;n=[5,3,3,3,3,6,3,3,3,3,10,3,3,3,3,6,3,3,3,3];break;case mxConstants.INCHES:q=.5>=b||4<=b?8:16,k=mxConstants.PIXELS_PER_INCH/q,n=[5,3,5,3,7,3,5,3,7,3,5,3,7,3,5,3]}var z=k;2<=b?z=k/(2*Math.floor(b/2)):.5>=b&&(z=k*Math.floor(1/b/2)*(m.unit==mxConstants.MILLIMETERS?
2:1));k=null;c=f?Math.min(e+(d?c.height:c.width),d?t.height:t.width):d?t.height:t.width;if(f)if(v.fillStyle=p.outBkgClr,d){var A=e-l;0<A&&v.fillRect(0,l,l,A);c<t.height&&v.fillRect(0,c,l,t.height)}else A=e-l,0<A&&v.fillRect(l,0,A,l),c<t.width&&v.fillRect(c,0,t.width,l);v.fillStyle=p.fontClr;for(f=f?e:e%(z*b);f<=c;f+=z*b)if(A=Math.round((f-e)/b/z),!(f<l||A==k)){k=A;var B=null;0==A%q&&(B=m.formatText(g+A*z)+"");d?x(l-n[Math.abs(A)%q],f,l,f,B):x(f,l-n[Math.abs(A)%q],f,l,B)}v.lineWidth=1;x(d?0:l,d?l:
-0,l,l);v.fillStyle=p.cornerClr;v.fillRect(0,0,l,l)},z=-1,B=function(){null!=n?(null!=f&&f(z),z=n(A)):A()};this.drawRuler=B;this.sizeListener=e=k(function(){var b=u.container;d?(b=b.offsetHeight+l,t.height!=b&&(t.height=b,q.style.height=b+"px",B())):(b=b.offsetWidth+l,t.width!=b&&(t.width=b,q.style.width=b+"px",B()))},10);this.pageListener=function(){B()};this.scrollListener=c=k(function(){var b=d?u.container.scrollTop:u.container.scrollLeft;m.lastScroll!=b&&(m.lastScroll=b,B())},10);this.unitListener=
-function(b,c){m.setUnit(c.getProperty("unit"))};u.addListener(mxEvent.SIZE,e);u.container.addEventListener("scroll",c);u.view.addListener("unitChanged",this.unitListener);b.addListener("pageViewChanged",this.pageListener);b.addListener("pageScaleChanged",this.pageListener);b.addListener("pageFormatChanged",this.pageListener);this.setStyle=function(b){p=b;q.style.background=p.bkgClr;A()};this.origGuideMove=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,e,f){var g;if(d&&4<b.height||!d&&
-4<b.width){if(null!=m.guidePart)try{v.putImageData(m.guidePart.imgData1,m.guidePart.x1,m.guidePart.y1),v.putImageData(m.guidePart.imgData2,m.guidePart.x2,m.guidePart.y2),v.putImageData(m.guidePart.imgData3,m.guidePart.x3,m.guidePart.y3)}catch(X){}g=m.origGuideMove.apply(this,arguments);try{var k,n,q,t,u,y,z,A,B;v.lineWidth=.5;v.strokeStyle=p.guideClr;v.setLineDash([2]);d?(n=b.y+g.y+l-this.graph.container.scrollTop,k=0,u=n+b.height/2,t=l/2,A=n+b.height,z=0,q=v.getImageData(k,n-1,l,3),x(k,n,l,n),n--,
-y=v.getImageData(t,u-1,l,3),x(t,u,l,u),u--,B=v.getImageData(z,A-1,l,3),x(z,A,l,A),A--):(n=0,k=b.x+g.x+l-this.graph.container.scrollLeft,u=l/2,t=k+b.width/2,A=0,z=k+b.width,q=v.getImageData(k-1,n,3,l),x(k,n,k,l),k--,y=v.getImageData(t-1,u,3,l),x(t,u,t,l),t--,B=v.getImageData(z-1,A,3,l),x(z,A,z,l),z--);if(null==m.guidePart||m.guidePart.x1!=k||m.guidePart.y1!=n)m.guidePart={imgData1:q,x1:k,y1:n,imgData2:y,x2:t,y2:u,imgData3:B,x3:z,y3:A}}catch(X){}}else g=m.origGuideMove.apply(this,arguments);return g};
+0,l,l);v.fillStyle=p.cornerClr;v.fillRect(0,0,l,l)},A=-1,B=function(){null!=n?(null!=f&&f(A),A=n(z)):z()};this.drawRuler=B;this.sizeListener=e=k(function(){var b=u.container;d?(b=b.offsetHeight+l,t.height!=b&&(t.height=b,q.style.height=b+"px",B())):(b=b.offsetWidth+l,t.width!=b&&(t.width=b,q.style.width=b+"px",B()))},10);this.pageListener=function(){B()};this.scrollListener=c=k(function(){var b=d?u.container.scrollTop:u.container.scrollLeft;m.lastScroll!=b&&(m.lastScroll=b,B())},10);this.unitListener=
+function(b,c){m.setUnit(c.getProperty("unit"))};u.addListener(mxEvent.SIZE,e);u.container.addEventListener("scroll",c);u.view.addListener("unitChanged",this.unitListener);b.addListener("pageViewChanged",this.pageListener);b.addListener("pageScaleChanged",this.pageListener);b.addListener("pageFormatChanged",this.pageListener);this.setStyle=function(b){p=b;q.style.background=p.bkgClr;z()};this.origGuideMove=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,e,f){var g;if(d&&4<b.height||!d&&
+4<b.width){if(null!=m.guidePart)try{v.putImageData(m.guidePart.imgData1,m.guidePart.x1,m.guidePart.y1),v.putImageData(m.guidePart.imgData2,m.guidePart.x2,m.guidePart.y2),v.putImageData(m.guidePart.imgData3,m.guidePart.x3,m.guidePart.y3)}catch(W){}g=m.origGuideMove.apply(this,arguments);try{var k,n,q,t,u,y,z,A,B;v.lineWidth=.5;v.strokeStyle=p.guideClr;v.setLineDash([2]);d?(n=b.y+g.y+l-this.graph.container.scrollTop,k=0,u=n+b.height/2,t=l/2,A=n+b.height,z=0,q=v.getImageData(k,n-1,l,3),x(k,n,l,n),n--,
+y=v.getImageData(t,u-1,l,3),x(t,u,l,u),u--,B=v.getImageData(z,A-1,l,3),x(z,A,l,A),A--):(n=0,k=b.x+g.x+l-this.graph.container.scrollLeft,u=l/2,t=k+b.width/2,A=0,z=k+b.width,q=v.getImageData(k-1,n,3,l),x(k,n,k,l),k--,y=v.getImageData(t-1,u,3,l),x(t,u,t,l),t--,B=v.getImageData(z-1,A,3,l),x(z,A,z,l),z--);if(null==m.guidePart||m.guidePart.x1!=k||m.guidePart.y1!=n)m.guidePart={imgData1:q,x1:k,y1:n,imgData2:y,x2:t,y2:u,imgData3:B,x3:z,y3:A}}catch(W){}}else g=m.origGuideMove.apply(this,arguments);return g};
this.origGuideDestroy=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){var b=m.origGuideDestroy.apply(this,arguments);if(null!=m.guidePart)try{v.putImageData(m.guidePart.imgData1,m.guidePart.x1,m.guidePart.y1),v.putImageData(m.guidePart.imgData2,m.guidePart.x2,m.guidePart.y2),v.putImageData(m.guidePart.imgData3,m.guidePart.x3,m.guidePart.y3),m.guidePart=null}catch(C){}return b}}mxRuler.prototype.RULER_THICKNESS=14;mxRuler.prototype.unit=mxConstants.POINTS;
mxRuler.prototype.setUnit=function(b){this.unit=b;this.drawRuler()};mxRuler.prototype.formatText=function(b){switch(this.unit){case mxConstants.POINTS:return Math.round(b);case mxConstants.MILLIMETERS:return(b/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.METERS:return(b/(1E3*mxConstants.PIXELS_PER_MM)).toFixed(4);case mxConstants.INCHES:return(b/mxConstants.PIXELS_PER_INCH).toFixed(2)}};
mxRuler.prototype.destroy=function(){this.ui.refresh=this.editorUiRefresh;mxGuide.prototype.move=this.origGuideMove;mxGuide.prototype.destroy=this.origGuideDestroy;this.graph.removeListener(this.sizeListener);this.graph.container.removeEventListener("scroll",this.scrollListener);this.graph.view.removeListener("unitChanged",this.unitListener);this.ui.removeListener("pageViewChanged",this.pageListener);this.ui.removeListener("pageScaleChanged",this.pageListener);this.ui.removeListener("pageFormatChanged",
@@ -12311,12 +12321,12 @@ function mxDualRuler(b,e){var d=new mxPoint(mxRuler.prototype.RULER_THICKNESS,mx
function(c){d=null!=b.currentMenu;mxEvent.consume(c)}),null,mxUtils.bind(this,function(e){if(b.editor.graph.isEnabled()&&!b.editor.graph.isMouseDown&&(mxEvent.isTouchEvent(e)||mxEvent.isPopupTrigger(e))){b.editor.graph.popupMenuHandler.hideMenu();b.hideCurrentMenu();if(!mxEvent.isTouchEvent(e)||!d){var f=new mxPopupMenu(mxUtils.bind(this,function(c,d){b.menus.addMenuItems(c,["points","inches","millimeters","meters"],d)}));f.div.className+=" geMenubarMenu";f.smartSeparators=!0;f.showDisabled=!0;f.autoExpand=
!0;f.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(f,arguments);b.resetCurrentMenu();f.destroy()});var g=mxEvent.getClientX(e),k=mxEvent.getClientY(e);f.popup(g,k,null,e);b.setCurrentMenu(f,c)}mxEvent.consume(e)}}))});c(this.hRuler.container);c(this.vRuler.container);this.vRuler.drawRuler();this.hRuler.drawRuler()}mxDualRuler.prototype.updateStyle=function(){this.vRuler.updateStyle();this.hRuler.updateStyle();this.vRuler.drawRuler();this.hRuler.drawRuler()};
mxDualRuler.prototype.setUnit=function(b){this.vRuler.setUnit(b);this.hRuler.setUnit(b)};mxDualRuler.prototype.setStyle=function(b){this.vRuler.setStyle(b);this.hRuler.setStyle(b)};mxDualRuler.prototype.destroy=function(){this.vRuler.destroy();this.hRuler.destroy();this.ui.refresh=this.editorUiRefresh;mxGuide.prototype.move=this.origGuideMove;mxGuide.prototype.destroy=this.origGuideDestroy;this.ui.getDiagramContainerOffset=this.editorUiGetDiagContOffset};function mxFreehand(b){var e=null!=b.view&&null!=b.view.canvas?b.view.canvas.ownerSVGElement:null;if(null!=b.container&&null!=e){b.addListener(mxEvent.ESCAPE,mxUtils.bind(this,function(){this.stopDrawing()}));var d=mxFreehand.prototype.NORMAL_SMOOTHING,c=null,g=[],k,n=[],f,l=!1,m=!0,p=!0,q=!0,t=!0,v=[],u=!1,x=!0;this.setClosedPath=function(b){l=b};this.setAutoClose=function(b){m=b};this.setAutoInsert=function(b){p=b};this.setAutoScroll=function(b){q=b};this.setOpenFill=function(b){t=b};this.setStopClickEnabled=
-function(b){x=b};this.setSmoothing=function(b){d=b};var A=function(c){u=c;b.getRubberband().setEnabled(!c);b.graphHandler.setSelectEnabled(!c);b.graphHandler.setMoveEnabled(!c);b.container.style.cursor=c?"crosshair":"";b.fireEvent(new mxEventObject("freehandStateChanged"))};this.startDrawing=function(){A(!0)};this.isDrawing=function(){return u};var z=mxUtils.bind(this,function(b){if(c){var d=f.length,e=x&&0<n.length&&null!=f&&2>f.length;e||n.push.apply(n,f);f=[];n.push(null);g.push(c);c=null;(e||
+function(b){x=b};this.setSmoothing=function(b){d=b};var z=function(c){u=c;b.getRubberband().setEnabled(!c);b.graphHandler.setSelectEnabled(!c);b.graphHandler.setMoveEnabled(!c);b.container.style.cursor=c?"crosshair":"";b.fireEvent(new mxEventObject("freehandStateChanged"))};this.startDrawing=function(){z(!0)};this.isDrawing=function(){return u};var A=mxUtils.bind(this,function(b){if(c){var d=f.length,e=x&&0<n.length&&null!=f&&2>f.length;e||n.push.apply(n,f);f=[];n.push(null);g.push(c);c=null;(e||
p)&&this.stopDrawing();p&&2<=d&&this.startDrawing();mxEvent.consume(b)}});this.createStyle=function(b){return mxConstants.STYLE_SHAPE+"="+b+";fillColor=none;"};this.stopDrawing=function(){if(0<g.length){for(var d=n[0].x,e=n[0].x,f=n[0].y,k=n[0].y,p=1;p<n.length;p++)null!=n[p]&&(d=Math.max(d,n[p].x),e=Math.min(e,n[p].x),f=Math.max(f,n[p].y),k=Math.min(k,n[p].y));d-=e;f-=k;if(0<d&&0<f){var q=100/d,u=100/f;n.map(function(b){if(null==b)return b;b.x=(b.x-e)*q;b.y=(b.y-k)*u;return b});for(var v='<shape strokewidth="inherit"><foreground>',
-x=0,p=0;p<n.length;p++){var y=n[p];if(null==y){var y=!1,x=n[x],z=n[p-1];!l&&m&&(y=x.x-z.x,z=x.y-z.y,y=Math.sqrt(y*y+z*z)<=b.tolerance);if(l||y)v+='<line x="'+x.x.toFixed(2)+'" y="'+x.y.toFixed(2)+'"/>';v+="</path>"+(t||l||y?"<fillstroke/>":"<stroke/>");x=p+1}else v=p==x?v+('<path><move x="'+y.x.toFixed(2)+'" y="'+y.y.toFixed(2)+'"/>'):v+('<line x="'+y.x.toFixed(2)+'" y="'+y.y.toFixed(2)+'"/>')}v+="</foreground></shape>";if(b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())){p=this.createStyle("stencil("+
-Graph.compress(v)+")");v=b.view.scale;x=b.view.translate;d=new mxCell("",new mxGeometry(e/v-x.x,k/v-x.y,d/v,f/v),p);d.vertex=1;b.model.beginUpdate();try{d=b.addCell(d),b.fireEvent(new mxEventObject("cellsInserted","cells",[d])),b.fireEvent(new mxEventObject("freehandInserted","cell",d))}finally{b.model.endUpdate()}b.setSelectionCells([d])}}for(p=0;p<g.length;p++)g[p].parentNode.removeChild(g[p]);c=null;g=[];n=[]}A(!1)};b.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,c){var d=c.getProperty("eventName"),
+x=0,p=0;p<n.length;p++){var y=n[p];if(null==y){var y=!1,x=n[x],A=n[p-1];!l&&m&&(y=x.x-A.x,A=x.y-A.y,y=Math.sqrt(y*y+A*A)<=b.tolerance);if(l||y)v+='<line x="'+x.x.toFixed(2)+'" y="'+x.y.toFixed(2)+'"/>';v+="</path>"+(t||l||y?"<fillstroke/>":"<stroke/>");x=p+1}else v=p==x?v+('<path><move x="'+y.x.toFixed(2)+'" y="'+y.y.toFixed(2)+'"/>'):v+('<line x="'+y.x.toFixed(2)+'" y="'+y.y.toFixed(2)+'"/>')}v+="</foreground></shape>";if(b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())){p=this.createStyle("stencil("+
+Graph.compress(v)+")");v=b.view.scale;x=b.view.translate;d=new mxCell("",new mxGeometry(e/v-x.x,k/v-x.y,d/v,f/v),p);d.vertex=1;b.model.beginUpdate();try{d=b.addCell(d),b.fireEvent(new mxEventObject("cellsInserted","cells",[d])),b.fireEvent(new mxEventObject("freehandInserted","cell",d))}finally{b.model.endUpdate()}b.setSelectionCells([d])}}for(p=0;p<g.length;p++)g[p].parentNode.removeChild(g[p]);c=null;g=[];n=[]}z(!1)};b.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,c){var d=c.getProperty("eventName"),
e=c.getProperty("event");d==mxEvent.MOUSE_MOVE&&u&&(null!=e.sourceState&&e.sourceState.setCursor("crosshair"),e.consume())}));var B=new mxCell;B.edge=!0;b.addMouseListener({mouseDown:mxUtils.bind(this,function(d,g){if(b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())){var l=g.getEvent();if(u&&!mxEvent.isPopupTrigger(l)&&!mxEvent.isMultiTouchEvent(l)){var m=b.getCurrentCellStyle(B),p=parseFloat(b.currentVertexStyle[mxConstants.STYLE_STROKEWIDTH]||1),p=Math.max(1,p*b.view.scale),m=mxUtils.getValue(b.currentVertexStyle,
mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(m,mxConstants.STYLE_STROKECOLOR,"#000"));"default"==m&&(m=b.shapeForegroundColor);c=document.createElementNS("http://www.w3.org/2000/svg","path");c.setAttribute("fill","none");c.setAttribute("stroke",m);c.setAttribute("stroke-width",p);"1"==b.currentVertexStyle[mxConstants.STYLE_DASHED]&&(m=b.currentVertexStyle[mxConstants.STYLE_DASH_PATTERN]||"3 3",m=m.split(" ").map(function(b){return parseFloat(b)*p}).join(" "),c.setAttribute("stroke-dasharray",m));
-v=[];l=y(l);C(l);k="M"+l.x+" "+l.y;n.push(l);f=[];c.setAttribute("d",k);e.appendChild(c);g.consume()}}}),mouseMove:mxUtils.bind(this,function(d,e){if(c&&b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())){var g=e.getEvent(),g=y(g);C(g);var l=G(0);if(l){k+=" L"+l.x+" "+l.y;n.push(l);var m="";f=[];for(var p=2;p<v.length;p+=2)l=G(p),m+=" L"+l.x+" "+l.y,f.push(l);c.setAttribute("d",k+m)}q&&(l=b.view.translate,b.scrollRectToVisible((new mxRectangle(g.x-l.x,g.y-l.y)).grow(20)));e.consume()}}),mouseUp:mxUtils.bind(this,
-function(d,e){c&&b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(z(e.getEvent()),e.consume())})});var y=function(c){return mxUtils.convertPoint(b.container,mxEvent.getClientX(c),mxEvent.getClientY(c))},C=function(b){for(v.push(b);v.length>d;)v.shift()},G=function(b){var c=v.length;if(1===c%2||c>=d){var e=0,f=0,g,k=0;for(g=b;g<c;g++)k++,b=v[g],e+=b.x,f+=b.y;return{x:e/k,y:f/k}}return null}}}mxFreehand.prototype.NO_SMOOTHING=1;mxFreehand.prototype.MILD_SMOOTHING=4;
+v=[];l=y(l);C(l);k="M"+l.x+" "+l.y;n.push(l);f=[];c.setAttribute("d",k);e.appendChild(c);g.consume()}}}),mouseMove:mxUtils.bind(this,function(d,e){if(c&&b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())){var g=e.getEvent(),g=y(g);C(g);var l=E(0);if(l){k+=" L"+l.x+" "+l.y;n.push(l);var m="";f=[];for(var p=2;p<v.length;p+=2)l=E(p),m+=" L"+l.x+" "+l.y,f.push(l);c.setAttribute("d",k+m)}q&&(l=b.view.translate,b.scrollRectToVisible((new mxRectangle(g.x-l.x,g.y-l.y)).grow(20)));e.consume()}}),mouseUp:mxUtils.bind(this,
+function(d,e){c&&b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&(A(e.getEvent()),e.consume())})});var y=function(c){return mxUtils.convertPoint(b.container,mxEvent.getClientX(c),mxEvent.getClientY(c))},C=function(b){for(v.push(b);v.length>d;)v.shift()},E=function(b){var c=v.length;if(1===c%2||c>=d){var e=0,f=0,g,k=0;for(g=b;g<c;g++)k++,b=v[g],e+=b.x,f+=b.y;return{x:e/k,y:f/k}}return null}}}mxFreehand.prototype.NO_SMOOTHING=1;mxFreehand.prototype.MILD_SMOOTHING=4;
mxFreehand.prototype.NORMAL_SMOOTHING=8;mxFreehand.prototype.VERY_SMOOTH_SMOOTHING=12;mxFreehand.prototype.SUPER_SMOOTH_SMOOTHING=16;mxFreehand.prototype.HYPER_SMOOTH_SMOOTHING=20;
diff --git a/src/main/webapp/js/diagramly/App.js b/src/main/webapp/js/diagramly/App.js
index 826f2c94..a5412b2c 100644
--- a/src/main/webapp/js/diagramly/App.js
+++ b/src/main/webapp/js/diagramly/App.js
@@ -635,7 +635,8 @@ App.main = function(callback, createUi)
if (window.mxscript != null)
{
// Checks for script content changes to avoid CSP errors in production
- if (urlParams['dev'] == '1' && CryptoJS != null && App.mode != App.MODE_DROPBOX && App.mode != App.MODE_TRELLO)
+ if (urlParams['dev'] == '1' && !mxClient.IS_CHROMEAPP && !EditorUi.isElectronApp &&
+ CryptoJS != null && App.mode != App.MODE_DROPBOX && App.mode != App.MODE_TRELLO)
{
var scripts = document.getElementsByTagName('script');
@@ -3297,7 +3298,7 @@ App.prototype.start = function()
{
this.loadFile();
}
- else
+ else if (!EditorUi.isElectronApp)
{
this.createFile(this.defaultFilename, this.getFileData(), null, null, null, null, null, true);
}
diff --git a/src/main/webapp/js/diagramly/Devel.js b/src/main/webapp/js/diagramly/Devel.js
index d51b1583..2105a6c0 100644
--- a/src/main/webapp/js/diagramly/Devel.js
+++ b/src/main/webapp/js/diagramly/Devel.js
@@ -67,7 +67,7 @@ if (!mxIsElectron && location.protocol !== 'http:')
// Replaces unsafe-inline style-src with hashes with safe-style-src URL parameter
((urlParams['safe-style-src'] == '1') ? styleHashes : '\'unsafe-inline\'; ') +
'base-uri \'none\';' +
- 'child-src \'none\';' +
+ 'child-src \'self\';' +
'object-src \'none\';';
var csp = hashes + directives;
diff --git a/src/main/webapp/js/diagramly/Dialogs.js b/src/main/webapp/js/diagramly/Dialogs.js
index e838f583..3edb144a 100644
--- a/src/main/webapp/js/diagramly/Dialogs.js
+++ b/src/main/webapp/js/diagramly/Dialogs.js
@@ -12704,9 +12704,10 @@ var FilePropertiesDialog = function(editorUi)
var ConnectionPointsDialog = function(editorUi, cell)
{
- var GRAPH_SIZE = 300, CP_SIZE = 6, CP_HLF_SIZE = 3;
+ var GRAPH_SIZE = 350, CP_SIZE = 6, CP_HLF_SIZE = 3;
var div = document.createElement('div');
div.style.userSelect = 'none';
+ var keyHandler = null;
this.init = function()
{
@@ -12716,22 +12717,31 @@ var ConnectionPointsDialog = function(editorUi, cell)
graphDiv.style.overflow = 'hidden';
graphDiv.style.border = '1px solid lightGray';
graphDiv.style.boxSizing = 'border-box';
+ mxEvent.disableContextMenu(graphDiv);
div.appendChild(graphDiv);
- var cPointStyle = 'ellipse;fillColor=#000000;strokeColor=#000000;points=[];rotatable=0;resizable=0;connectable=0;editable=0;';
var editingGraph = new Graph(graphDiv);
editingGraph.autoExtend = false;
editingGraph.autoScroll = false;
editingGraph.setGridEnabled(false);
editingGraph.setEnabled(true);
- editingGraph.setPanning(false);
+ editingGraph.setPanning(true);
editingGraph.setConnectable(false);
- editingGraph.getRubberband().setEnabled(false);
editingGraph.setTooltips(false);
editingGraph.minFitScale = null;
editingGraph.maxFitScale = null;
editingGraph.centerZoom = true;
editingGraph.maxFitScale = 2;
+
+ function createCPoint(x, y)
+ {
+ var cPointStyle = 'shape=mxgraph.basic.x;fillColor=#29b6f2;strokeColor=#29b6f2;points=[];rotatable=0;resizable=0;connectable=0;editable=0;';
+ var cPoint = new mxCell('', new mxGeometry(x, y, CP_SIZE, CP_SIZE), cPointStyle);
+ cPoint.vertex = true;
+ cPoint.cp = true;
+ editingGraph.addCell(cPoint);
+ };
+
//Adding a point via double click
editingGraph.dblClick = function(evt, cell)
{
@@ -12739,18 +12749,38 @@ var ConnectionPointsDialog = function(editorUi, cell)
mxEvent.consume(evt);
var scale = editingGraph.view.scale;
var tr = editingGraph.view.translate;
- var cPoint = new mxCell('', new mxGeometry((pt.x - CP_HLF_SIZE) / scale - tr.x, (pt.y - CP_HLF_SIZE) / scale - tr.y, CP_SIZE, CP_SIZE), cPointStyle);
- cPoint.vertex = true;
- cPoint.cp = true;
- editingGraph.addCell(cPoint);
+ createCPoint((pt.x - CP_HLF_SIZE * scale) / scale - tr.x, (pt.y - CP_HLF_SIZE * scale) / scale - tr.y);
}
+ keyHandler = new mxKeyHandler(editingGraph);
+
+ function removeCPoints(evt)
+ {
+ var cells = editingGraph.getSelectionCells();
+ editingGraph.deleteCells(cells);
+ };
+
+ keyHandler.bindKey(46, removeCPoints);
+ keyHandler.bindKey(8, removeCPoints);
+
//Add cell and current connection points on it
var geo = cell.geometry;
var mainCell = new mxCell('', new mxGeometry(0, 0, geo.width, geo.height),
cell.style + ';rotatable=0;resizable=0;connectable=0;editable=0;movable=0;');
mainCell.vertex = true;
editingGraph.addCell(mainCell);
+ //Force rubberband inside the cell
+ editingGraph.getRubberband().isForceRubberbandEvent = function(event)
+ {
+ //Left click and not a click on a connection point
+ return event.evt.button == 0
+ && (event.getCell() == null || event.getCell() == mainCell);
+ };
+ //Force panning inside the cell
+ editingGraph.panningHandler.isForcePanningEvent = function(event)
+ {
+ return event.evt.button == 2;
+ };
var origIsCellSelectable = editingGraph.isCellSelectable;
editingGraph.isCellSelectable = function(cell)
@@ -12765,23 +12795,314 @@ var ConnectionPointsDialog = function(editorUi, cell)
}
};
+ // Disables hyperlinks
+ editingGraph.getLinkForCell = function()
+ {
+ return null;
+ };
+
var state = editingGraph.view.getState(mainCell);
var constraints = editingGraph.getAllConnectionConstraints(state);
for (var i = 0; constraints != null && i < constraints.length; i++)
{
var cp = editingGraph.getConnectionPoint(state, constraints[i]);
- var cPoint = new mxCell('', new mxGeometry(cp.x - CP_HLF_SIZE, cp.y - CP_HLF_SIZE, CP_SIZE, CP_SIZE), cPointStyle);
- cPoint.vertex = true;
- cPoint.cp = true;
- editingGraph.addCell(cPoint);
+ createCPoint(cp.x - CP_HLF_SIZE, cp.y - CP_HLF_SIZE);
}
editingGraph.fit(8);
editingGraph.center();
+ var zoomInBtn = mxUtils.button('', function()
+ {
+ editingGraph.zoomIn();
+ });
+ zoomInBtn.className = 'geSprite geSprite-zoomin';
+ zoomInBtn.setAttribute('title', mxResources.get('zoomIn'));
+ zoomInBtn.style.outline = 'none';
+ zoomInBtn.style.border = 'none';
+ zoomInBtn.style.margin = '2px';
+ zoomInBtn.style.cursor = 'pointer';
+ mxUtils.setOpacity(zoomInBtn, 60);
+
+ var zoomOutBtn = mxUtils.button('', function()
+ {
+ editingGraph.zoomOut();
+ });
+ zoomOutBtn.className = 'geSprite geSprite-zoomout';
+ zoomOutBtn.setAttribute('title', mxResources.get('zoomOut'));
+ zoomOutBtn.style.outline = 'none';
+ zoomOutBtn.style.border = 'none';
+ zoomOutBtn.style.margin = '2px';
+ zoomOutBtn.style.cursor = 'pointer';
+ mxUtils.setOpacity(zoomOutBtn, 60);
+
+ var zoomFitBtn = mxUtils.button('', function()
+ {
+ editingGraph.fit(8);
+ editingGraph.center();
+ });
+ zoomFitBtn.className = 'geSprite geSprite-fit';
+ zoomFitBtn.setAttribute('title', mxResources.get('fit'));
+ zoomFitBtn.style.outline = 'none';
+ zoomFitBtn.style.border = 'none';
+ zoomFitBtn.style.margin = '2px';
+ zoomFitBtn.style.cursor = 'pointer';
+ mxUtils.setOpacity(zoomFitBtn, 60);
+
+ var zoomActualBtn = mxUtils.button('', function()
+ {
+ editingGraph.zoomActual();
+ editingGraph.center();
+ });
+ zoomActualBtn.className = 'geSprite geSprite-actualsize';
+ zoomActualBtn.setAttribute('title', mxResources.get('actualSize'));
+ zoomActualBtn.style.outline = 'none';
+ zoomActualBtn.style.border = 'none';
+ zoomActualBtn.style.margin = '2px';
+ zoomActualBtn.style.cursor = 'pointer';
+ mxUtils.setOpacity(zoomActualBtn, 60);
+
+ var deleteBtn = mxUtils.button('', removeCPoints);
+ deleteBtn.className = 'geSprite geSprite-delete';
+ deleteBtn.setAttribute('title', mxResources.get('delete'));
+ deleteBtn.style.outline = 'none';
+ deleteBtn.style.border = 'none';
+ deleteBtn.style.margin = '2px';
+ deleteBtn.style.float = 'right';
+ deleteBtn.style.cursor = 'pointer';
+ mxUtils.setOpacity(deleteBtn, 10); //Disabled
+
+ var zoomBtns = document.createElement('div');
+ zoomBtns.appendChild(zoomInBtn);
+ zoomBtns.appendChild(zoomOutBtn);
+ zoomBtns.appendChild(zoomActualBtn);
+ zoomBtns.appendChild(zoomFitBtn);
+ zoomBtns.appendChild(deleteBtn);
+
+ div.appendChild(zoomBtns);
+
+ //Auto add point to a side
+ var autoAddDiv = document.createElement('div');
+ autoAddDiv.style.marginTop = '8px';
+ var addSpan = document.createElement('span');
+ mxUtils.write(addSpan, mxResources.get('add'));
+ autoAddDiv.appendChild(addSpan);
+ var pCount = document.createElement('input');
+ pCount.setAttribute('type', 'number');
+ pCount.setAttribute('min', '1');
+ pCount.setAttribute('value', '1');
+ pCount.style.width = '45px';
+ pCount.style.margin = '0 4px 0 4px';
+ autoAddDiv.appendChild(pCount);
+ var pointsSpan = document.createElement('span');
+ mxUtils.write(pointsSpan, mxResources.get('points') + '->');
+ autoAddDiv.appendChild(pointsSpan);
+ var sideSelect = document.createElement('select');
+ sideSelect.style.margin = '0 4px 0 4px';
+ var sides = ['left', 'right', 'top', 'bottom'];
+
+ for (var i = 0; i < sides.length; i++)
+ {
+ var side = sides[i];
+ var option = document.createElement('option');
+ mxUtils.write(option, mxResources.get(side));
+ option.value = side;
+ sideSelect.appendChild(option);
+ }
+
+ autoAddDiv.appendChild(sideSelect);
+
+ var addBtn = mxUtils.button(mxResources.get('add'), function()
+ {
+ var count = parseInt(pCount.value);
+ count = count < 1? 1 : (count > 100? 100 : count);
+ pCount.value = count;
+ var side = sideSelect.value;
+ var geo = mainCell.geometry;
+
+ for (var i = 0; i < count; i++)
+ {
+ var x, y;
+
+ switch(side)
+ {
+ case 'left':
+ x = geo.x;
+ y = geo.y + (i + 1) * geo.height / (count + 1);
+ break;
+ case 'right':
+ x = geo.x + geo.width;
+ y = geo.y + (i + 1) * geo.height / (count + 1);
+ break;
+ case 'top':
+ x = geo.x + (i + 1) * geo.width / (count + 1);
+ y = geo.y;
+ break;
+ case 'bottom':
+ x = geo.x + (i + 1) * geo.width / (count + 1);
+ y = geo.y + geo.height;
+ break;
+ }
+
+ createCPoint(x - CP_HLF_SIZE, y - CP_HLF_SIZE);
+ }
+ });
+
+ autoAddDiv.appendChild(addBtn);
+ div.appendChild(autoAddDiv);
+
+ //Point properties
+ var pointPropsDiv = document.createElement('div');
+ pointPropsDiv.style.marginTop = '8px';
+ pointPropsDiv.style.display = 'none';
+ var xSpan = document.createElement('span');
+ mxUtils.write(xSpan, 'x');
+ pointPropsDiv.appendChild(xSpan);
+ var xInput = document.createElement('input');
+ xInput.setAttribute('type', 'number');
+ xInput.setAttribute('min', '0');
+ xInput.setAttribute('max', '100');
+ xInput.style.width = '45px';
+ xInput.style.margin = '0 4px 0 4px';
+ pointPropsDiv.appendChild(xInput);
+ var perSpan = document.createElement('span');
+ mxUtils.write(perSpan, '%, ');
+ pointPropsDiv.appendChild(perSpan);
+ var ySpan = document.createElement('span');
+ mxUtils.write(ySpan, 'y');
+ pointPropsDiv.appendChild(ySpan);
+ var yInput = document.createElement('input');
+ yInput.setAttribute('type', 'number');
+ yInput.setAttribute('min', '0');
+ yInput.setAttribute('max', '100');
+ yInput.style.width = '45px';
+ yInput.style.margin = '0 4px 0 4px';
+ pointPropsDiv.appendChild(yInput);
+ perSpan = document.createElement('span');
+ mxUtils.write(perSpan, '% - ');
+ pointPropsDiv.appendChild(perSpan);
+ var dxSpan = document.createElement('span');
+ mxUtils.write(dxSpan, 'dx');
+ pointPropsDiv.appendChild(dxSpan);
+ var dxInput = document.createElement('input');
+ dxInput.setAttribute('type', 'number');
+ dxInput.style.width = '45px';
+ dxInput.style.margin = '0 4px 0 4px';
+ pointPropsDiv.appendChild(dxInput);
+ var dySpan = document.createElement('span');
+ mxUtils.write(dySpan, 'dy');
+ pointPropsDiv.appendChild(dySpan);
+ var dyInput = document.createElement('input');
+ dyInput.setAttribute('type', 'number');
+ dyInput.style.width = '45px';
+ dyInput.style.margin = '0 4px 0 4px';
+ pointPropsDiv.appendChild(dyInput);
+ div.appendChild(pointPropsDiv);
+
+ function applyPointProp()
+ {
+ var x = parseInt(xInput.value) || 0;
+ x = x < 0? 0 : (x > 100? 100 : x);
+ xInput.value = x;
+
+ var y = parseInt(yInput.value) || 0;
+ y = y < 0? 0 : (y > 100? 100 : y);
+ yInput.value = y;
+
+ var dx = parseInt(dxInput.value) || 0;
+ var dy = parseInt(dyInput.value) || 0;
+
+ var cp = editingGraph.getConnectionPoint(state,
+ new mxConnectionConstraint(new mxPoint(x/100, y/100), false, null, dx, dy));
+
+ var cell = editingGraph.getSelectionCell();
+
+ if (cell != null)
+ {
+ var geo = cell.geometry.clone();
+ var scale = editingGraph.view.scale;
+ var tr = editingGraph.view.translate;
+ geo.x = (cp.x - CP_HLF_SIZE * scale) / scale - tr.x;
+ geo.y = (cp.y - CP_HLF_SIZE * scale) / scale - tr.y;
+ editingGraph.model.setGeometry(cell, geo);
+ }
+ };
+
+ function getConstraintFromCPoint(cp)
+ {
+ var dx = 0, dy = 0, mGeo = mainCell.geometry;
+ var x = mxUtils.format((cp.geometry.x + CP_HLF_SIZE - mGeo.x) / mGeo.width);
+ var y = mxUtils.format((cp.geometry.y + CP_HLF_SIZE - mGeo.y) / mGeo.height);
+
+ if (x < 0)
+ {
+ dx = x * mGeo.width;
+ x = 0;
+ }
+ else if (x > 1)
+ {
+ dx = (x - 1) * mGeo.width;
+ x = 1;
+ }
+
+ if (y < 0)
+ {
+ dy = y * mGeo.height;
+ y = 0;
+ }
+ else if (y > 1)
+ {
+ dy = (y - 1) * mGeo.height;
+ y = 1;
+ }
+
+ return {x: x, y: y, dx: parseInt(dx), dy: parseInt(dy)};
+ };
+
+ function fillCPointProp()
+ {
+ if (editingGraph.getSelectionCount() == 1)
+ {
+ var cell = editingGraph.getSelectionCell();
+ var constraint = getConstraintFromCPoint(cell);
+ xInput.value = constraint.x * 100;
+ yInput.value = constraint.y * 100;
+ dxInput.value = constraint.dx;
+ dyInput.value = constraint.dy;
+ pointPropsDiv.style.display = '';
+ autoAddDiv.style.display = 'none';
+ }
+ else
+ {
+ pointPropsDiv.style.display = 'none';
+ autoAddDiv.style.display = '';
+ }
+ };
+
+ editingGraph.getSelectionModel().addListener(mxEvent.CHANGE, function()
+ {
+ if (editingGraph.getSelectionCount() > 0)
+ {
+ mxUtils.setOpacity(deleteBtn, 60); //Enabled
+ }
+ else
+ {
+ mxUtils.setOpacity(deleteBtn, 10); //Disabled
+ }
+
+ fillCPointProp();
+ });
+ editingGraph.addListener(mxEvent.CELLS_MOVED, fillCPointProp);
+
+ mxEvent.addListener(xInput, 'change', applyPointProp);
+ mxEvent.addListener(yInput, 'change', applyPointProp);
+ mxEvent.addListener(dxInput, 'change', applyPointProp);
+ mxEvent.addListener(dyInput, 'change', applyPointProp);
+
var cancelBtn = mxUtils.button(mxResources.get('cancel'), function()
{
+ destroy();
editorUi.hideDialog();
});
@@ -12789,7 +13110,7 @@ var ConnectionPointsDialog = function(editorUi, cell)
var applyBtn = mxUtils.button(mxResources.get('apply'), function()
{
- var cells = editingGraph.model.cells, points = [], mGeo = mainCell.geometry;
+ var cells = editingGraph.model.cells, points = [], constraints = [];
for (var id in cells)
{
@@ -12797,36 +13118,30 @@ var ConnectionPointsDialog = function(editorUi, cell)
if (!cp.cp) continue;
- var dx = 0, dy = 0;
- var x = mxUtils.format((cp.geometry.x + CP_HLF_SIZE - mGeo.x) / mGeo.width);
- var y = mxUtils.format((cp.geometry.y + CP_HLF_SIZE - mGeo.y) / mGeo.height);
+ constraints.push(getConstraintFromCPoint(cp));
+ }
- if (x < 0)
- {
- dx = x * mGeo.width;
- x = 0;
- }
- else if (x > 1)
- {
- dx = (x - 1) * mGeo.width;
- x = 1;
- }
+ //Find and remove identical points
+ constraints.sort(function(a, b)
+ {
+ return (a.x != b.x) ? a.x - b.x : ((a.y != b.y) ? a.y - b.y :
+ ((a.dx != b.dx) ? a.dx - b.dx : a.dy - b.dy)); //Sort based on x then y, dx and dy
+ });
- if (y < 0)
- {
- dy = y * mGeo.height;
- y = 0;
- }
- else if (y > 1)
+ for (var i = 0; i < constraints.length; i++)
+ {
+ if (i > 0 && constraints[i].x == constraints[i - 1].x && constraints[i].y == constraints[i - 1].y
+ && constraints[i].dx == constraints[i - 1].dx && constraints[i].dy == constraints[i - 1].dy)
{
- dy = (y - 1) * mGeo.height;
- y = 1;
+ continue; //Skip this identical point
}
- points.push('[' + x + ',' + y + ',0,' + dx + ',' + dy + ']');
+ points.push('[' + constraints[i].x + ',' + constraints[i].y + ',0,' +
+ constraints[i].dx + ',' + constraints[i].dy + ']');
}
editorUi.editor.graph.setCellStyles('points', '[' + points.join(',') + ']', [cell]);
+ destroy();
editorUi.hideDialog();
});
@@ -12835,6 +13150,7 @@ var ConnectionPointsDialog = function(editorUi, cell)
var resetBtn = mxUtils.button(mxResources.get('reset'), function()
{
editorUi.editor.graph.setCellStyles('points', null, [cell]);
+ destroy();
editorUi.hideDialog();
});
@@ -12859,5 +13175,16 @@ var ConnectionPointsDialog = function(editorUi, cell)
div.appendChild(buttons);
};
+
+ function destroy()
+ {
+ if (keyHandler != null)
+ {
+ keyHandler.destroy();
+ }
+ };
+
+ this.destroy = destroy;
+
this.container = div;
}; \ No newline at end of file
diff --git a/src/main/webapp/js/diagramly/Editor.js b/src/main/webapp/js/diagramly/Editor.js
index 279425f4..310287d6 100644
--- a/src/main/webapp/js/diagramly/Editor.js
+++ b/src/main/webapp/js/diagramly/Editor.js
@@ -913,11 +913,12 @@
if (stroke)
{
- style.stroke = this.canvas.state.strokeColor === 'none' ? 'transparent' : this.canvas.state.strokeColor;
+ style.stroke = this.canvas.state.strokeColor === mxConstants.NONE ?
+ 'transparent' : this.canvas.state.strokeColor;
}
else
{
- style.stroke = 'none';
+ style.stroke = mxConstants.NONE;
}
var gradient = null;
@@ -925,8 +926,10 @@
if (fill)
{
- style.fill = this.canvas.state.fillColor === 'none' ? '' : this.canvas.state.fillColor;
- gradient = this.canvas.state.gradientColor === 'none' ? null : this.canvas.state.gradientColor;
+ style.fill = this.canvas.state.fillColor === mxConstants.NONE ?
+ '' : this.canvas.state.fillColor;
+ gradient = this.canvas.state.gradientColor === mxConstants.NONE ?
+ null : this.canvas.state.gradientColor;
}
else
{
@@ -1176,7 +1179,8 @@
this.nextShape.options[key] = style[key];
}
- if (style['stroke'] == null)
+ if (style['stroke'] == mxConstants.NONE ||
+ style['stroke'] == null)
{
delete this.nextShape.options['stroke'];
}
@@ -1257,9 +1261,8 @@
var shapeCreateHandJiggle = mxShape.prototype.createHandJiggle;
mxShape.prototype.createHandJiggle = function(c)
{
- if (!this.outline && this.style != null && mxUtils.getValue(this.style,
- 'sketch', /*(urlParams['sketch'] != '1' && urlParams['rough'] == '1') ?
- '1' : */'0') != '0')
+ if (!this.outline && this.style != null &&
+ mxUtils.getValue(this.style, 'sketch', '0') != '0')
{
if (mxUtils.getValue(this.style, 'sketchStyle', 'rough') == 'comic')
{
diff --git a/src/main/webapp/js/diagramly/Menus.js b/src/main/webapp/js/diagramly/Menus.js
index 32cc5cb1..c6c81bc1 100644
--- a/src/main/webapp/js/diagramly/Menus.js
+++ b/src/main/webapp/js/diagramly/Menus.js
@@ -1091,7 +1091,7 @@
var pluginsAction = editorUi.actions.get('plugins');
- if (pluginsAction != null)
+ if (pluginsAction != null && urlParams['sketch'] == '1')
{
// TODO: Show change message only when plugins have changed
buttons.push([mxResources.get('plugins'), pluginsAction.funct]);
@@ -1138,7 +1138,7 @@
mxSettings.save();
}
- if (newValue != value)
+ if (newValue == value)
{
editorUi.hideDialog();
}
@@ -1155,8 +1155,8 @@
localStorage.removeItem(Editor.configurationKey);
}
- editorUi.alert(mxResources.get('restartForChangeRequired'));
editorUi.hideDialog();
+ editorUi.alert(mxResources.get('restartForChangeRequired'));
}
}
catch (e)
diff --git a/src/main/webapp/js/diagramly/Minimal.js b/src/main/webapp/js/diagramly/Minimal.js
index 7d40c92f..f8940f49 100644
--- a/src/main/webapp/js/diagramly/Minimal.js
+++ b/src/main/webapp/js/diagramly/Minimal.js
@@ -2528,22 +2528,6 @@ EditorUi.initMinimalTheme = function()
undoAction.addListener('stateChanged', undoListener);
redoAction.addListener('stateChanged', undoListener);
undoListener();
-
- if (urlParams['layers'] != null)
- {
- var layersAction = ui.actions.get('layers');
- var layersElt = addMenuItem('', layersAction.funct, null, mxResources.get('layers'), layersAction, Editor.layersImage);
- layersElt.style.opacity = '0.4';
- footer.appendChild(layersElt);
- }
-
- if (urlParams['tags'] != null)
- {
- var tagsAction = ui.actions.get('tags');
- var tagsElt = addMenuItem('', tagsAction.funct, null, mxResources.get('tags'), tagsAction, Editor.tagsImage);
- tagsElt.style.opacity = '0.4';
- footer.appendChild(tagsElt);
- }
var pageMenu = this.createPageMenuTab(false, true);
pageMenu.style.display = 'none';
diff --git a/src/main/webapp/js/grapheditor/Actions.js b/src/main/webapp/js/grapheditor/Actions.js
index 2075653a..dfc8157d 100644
--- a/src/main/webapp/js/grapheditor/Actions.js
+++ b/src/main/webapp/js/grapheditor/Actions.js
@@ -1852,14 +1852,17 @@ Actions.prototype.init = function()
action.setToggleAction(true);
action.setSelectedCallback(mxUtils.bind(this, function() { return this.outlineWindow != null && this.outlineWindow.window.isVisible(); }));
- this.addAction('connectionPoints...', function()
+ this.addAction('editConnectionPoints...', function()
{
var cell = graph.getSelectionCell();
if (graph.isEnabled() && !graph.isCellLocked(graph.getDefaultParent()) && cell != null)
{
var dlg = new ConnectionPointsDialog(ui, cell);
- ui.showDialog(dlg.container, 300, 390, true, true);
+ ui.showDialog(dlg.container, 350, 450, true, true, function()
+ {
+ dlg.destroy();
+ });
dlg.init();
}
}).isEnabled = isGraphEnabled;
diff --git a/src/main/webapp/js/grapheditor/Menus.js b/src/main/webapp/js/grapheditor/Menus.js
index e83b0dd1..480c3f03 100644
--- a/src/main/webapp/js/grapheditor/Menus.js
+++ b/src/main/webapp/js/grapheditor/Menus.js
@@ -1598,10 +1598,7 @@ Menus.prototype.addPopupMenuCellEditItems = function(menu, cell, evt, parent)
this.addMenuItem(menu, 'crop', parent, evt);
}
- if (urlParams['dev'] == '1')
- {
- this.addMenuItem(menu, 'connectionPoints', parent, evt);
- }
+ this.addMenuItem(menu, 'editConnectionPoints', parent, evt);
};
/**
diff --git a/src/main/webapp/js/viewer-static.min.js b/src/main/webapp/js/viewer-static.min.js
index 3066c60a..663ace7c 100644
--- a/src/main/webapp/js/viewer-static.min.js
+++ b/src/main/webapp/js/viewer-static.min.js
@@ -202,7 +202,7 @@ a),DRAWIO_GITLAB_URL=a);a=urlParams["gitlab-id"];null!=a&&(DRAWIO_GITLAB_ID=a);w
if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==urlParams.local||"1"==urlParams.lockdown)urlParams.picker="0",urlParams.gapi="0",urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0";
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";
-window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"16.4.5",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"16.4.7",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2<navigator.maxTouchPoints,IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&
0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==
@@ -825,8 +825,8 @@ mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var a=this.vertexArra
g,d=d/f*g,e=e/f*g,this.dispX[b]+=d,this.dispY[b]+=e,this.dispX[c]-=d,this.dispY[c]-=e)}}};mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)};function mxCircleLayout(a,b){mxGraphLayout.call(this,a);this.radius=null!=b?b:100}mxCircleLayout.prototype=new mxGraphLayout;mxCircleLayout.prototype.constructor=mxCircleLayout;mxCircleLayout.prototype.radius=null;mxCircleLayout.prototype.moveCircle=!1;
mxCircleLayout.prototype.x0=0;mxCircleLayout.prototype.y0=0;mxCircleLayout.prototype.resetEdges=!0;mxCircleLayout.prototype.disableEdgeStyle=!0;
mxCircleLayout.prototype.execute=function(a){var b=this.graph.getModel();b.beginUpdate();try{for(var c=0,d=null,e=null,f=[],g=b.getChildCount(a),k=0;k<g;k++){var l=b.getChildAt(a,k);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{f.push(l);var m=this.getVertexBounds(l),d=null==d?m.y:Math.min(d,m.y),e=null==e?m.x:Math.min(e,m.x),c=Math.max(c,Math.max(m.width,m.height))}}var n=this.getRadius(f.length,
-c);this.moveCircle&&(e=this.x0,d=this.y0);this.circle(f,n,e,d)}finally{b.endUpdate()}};mxCircleLayout.prototype.getRadius=function(a,b){return Math.max(a*b/Math.PI,this.radius)};mxCircleLayout.prototype.circle=function(a,b,c,d){for(var e=a.length,f=2*Math.PI/e,g=0;g<e;g++)this.isVertexMovable(a[g])&&this.setVertexLocation(a[g],Math.round(c+b+b*Math.sin(g*f)),Math.round(d+b+b*Math.cos(g*f)))};function mxParallelEdgeLayout(a){mxGraphLayout.call(this,a)}mxParallelEdgeLayout.prototype=new mxGraphLayout;
-mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout;mxParallelEdgeLayout.prototype.spacing=20;mxParallelEdgeLayout.prototype.checkOverlap=!1;mxParallelEdgeLayout.prototype.execute=function(a,b){var c=this.findParallels(a,b);this.graph.model.beginUpdate();try{for(var d in c){var e=c[d];1<e.length&&this.layout(e)}}finally{this.graph.model.endUpdate()}};
+c);this.moveCircle&&(e=this.x0,d=this.y0);this.circle(f,n,e,d)}finally{b.endUpdate()}};mxCircleLayout.prototype.getRadius=function(a,b){return Math.max(a*b/Math.PI,this.radius)};mxCircleLayout.prototype.circle=function(a,b,c,d){for(var e=a.length,f=2*Math.PI/e,g=0;g<e;g++)this.isVertexMovable(a[g])&&this.setVertexLocation(a[g],Math.round(c+b+b*Math.cos(g*f-Math.PI/2)),Math.round(d+b+b*Math.sin(g*f-Math.PI/2)))};function mxParallelEdgeLayout(a){mxGraphLayout.call(this,a)}
+mxParallelEdgeLayout.prototype=new mxGraphLayout;mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout;mxParallelEdgeLayout.prototype.spacing=20;mxParallelEdgeLayout.prototype.checkOverlap=!1;mxParallelEdgeLayout.prototype.execute=function(a,b){var c=this.findParallels(a,b);this.graph.model.beginUpdate();try{for(var d in c){var e=c[d];1<e.length&&this.layout(e)}}finally{this.graph.model.endUpdate()}};
mxParallelEdgeLayout.prototype.findParallels=function(a,b){var c=[],d=mxUtils.bind(this,function(a){if(!this.isEdgeIgnored(a)){var b=this.getEdgeId(a);null!=b&&(null==c[b]&&(c[b]=[]),c[b].push(a))}});if(null!=b)for(var e=0;e<b.length;e++)d(b[e]);else for(var f=this.graph.getModel(),g=f.getChildCount(a),e=0;e<g;e++)d(f.getChildAt(a,e));return c};
mxParallelEdgeLayout.prototype.getEdgeId=function(a){var b=this.graph.getView(),c=b.getVisibleTerminal(a,!0),b=b.getVisibleTerminal(a,!1),d="";if(null!=c&&null!=b){c=mxObjectIdentity.get(c);b=mxObjectIdentity.get(b);if(this.checkOverlap&&(a=this.graph.view.getState(a),null!=a&&null!=a.absolutePoints)){for(var d=[],e=0;e<a.absolutePoints.length;e++){var f=a.absolutePoints[e];null!=f&&d.push(f.x,f.y)}d=d.join(",")}return(c>b?b+"-"+c:c+"-"+b)+d}return null};
mxParallelEdgeLayout.prototype.layout=function(a){var b=a[0],c=this.graph.getView(),d=this.graph.getModel(),e=d.getGeometry(c.getVisibleTerminal(b,!0)),d=d.getGeometry(c.getVisibleTerminal(b,!1));if(e==d)for(var b=e.x+e.width+this.spacing,c=e.y+e.height/2,f=0;f<a.length;f++)this.route(a[f],b,c),b+=this.spacing;else if(null!=e&&null!=d){var b=e.x+e.width/2,c=e.y+e.height/2,f=d.x+d.width/2-b,g=d.y+d.height/2-c,d=Math.sqrt(f*f+g*g);if(0<d)for(e=g*this.spacing/d,d=f*this.spacing/d,b=b+f/2+e*(a.length-
@@ -2080,10 +2080,10 @@ f.length;d++)null!=b.view.getState(f[d])&&n.push(f[d]);b.setSelectionCells(n)}};
OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(b){this.cancel(!0);mxUtils.alert(b)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(b){null!=this.done&&this.done(null!=b?b:!0)};
function Dialog(b,c,e,f,n,l,q,d,k,g,p){var m=k?57:0,u=e,v=f,t=k?0:64,z=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(z.height=window.innerHeight);var y=z.height,I=Math.max(1,Math.round((z.width-e-t)/2)),D=Math.max(1,Math.round((y-f-b.footerHeight)/3));c.style.maxHeight="100%";e=null!=document.body?Math.min(e,document.body.scrollWidth-t):e;f=Math.min(f,y-t);0<b.dialogs.length&&(this.zIndex+=
2*b.dialogs.length);null==this.bg&&(this.bg=b.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=y+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));z=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=z.x+"px";this.bg.style.top=z.y+"px";I+=z.x;D+=z.y;Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
-D+=b.embedViewport.y,I+=b.embedViewport.x);n&&document.body.appendChild(this.bg);var F=b.createDiv(k?"geTransDialog":"geDialog");n=this.getPosition(I,D,e,f);I=n.x;D=n.y;F.style.width=e+"px";F.style.height=f+"px";F.style.left=I+"px";F.style.top=D+"px";F.style.zIndex=this.zIndex;F.appendChild(c);document.body.appendChild(F);!d&&c.clientHeight>F.clientHeight-t&&(c.style.overflowY="auto");c.style.overflowX="hidden";if(l&&(l=document.createElement("img"),l.setAttribute("src",Dialog.prototype.closeImage),
-l.setAttribute("title",mxResources.get("close")),l.className="geDialogClose",l.style.top=D+14+"px",l.style.left=I+e+38-m+"px",l.style.zIndex=this.zIndex,mxEvent.addListener(l,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(l),this.dialogImg=l,!p)){var E=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(b){E=!0}),null,mxUtils.bind(this,function(d){E&&(b.hideDialog(!0),E=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var k=g();
-null!=k&&(u=e=k.w,v=f=k.h)}k=mxUtils.getDocumentSize();y=k.height;this.bg.style.height=y+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");I=Math.max(1,Math.round((k.width-e-t)/2));D=Math.max(1,Math.round((y-f-b.footerHeight)/3));e=null!=document.body?Math.min(u,document.body.scrollWidth-t):u;f=Math.min(v,y-t);k=this.getPosition(I,D,e,f);I=k.x;D=k.y;F.style.left=I+"px";F.style.top=D+"px";F.style.width=e+"px";F.style.height=f+"px";!d&&
-c.clientHeight>F.clientHeight-t&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=D+14+"px",this.dialogImg.style.left=I+e+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=F;b.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
+D+=b.embedViewport.y,I+=b.embedViewport.x);n&&document.body.appendChild(this.bg);var G=b.createDiv(k?"geTransDialog":"geDialog");n=this.getPosition(I,D,e,f);I=n.x;D=n.y;G.style.width=e+"px";G.style.height=f+"px";G.style.left=I+"px";G.style.top=D+"px";G.style.zIndex=this.zIndex;G.appendChild(c);document.body.appendChild(G);!d&&c.clientHeight>G.clientHeight-t&&(c.style.overflowY="auto");c.style.overflowX="hidden";if(l&&(l=document.createElement("img"),l.setAttribute("src",Dialog.prototype.closeImage),
+l.setAttribute("title",mxResources.get("close")),l.className="geDialogClose",l.style.top=D+14+"px",l.style.left=I+e+38-m+"px",l.style.zIndex=this.zIndex,mxEvent.addListener(l,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(l),this.dialogImg=l,!p)){var F=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(b){F=!0}),null,mxUtils.bind(this,function(d){F&&(b.hideDialog(!0),F=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var k=g();
+null!=k&&(u=e=k.w,v=f=k.h)}k=mxUtils.getDocumentSize();y=k.height;this.bg.style.height=y+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");I=Math.max(1,Math.round((k.width-e-t)/2));D=Math.max(1,Math.round((y-f-b.footerHeight)/3));e=null!=document.body?Math.min(u,document.body.scrollWidth-t):u;f=Math.min(v,y-t);k=this.getPosition(I,D,e,f);I=k.x;D=k.y;G.style.left=I+"px";G.style.top=D+"px";G.style.width=e+"px";G.style.height=f+"px";!d&&
+c.clientHeight>G.clientHeight-t&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=D+14+"px",this.dialogImg.style.left=I+e+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=G;b.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+
"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png";
Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+
@@ -2113,9 +2113,9 @@ e.height==g.format.height?(d.value=g.key,l.setAttribute("checked","checked"),l.d
d.value="custom",k.style.display="none",p.style.display="")}}c="format-"+c;var l=document.createElement("input");l.setAttribute("name",c);l.setAttribute("type","radio");l.setAttribute("value","portrait");var q=document.createElement("input");q.setAttribute("name",c);q.setAttribute("type","radio");q.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";var k=
document.createElement("div");k.style.marginLeft="4px";k.style.width="210px";k.style.height="24px";l.style.marginRight="6px";k.appendChild(l);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));k.appendChild(c);q.style.marginLeft="10px";q.style.marginRight="6px";k.appendChild(q);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));k.appendChild(g);var p=document.createElement("div");p.style.marginLeft=
"4px";p.style.width="210px";p.style.height="24px";var m=document.createElement("input");m.setAttribute("size","7");m.style.textAlign="right";p.appendChild(m);mxUtils.write(p," in x ");var u=document.createElement("input");u.setAttribute("size","7");u.style.textAlign="right";p.appendChild(u);mxUtils.write(p," in");k.style.display="none";p.style.display="none";for(var v={},t=PageSetupDialog.getFormats(),z=0;z<t.length;z++){var y=t[z];v[y.key]=y;var I=document.createElement("option");I.setAttribute("value",
-y.key);mxUtils.write(I,y.title);d.appendChild(I)}var D=!1;n();b.appendChild(d);mxUtils.br(b);b.appendChild(k);b.appendChild(p);var F=e,E=function(b,c){var g=v[d.value];null!=g.format?(m.value=g.format.width/100,u.value=g.format.height/100,p.style.display="none",k.style.display=""):(k.style.display="none",p.style.display="");g=parseFloat(m.value);if(isNaN(g)||0>=g)m.value=e.width/100;g=parseFloat(u.value);if(isNaN(g)||0>=g)u.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
-Math.floor(100*parseFloat(u.value)));"custom"!=d.value&&q.checked&&(g=new mxRectangle(0,0,g.height,g.width));c&&D||g.width==F.width&&g.height==F.height||(F=g,null!=f&&f(F))};mxEvent.addListener(c,"click",function(b){l.checked=!0;E(b);mxEvent.consume(b)});mxEvent.addListener(g,"click",function(b){q.checked=!0;E(b);mxEvent.consume(b)});mxEvent.addListener(m,"blur",E);mxEvent.addListener(m,"click",E);mxEvent.addListener(u,"blur",E);mxEvent.addListener(u,"click",E);mxEvent.addListener(q,"change",E);mxEvent.addListener(l,
-"change",E);mxEvent.addListener(d,"change",function(b){D="custom"==d.value;E(b,!0)});E();return{set:function(b){e=b;n(null,null,!0)},get:function(){return F},widthInput:m,heightInput:u}};
+y.key);mxUtils.write(I,y.title);d.appendChild(I)}var D=!1;n();b.appendChild(d);mxUtils.br(b);b.appendChild(k);b.appendChild(p);var G=e,F=function(b,c){var g=v[d.value];null!=g.format?(m.value=g.format.width/100,u.value=g.format.height/100,p.style.display="none",k.style.display=""):(k.style.display="none",p.style.display="");g=parseFloat(m.value);if(isNaN(g)||0>=g)m.value=e.width/100;g=parseFloat(u.value);if(isNaN(g)||0>=g)u.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
+Math.floor(100*parseFloat(u.value)));"custom"!=d.value&&q.checked&&(g=new mxRectangle(0,0,g.height,g.width));c&&D||g.width==G.width&&g.height==G.height||(G=g,null!=f&&f(G))};mxEvent.addListener(c,"click",function(b){l.checked=!0;F(b);mxEvent.consume(b)});mxEvent.addListener(g,"click",function(b){q.checked=!0;F(b);mxEvent.consume(b)});mxEvent.addListener(m,"blur",F);mxEvent.addListener(m,"click",F);mxEvent.addListener(u,"blur",F);mxEvent.addListener(u,"click",F);mxEvent.addListener(q,"change",F);mxEvent.addListener(l,
+"change",F);mxEvent.addListener(d,"change",function(b){D="custom"==d.value;F(b,!0)});F();return{set:function(b){e=b;n(null,null,!0)},get:function(){return G},widthInput:m,heightInput:u}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
{key:"b4",title:"B4 (250 mm x 353 mm)",format:new mxRectangle(0,0,980,1390)},{key:"b5",title:"B5 (176 mm x 250 mm)",format:new mxRectangle(0,0,690,980)},{key:"16-9",title:"16:9 (1600 x 900)",format:new mxRectangle(0,0,900,1600)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1200,1920)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1200,1600)},{key:"custom",title:mxResources.get("custom"),format:null}]};
@@ -2152,17 +2152,17 @@ f.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);f.addListener
q="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(b){try{var d=f.getCellStyle(b,!1),c=[],g=[],k;for(k in d)c.push(d[k]),g.push(k);f.getModel().isEdge(b)?f.currentEdgeStyle={}:f.currentVertexStyle=
{};this.fireEvent(new mxEventObject("styleChanged","keys",g,"values",c,"cells",[b]))}catch(ba){this.handleError(ba)}};this.clearDefaultStyle=function(){f.currentEdgeStyle=mxUtils.clone(f.defaultEdgeStyle);f.currentVertexStyle=mxUtils.clone(f.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var k=["fontFamily","fontSource","fontSize","fontColor"];for(c=0;c<k.length;c++)0>mxUtils.indexOf(l,k[c])&&l.push(k[c]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),
p=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(c=0;c<p.length;c++)for(e=0;e<p[c].length;e++)l.push(p[c][e]);for(c=0;c<q.length;c++)0>mxUtils.indexOf(l,q[c])&&l.push(q[c]);var m=function(b,c,g,k,e,m,x){k=null!=k?k:f.currentVertexStyle;e=null!=e?e:f.currentEdgeStyle;m=null!=m?m:!0;g=null!=g?g:f.getModel();if(x){x=[];
-for(var u=0;u<b.length;u++)x=x.concat(g.getDescendants(b[u]));b=x}g.beginUpdate();try{for(u=0;u<b.length;u++){var t=b[u],v;if(c)v=["fontSize","fontFamily","fontColor"];else{var n=g.getStyle(t),y=null!=n?n.split(";"):[];v=l.slice();for(var q=0;q<y.length;q++){var z=y[q],P=z.indexOf("=");if(0<=P){var B=z.substring(0,P),ga=mxUtils.indexOf(v,B);0<=ga&&v.splice(ga,1);for(x=0;x<p.length;x++){var W=p[x];if(0<=mxUtils.indexOf(W,B))for(var M=0;M<W.length;M++){var I=mxUtils.indexOf(v,W[M]);0<=I&&v.splice(I,
-1)}}}}}var E=g.isEdge(t);x=E?e:k;for(var G=g.getStyle(t),q=0;q<v.length;q++){var B=v[q],V=x[B];null!=V&&"edgeStyle"!=B&&("shape"!=B||E)&&(!E||m||0>mxUtils.indexOf(d,B))&&(G=mxUtils.setStyle(G,B,V))}Editor.simpleLabels&&(G=mxUtils.setStyle(mxUtils.setStyle(G,"html",null),"whiteSpace",null));g.setStyle(t,G)}}finally{g.endUpdate()}return b};f.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});f.addListener("textInserted",function(b,d){m(d.getProperty("cells"),
+for(var u=0;u<b.length;u++)x=x.concat(g.getDescendants(b[u]));b=x}g.beginUpdate();try{for(u=0;u<b.length;u++){var t=b[u],v;if(c)v=["fontSize","fontFamily","fontColor"];else{var n=g.getStyle(t),y=null!=n?n.split(";"):[];v=l.slice();for(var q=0;q<y.length;q++){var z=y[q],R=z.indexOf("=");if(0<=R){var B=z.substring(0,R),fa=mxUtils.indexOf(v,B);0<=fa&&v.splice(fa,1);for(x=0;x<p.length;x++){var X=p[x];if(0<=mxUtils.indexOf(X,B))for(var M=0;M<X.length;M++){var I=mxUtils.indexOf(v,X[M]);0<=I&&v.splice(I,
+1)}}}}}var F=g.isEdge(t);x=F?e:k;for(var E=g.getStyle(t),q=0;q<v.length;q++){var B=v[q],W=x[B];null!=W&&"edgeStyle"!=B&&("shape"!=B||F)&&(!F||m||0>mxUtils.indexOf(d,B))&&(E=mxUtils.setStyle(E,B,W))}Editor.simpleLabels&&(E=mxUtils.setStyle(mxUtils.setStyle(E,"html",null),"whiteSpace",null));g.setStyle(t,E)}}finally{g.endUpdate()}return b};f.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});f.addListener("textInserted",function(b,d){m(d.getProperty("cells"),
!0)});this.insertHandler=m;this.createDivs();this.createUi();this.refresh();var u=mxUtils.bind(this,function(b){null==b&&(b=window.event);return f.isEditing()||null!=b&&this.isSelectionAllowed(b)});this.container==document.body&&(this.menubarContainer.onselectstart=u,this.menubarContainer.onmousedown=u,this.toolbarContainer.onselectstart=u,this.toolbarContainer.onmousedown=u,this.diagramContainer.onselectstart=u,this.diagramContainer.onmousedown=u,this.sidebarContainer.onselectstart=u,this.sidebarContainer.onmousedown=
u,this.formatContainer.onselectstart=u,this.formatContainer.onmousedown=u,this.footerContainer.onselectstart=u,this.footerContainer.onmousedown=u,null!=this.tabContainer&&(this.tabContainer.onselectstart=u));!this.editor.chromeless||this.editor.editable?(c=function(b){if(null!=b){var d=mxEvent.getSource(b);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)return!0;d=d.parentNode}}return u(b)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,
"contextmenu",c):this.diagramContainer.oncontextmenu=c):f.panningHandler.usePopupTrigger=!1;f.init(this.diagramContainer);mxClient.IS_SVG&&null!=f.view.getDrawPane()&&(c=f.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=f.graphHandler){var v=f.graphHandler.start;f.graphHandler.start=function(){null!=H.hoverIcons&&H.hoverIcons.reset();v.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,
function(b){var d=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(b)-d.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(b)-d.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var t=!1,z=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(b,d){return t||z.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(b){32!=b.which||f.isEditing()?
mxEvent.isConsumed(b)||27!=b.keyCode||this.hideDialog(null,!0):(t=!0,this.hoverIcons.reset(),f.container.style.cursor="move",f.isEditing()||mxEvent.getSource(b)!=f.container||mxEvent.consume(b))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(b){f.container.style.cursor="";t=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var y=f.panningHandler.isForcePanningEvent;f.panningHandler.isForcePanningEvent=function(b){return y.apply(this,
arguments)||t||mxEvent.isMouseEvent(b.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(b.getEvent()))&&(!mxEvent.isControlDown(b.getEvent())&&mxEvent.isRightMouseButton(b.getEvent())||mxEvent.isMiddleMouseButton(b.getEvent()))};var I=f.cellEditor.isStopEditingEvent;f.cellEditor.isStopEditingEvent=function(b){return I.apply(this,arguments)||13==b.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxClient.IS_SF&&mxEvent.isShiftDown(b))};var D=f.isZoomWheelEvent;
-f.isZoomWheelEvent=function(){return t||D.apply(this,arguments)};var F=!1,E=null,O=null,B=null,G=mxUtils.bind(this,function(){if(null!=this.toolbar&&F!=f.cellEditor.isContentEditing()){for(var b=this.toolbar.container.firstChild,d=[];null!=b;){var c=b.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,b)&&(b.parentNode.removeChild(b),d.push(b));b=c}b=this.toolbar.fontMenu;c=this.toolbar.sizeMenu;if(null==B)this.toolbar.createTextToolbar();else{for(var g=0;g<B.length;g++)this.toolbar.container.appendChild(B[g]);
-this.toolbar.fontMenu=E;this.toolbar.sizeMenu=O}F=f.cellEditor.isContentEditing();E=b;O=c;B=d}}),H=this,L=f.cellEditor.startEditing;f.cellEditor.startEditing=function(){L.apply(this,arguments);G();if(f.cellEditor.isContentEditing()){var b=!1,d=function(){b||(b=!0,window.setTimeout(function(){var d=f.getSelectedEditingElement();null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=H.toolbar&&(H.toolbar.setFontName(Graph.stripQuotes(d.fontFamily)),H.toolbar.setFontSize(parseInt(d.fontSize))));b=!1},
-0))};mxEvent.addListener(f.cellEditor.textarea,"input",d);mxEvent.addListener(f.cellEditor.textarea,"touchend",d);mxEvent.addListener(f.cellEditor.textarea,"mouseup",d);mxEvent.addListener(f.cellEditor.textarea,"keyup",d);d()}};var N=f.cellEditor.stopEditing;f.cellEditor.stopEditing=function(b,d){try{N.apply(this,arguments),G()}catch(W){H.handleError(W)}};f.container.setAttribute("tabindex","0");f.container.style.cursor="default";if(window.self===window.top&&null!=f.container.parentNode)try{f.container.focus()}catch(P){}var M=
+f.isZoomWheelEvent=function(){return t||D.apply(this,arguments)};var G=!1,F=null,O=null,B=null,E=mxUtils.bind(this,function(){if(null!=this.toolbar&&G!=f.cellEditor.isContentEditing()){for(var b=this.toolbar.container.firstChild,d=[];null!=b;){var c=b.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,b)&&(b.parentNode.removeChild(b),d.push(b));b=c}b=this.toolbar.fontMenu;c=this.toolbar.sizeMenu;if(null==B)this.toolbar.createTextToolbar();else{for(var g=0;g<B.length;g++)this.toolbar.container.appendChild(B[g]);
+this.toolbar.fontMenu=F;this.toolbar.sizeMenu=O}G=f.cellEditor.isContentEditing();F=b;O=c;B=d}}),H=this,L=f.cellEditor.startEditing;f.cellEditor.startEditing=function(){L.apply(this,arguments);E();if(f.cellEditor.isContentEditing()){var b=!1,d=function(){b||(b=!0,window.setTimeout(function(){var d=f.getSelectedEditingElement();null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=H.toolbar&&(H.toolbar.setFontName(Graph.stripQuotes(d.fontFamily)),H.toolbar.setFontSize(parseInt(d.fontSize))));b=!1},
+0))};mxEvent.addListener(f.cellEditor.textarea,"input",d);mxEvent.addListener(f.cellEditor.textarea,"touchend",d);mxEvent.addListener(f.cellEditor.textarea,"mouseup",d);mxEvent.addListener(f.cellEditor.textarea,"keyup",d);d()}};var N=f.cellEditor.stopEditing;f.cellEditor.stopEditing=function(b,d){try{N.apply(this,arguments),E()}catch(X){H.handleError(X)}};f.container.setAttribute("tabindex","0");f.container.style.cursor="default";if(window.self===window.top&&null!=f.container.parentNode)try{f.container.focus()}catch(R){}var M=
f.fireMouseEvent;f.fireMouseEvent=function(b,d,c){b==mxEvent.MOUSE_DOWN&&this.container.focus();M.apply(this,arguments)};f.popupMenuHandler.autoExpand=!0;null!=this.menus&&(f.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(b,d,c){this.menus.createPopupMenu(b,d,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(b){f.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};f.connectionHandler.addListener(mxEvent.CONNECT,
function(b,d){var c=[d.getProperty("cell")];d.getProperty("terminalInserted")&&(c.push(d.getProperty("terminal")),window.setTimeout(function(){null!=H.hoverIcons&&H.hoverIcons.update(f.view.getState(c[c.length-1]))},0));m(c)});this.addListener("styleChanged",mxUtils.bind(this,function(b,d){var c=d.getProperty("cells"),e=!1,p=!1;if(0<c.length)for(var m=0;m<c.length&&(e=f.getModel().isVertex(c[m])||e,!(p=f.getModel().isEdge(c[m])||p)||!e);m++);else p=e=!0;for(var c=d.getProperty("keys"),x=d.getProperty("values"),
m=0;m<c.length;m++){var u=0<=mxUtils.indexOf(k,c[m]);if("strokeColor"!=c[m]||null!=x[m]&&"none"!=x[m])if(0<=mxUtils.indexOf(q,c[m]))p||0<=mxUtils.indexOf(g,c[m])?null==x[m]?delete f.currentEdgeStyle[c[m]]:f.currentEdgeStyle[c[m]]=x[m]:e&&0<=mxUtils.indexOf(l,c[m])&&(null==x[m]?delete f.currentVertexStyle[c[m]]:f.currentVertexStyle[c[m]]=x[m]);else if(0<=mxUtils.indexOf(l,c[m])){if(e||u)null==x[m]?delete f.currentVertexStyle[c[m]]:f.currentVertexStyle[c[m]]=x[m];if(p||u||0<=mxUtils.indexOf(g,c[m]))null==
@@ -2235,18 +2235,18 @@ Editor.layersImage,mxResources.get("layers")),I=b.getModel();I.addListener(mxEve
"editWindow");mxEvent.consume(d)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var D=this.lightboxToolbarActions[m];D.elem=l(D.fn,D.icon,D.tooltip)}null!=n.refreshBtn&&l(mxUtils.bind(this,function(b){n.refreshBtn.url?window.location.href=n.refreshBtn.url:window.location.reload();mxEvent.consume(b)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=n.fullscreenBtn&&window.self!==window.top&&l(mxUtils.bind(this,
function(d){n.fullscreenBtn.url?b.openLink(n.fullscreenBtn.url):b.openLink(window.location.href);mxEvent.consume(d)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(n.closeBtn&&window.self===window.top||b.lightbox&&("1"==urlParams.close||this.container!=document.body))&&l(mxUtils.bind(this,function(b){"1"==urlParams.close||n.closeBtn?window.close():(this.destroy(),mxEvent.consume(b))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display=
"none";b.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");b.container.appendChild(this.chromelessToolbar);mxEvent.addListener(b.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||(mxEvent.isShiftDown(b)||z(30),t())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(b){mxEvent.consume(b)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",
-mxUtils.bind(this,function(d){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(d)?t():z(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(b){mxEvent.isShiftDown(b)?t():z(100);mxEvent.consume(b)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||z(30)}));var F=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,c){this.startX=
-c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(b,d){},mouseUp:function(d,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<F&&Math.abs(this.scrollTop-b.container.scrollTop)<F&&Math.abs(this.startX-c.getGraphX())<F&&Math.abs(this.startY-c.getGraphY())<F&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?t():z(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var E=
-b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var b=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=b.x-(this.x0||0)*d.width;this.translate.y=b.y-(this.y0||0)*d.height}E.apply(this,arguments)};if(!b.isViewer()){var O=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),c=this.getPagePadding(),g=this.getPageSize(),k=Math.ceil(2*
+mxUtils.bind(this,function(d){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(d)?t():z(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(b){mxEvent.isShiftDown(b)?t():z(100);mxEvent.consume(b)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||z(30)}));var G=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,c){this.startX=
+c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(b,d){},mouseUp:function(d,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<G&&Math.abs(this.scrollTop-b.container.scrollTop)<G&&Math.abs(this.startX-c.getGraphX())<G&&Math.abs(this.startY-c.getGraphY())<G&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?t():z(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var F=
+b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var b=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=b.x-(this.x0||0)*d.width;this.translate.y=b.y-(this.y0||0)*d.height}F.apply(this,arguments)};if(!b.isViewer()){var O=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),c=this.getPagePadding(),g=this.getPageSize(),k=Math.ceil(2*
c.x+d.width*g.width),e=Math.ceil(2*c.y+d.height*g.height),f=b.minimumGraphSize;if(null==f||f.width!=k||f.height!=e)b.minimumGraphSize=new mxRectangle(0,0,k,e);k=c.x-d.x*g.width;c=c.y-d.y*g.height;this.autoTranslate||this.view.translate.x==k&&this.view.translate.y==c?O.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=b.view.translate.x,g=b.view.translate.y,b.view.setTranslate(k,c),b.container.scrollLeft+=Math.round((k-d)*b.view.scale),b.container.scrollTop+=Math.round((c-
-g)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var B=b.view.getBackgroundPane(),G=b.view.getDrawPane();b.cumulativeZoomFactor=1;var H=null,L=null,N=null,M=null,P=null,V=function(d){null!=H&&window.clearTimeout(H);window.setTimeout(function(){if(!b.isMouseDown||M)H=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,
-"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),G.style.transformOrigin="",B.style.transformOrigin="",mxClient.IS_SF?(G.style.transform="scale(1)",B.style.transform="scale(1)",window.setTimeout(function(){G.style.transform="";B.style.transform=""},0)):(G.style.transform="",B.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var d=new mxPoint(b.container.scrollLeft,b.container.scrollTop),
-g=mxUtils.getOffset(b.container),k=b.view.scale,f=0,m=0;null!=L&&(f=b.container.offsetWidth/2-L.x+g.x,m=b.container.offsetHeight/2-L.y+g.y);b.zoom(b.cumulativeZoomFactor,null,20);b.view.scale!=k&&(null!=N&&(f+=d.x-N.x,m+=d.y-N.y),null!=c&&e.chromelessResize(!1,null,f*(b.cumulativeZoomFactor-1),m*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==f&&0==m||(b.container.scrollLeft-=f*(b.cumulativeZoomFactor-1),b.container.scrollTop-=m*(b.cumulativeZoomFactor-1)));null!=P&&G.setAttribute("filter",
-P);b.cumulativeZoomFactor=1;P=M=L=N=H=null}),null!=d?d:b.isFastZoomEnabled()?e.wheelZoomDelay:e.lazyZoomDelay)},0)};b.lazyZoom=function(d,c,g,k){k=null!=k?k:this.zoomFactor;(c=c||!b.scrollbars)&&(L=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));d?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=k,this.cumulativeZoomFactor=Math.round(this.view.scale*
-this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=k,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==P&&""!=G.getAttribute("filter")&&(P=G.getAttribute("filter"),
-G.removeAttribute("filter")),N=new mxPoint(b.container.scrollLeft,b.container.scrollTop),d=c||null==L?b.container.scrollLeft+b.container.clientWidth/2:L.x+b.container.scrollLeft-b.container.offsetLeft,k=c||null==L?b.container.scrollTop+b.container.clientHeight/2:L.y+b.container.scrollTop-b.container.offsetTop,G.style.transformOrigin=d+"px "+k+"px",G.style.transform="scale("+this.cumulativeZoomFactor+")",B.style.transformOrigin=d+"px "+k+"px",B.style.transform="scale("+this.cumulativeZoomFactor+")",
+g)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var B=b.view.getBackgroundPane(),E=b.view.getDrawPane();b.cumulativeZoomFactor=1;var H=null,L=null,N=null,M=null,R=null,W=function(d){null!=H&&window.clearTimeout(H);window.setTimeout(function(){if(!b.isMouseDown||M)H=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,
+"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),E.style.transformOrigin="",B.style.transformOrigin="",mxClient.IS_SF?(E.style.transform="scale(1)",B.style.transform="scale(1)",window.setTimeout(function(){E.style.transform="";B.style.transform=""},0)):(E.style.transform="",B.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var d=new mxPoint(b.container.scrollLeft,b.container.scrollTop),
+g=mxUtils.getOffset(b.container),k=b.view.scale,f=0,m=0;null!=L&&(f=b.container.offsetWidth/2-L.x+g.x,m=b.container.offsetHeight/2-L.y+g.y);b.zoom(b.cumulativeZoomFactor,null,20);b.view.scale!=k&&(null!=N&&(f+=d.x-N.x,m+=d.y-N.y),null!=c&&e.chromelessResize(!1,null,f*(b.cumulativeZoomFactor-1),m*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==f&&0==m||(b.container.scrollLeft-=f*(b.cumulativeZoomFactor-1),b.container.scrollTop-=m*(b.cumulativeZoomFactor-1)));null!=R&&E.setAttribute("filter",
+R);b.cumulativeZoomFactor=1;R=M=L=N=H=null}),null!=d?d:b.isFastZoomEnabled()?e.wheelZoomDelay:e.lazyZoomDelay)},0)};b.lazyZoom=function(d,c,g,k){k=null!=k?k:this.zoomFactor;(c=c||!b.scrollbars)&&(L=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));d?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=k,this.cumulativeZoomFactor=Math.round(this.view.scale*
+this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=k,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==R&&""!=E.getAttribute("filter")&&(R=E.getAttribute("filter"),
+E.removeAttribute("filter")),N=new mxPoint(b.container.scrollLeft,b.container.scrollTop),d=c||null==L?b.container.scrollLeft+b.container.clientWidth/2:L.x+b.container.scrollLeft-b.container.offsetLeft,k=c||null==L?b.container.scrollTop+b.container.clientHeight/2:L.y+b.container.scrollTop-b.container.offsetTop,E.style.transformOrigin=d+"px "+k+"px",E.style.transform="scale("+this.cumulativeZoomFactor+")",B.style.transformOrigin=d+"px "+k+"px",B.style.transform="scale("+this.cumulativeZoomFactor+")",
null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(d=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(d.style,"transform-origin",(c||null==L?b.container.clientWidth/2+b.container.scrollLeft-d.offsetLeft+"px":L.x+b.container.scrollLeft-d.offsetLeft-b.container.offsetLeft+"px")+" "+(c||null==L?b.container.clientHeight/2+b.container.scrollTop-d.offsetTop+"px":L.y+b.container.scrollTop-d.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(d.style,"transform",
-"scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=e.hoverIcons&&e.hoverIcons.reset());V(g)};mxEvent.addGestureListeners(b.container,function(b){null!=H&&window.clearTimeout(H)},null,function(d){1!=b.cumulativeZoomFactor&&V(0)});mxEvent.addListener(b.container,"scroll",function(d){null==H||b.isMouseDown||1==b.cumulativeZoomFactor||V(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,c,g,k,e){b.fireEvent(new mxEventObject("wheel"));
+"scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=e.hoverIcons&&e.hoverIcons.reset());W(g)};mxEvent.addGestureListeners(b.container,function(b){null!=H&&window.clearTimeout(H)},null,function(d){1!=b.cumulativeZoomFactor&&W(0)});mxEvent.addListener(b.container,"scroll",function(d){null==H||b.isMouseDown||1==b.cumulativeZoomFactor||W(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,c,g,k,e){b.fireEvent(new mxEventObject("wheel"));
if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!g&&b.isScrollWheelEvent(d))g=b.view.getTranslate(),k=40/b.view.scale,mxEvent.isShiftDown(d)?b.view.setTranslate(g.x+(c?-k:k),g.y):b.view.setTranslate(g.x,g.y+(c?k:-k));else if(g||b.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==b.container)return b.tooltipHandler.hideTooltip(),L=null!=k&&null!=e?new mxPoint(k,e):new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)),M=g,g=b.zoomFactor,null!=d.deltaY&&40>Math.abs(d.deltaY)&&
Math.round(d.deltaY)!=d.deltaY&&(g=1+Math.abs(d.deltaY)/20*(g-1)),b.lazyZoom(c,null,null,g),mxEvent.consume(d),!1;f=f.parentNode}}),b.container);b.panningHandler.zoomGraph=function(d){b.cumulativeZoomFactor=d.scale;b.lazyZoom(0<d.scale,!0);mxEvent.consume(d)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.isPagesEnabled=function(){return this.editor.editable||"1"!=urlParams["hide-pages"]};EditorUi.prototype.createTemporaryGraph=function(b){return Graph.createOffscreenGraph(b)};EditorUi.prototype.addChromelessClickHandler=function(){var b=urlParams.highlight;null!=b&&0<b.length&&(b="#"+b);this.editor.graph.addClickHandler(b)};
@@ -2361,9 +2361,9 @@ l)*k+g.x)*e,(f.y*c+g.y)*e,k*e,c*e));for(l=1;l<f.height;l++)d.push(new mxRectangl
arguments)};var u=this.graphHandler.getCells;this.graphHandler.getCells=function(b){for(var d=u.apply(this,arguments),c=new mxDictionary,g=[],k=0;k<d.length;k++){var e=this.graph.isTableCell(b)&&this.graph.isTableCell(d[k])&&this.graph.isCellSelected(d[k])?this.graph.model.getParent(d[k]):this.graph.isTableRow(b)&&this.graph.isTableRow(d[k])&&this.graph.isCellSelected(d[k])?d[k]:this.graph.getCompositeParent(d[k]);null==e||c.get(e)||(c.put(e,!0),g.push(e))}return g};var v=this.graphHandler.start;
this.graphHandler.start=function(b,d,c,g){var k=!1;this.graph.isTableCell(b)&&(this.graph.isCellSelected(b)?k=!0:b=this.graph.model.getParent(b));k||this.graph.isTableRow(b)&&this.graph.isCellSelected(b)||(b=this.graph.getCompositeParent(b));v.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(b,d){d=this.graph.getCompositeParent(d);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var t=new mxRubberband(this);this.getRubberband=function(){return t};
var z=(new Date).getTime(),y=0,I=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var b=this.currentState;I.apply(this,arguments);b!=this.currentState?(z=(new Date).getTime(),y=0):y=(new Date).getTime()-z};var D=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(b){return null!=this.currentState&&b.getState()==this.currentState&&2E3<y||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect",
-"1"))&&D.apply(this,arguments)};var F=this.isToggleEvent;this.isToggleEvent=function(b){return F.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b)};var E=t.isForceRubberbandEvent;t.isForceRubberbandEvent=function(b){return E.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==b.getState()&&mxEvent.isTouchEvent(b.getEvent())};var O=null;this.panningHandler.addListener(mxEvent.PAN_START,
+"1"))&&D.apply(this,arguments)};var G=this.isToggleEvent;this.isToggleEvent=function(b){return G.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b)};var F=t.isForceRubberbandEvent;t.isForceRubberbandEvent=function(b){return F.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==b.getState()&&mxEvent.isTouchEvent(b.getEvent())};var O=null;this.panningHandler.addListener(mxEvent.PAN_START,
mxUtils.bind(this,function(){this.isEnabled()&&(O=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=O)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(b){return mxEvent.isMouseEvent(b.getEvent())};var B=this.click;this.click=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);if(this.isEnabled()&&
-!d||b.isConsumed())return B.apply(this,arguments);var c=d?b.sourceState.cell:b.getCell();null!=c&&(c=this.getClickableLinkForCell(c),null!=c&&(this.isCustomLink(c)?this.customLinkClicked(c):this.openLink(c)));this.isEnabled()&&d&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};var G=this.tooltipHandler.show;this.tooltipHandler.show=function(){G.apply(this,arguments);if(null!=this.div)for(var b=this.div.getElementsByTagName("a"),d=0;d<b.length;d++)null!=
+!d||b.isConsumed())return B.apply(this,arguments);var c=d?b.sourceState.cell:b.getCell();null!=c&&(c=this.getClickableLinkForCell(c),null!=c&&(this.isCustomLink(c)?this.customLinkClicked(c):this.openLink(c)));this.isEnabled()&&d&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};var E=this.tooltipHandler.show;this.tooltipHandler.show=function(){E.apply(this,arguments);if(null!=this.div)for(var b=this.div.getElementsByTagName("a"),d=0;d<b.length;d++)null!=
b[d].getAttribute("href")&&null==b[d].getAttribute("target")&&b[d].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};this.getCursorForMouseEvent=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);return this.getCursorForCell(d?b.sourceState.cell:b.getCell())};var H=this.getCursorForCell;this.getCursorForCell=function(b){if(!this.isEnabled()||this.isCellLocked(b)){if(null!=this.getClickableLinkForCell(b))return"pointer";
if(this.isCellLocked(b))return"default"}return H.apply(this,arguments)};this.selectRegion=function(b,d){var c=mxEvent.isAltDown(d)?b:null,c=this.getCells(b.x,b.y,b.width,b.height,null,null,c,function(b){return"1"==mxUtils.getValue(b.style,"locked","0")},!0);if(this.isToggleEvent(d))for(var g=0;g<c.length;g++)this.selectCellForEvent(c[g],d);else this.selectCellsForEvent(c,d);return c};var L=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(b,d,c){return this.graph.isCellSelected(b)?
!1:L.apply(this,arguments)};this.isCellLocked=function(b){for(;null!=b;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(b),"locked","0"))return!0;b=this.model.getParent(b)}return!1};var N=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,d){if("mouseDown"==d.getProperty("eventName")){var c=d.getProperty("event").getState();N=null==c||this.isSelectionEmpty()||this.isCellSelected(c.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,
@@ -2453,10 +2453,10 @@ Graph.prototype.isCloneConnectSource=function(b){var c=null;null!=this.layoutMan
Graph.prototype.connectVertex=function(b,c,e,f,n,l,q,d){l=l?l:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var k=this.isCloneConnectSource(b),g=k?b:this.getCompositeParent(b),p=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(g.geometry.x,g.geometry.y);c==mxConstants.DIRECTION_NORTH?(p.x+=g.geometry.width/2,p.y-=e):c==
mxConstants.DIRECTION_SOUTH?(p.x+=g.geometry.width/2,p.y+=g.geometry.height+e):(p.x=c==mxConstants.DIRECTION_WEST?p.x-e:p.x+(g.geometry.width+e),p.y+=g.geometry.height/2);var m=this.view.getState(this.model.getParent(b));e=this.view.scale;var u=this.view.translate,g=u.x*e,u=u.y*e;null!=m&&this.model.isVertex(m.cell)&&(g=m.x,u=m.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(p.x+=b.parent.geometry.x,p.y+=b.parent.geometry.y);l=l?null:(new mxRectangle(g+p.x*e,u+p.y*e)).grow(40*e);l=null!=l?
this.getCells(0,0,0,0,null,null,l,null,!0):null;var m=this.view.getState(b),v=null,t=null;if(null!=l){l=l.reverse();for(var z=0;z<l.length;z++)if(!this.isCellLocked(l[z])&&!this.model.isEdge(l[z])&&l[z]!=b)if(!this.model.isAncestor(b,l[z])&&this.isContainer(l[z])&&(null==v||l[z]==this.model.getParent(b)))v=l[z];else if(null==t&&this.isCellConnectable(l[z])&&!this.model.isAncestor(l[z],b)&&!this.isSwimlane(l[z])){var y=this.view.getState(l[z]);null==m||null==y||mxUtils.intersects(m,y)||(t=l[z])}}var I=
-!mxEvent.isShiftDown(f)||mxEvent.isControlDown(f)||n;I&&("1"!=urlParams.sketch||n)&&(c==mxConstants.DIRECTION_NORTH?p.y-=b.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=b.geometry.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-b.geometry.width/2:p.x+b.geometry.width/2);var D=[],F=t,t=v;n=mxUtils.bind(this,function(g){if(null==q||null!=g||null==t&&k){this.model.beginUpdate();try{if(null==F&&I){var e=this.getAbsoluteParent(null!=g?g:b),e=k?b:this.getCompositeParent(e);F=null!=g?g:this.duplicateCells([e],
-!1)[0];null!=g&&this.addCells([F],this.model.getParent(b),null,null,null,!0);var l=this.getCellGeometry(F);null!=l&&(null!=g&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?p.y-=l.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=l.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-l.width/2:p.x+l.width/2),l.x=p.x-l.width/2,l.y=p.y-l.height/2);null!=v?(this.addCells([F],v,null,null,null,!0),t=null):I&&!k&&this.addCells([F],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(f)&&
-mxEvent.isShiftDown(f)&&I||null==t&&k?null:this.insertEdge(this.model.getParent(b),null,"",b,F,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var u=null;for(g=b;null!=g.parent&&null!=g.geometry&&g.geometry.relative&&g.parent!=m.parent;)g=this.model.getParent(g);null!=g&&null!=g.parent&&g.parent==m.parent&&(u=g.parent.getIndex(g),this.model.add(g.parent,m,u))}null==t&&null!=F&&null!=b.parent&&k&&c==mxConstants.DIRECTION_WEST&&(u=b.parent.getIndex(b),this.model.add(b.parent,
-F,u));null!=m&&D.push(m);null==t&&null!=F&&D.push(F);null==F&&null!=m&&m.geometry.setTerminalPoint(p,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=d)d(D);else return D});if(null==q||null!=F||!I||null==t&&k)return n(F);q(g+p.x*e,u+p.y*e,n)};
+!mxEvent.isShiftDown(f)||mxEvent.isControlDown(f)||n;I&&("1"!=urlParams.sketch||n)&&(c==mxConstants.DIRECTION_NORTH?p.y-=b.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=b.geometry.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-b.geometry.width/2:p.x+b.geometry.width/2);var D=[],G=t,t=v;n=mxUtils.bind(this,function(g){if(null==q||null!=g||null==t&&k){this.model.beginUpdate();try{if(null==G&&I){var e=this.getAbsoluteParent(null!=g?g:b),e=k?b:this.getCompositeParent(e);G=null!=g?g:this.duplicateCells([e],
+!1)[0];null!=g&&this.addCells([G],this.model.getParent(b),null,null,null,!0);var l=this.getCellGeometry(G);null!=l&&(null!=g&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?p.y-=l.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=l.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-l.width/2:p.x+l.width/2),l.x=p.x-l.width/2,l.y=p.y-l.height/2);null!=v?(this.addCells([G],v,null,null,null,!0),t=null):I&&!k&&this.addCells([G],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(f)&&
+mxEvent.isShiftDown(f)&&I||null==t&&k?null:this.insertEdge(this.model.getParent(b),null,"",b,G,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var u=null;for(g=b;null!=g.parent&&null!=g.geometry&&g.geometry.relative&&g.parent!=m.parent;)g=this.model.getParent(g);null!=g&&null!=g.parent&&g.parent==m.parent&&(u=g.parent.getIndex(g),this.model.add(g.parent,m,u))}null==t&&null!=G&&null!=b.parent&&k&&c==mxConstants.DIRECTION_WEST&&(u=b.parent.getIndex(b),this.model.add(b.parent,
+G,u));null!=m&&D.push(m);null==t&&null!=G&&D.push(G);null==G&&null!=m&&m.geometry.setTerminalPoint(p,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=d)d(D);else return D});if(null==q||null!=G||!I||null==t&&k)return n(G);q(g+p.x*e,u+p.y*e,n)};
Graph.prototype.getIndexableText=function(){var b=document.createElement("div"),c=[],e,f;for(f in this.model.cells)if(e=this.model.cells[f],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(b.innerHTML=this.sanitizeHtml(this.getLabel(e)),e=mxUtils.extractTextWithWhitespace([b])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&c.push(e);return c.join(" ")};
Graph.prototype.convertValueToString=function(b){var c=this.model.getValue(b);if(null!=c&&"object"==typeof c){var e=null;if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var c=b.getAttribute("placeholder"),f=b;null==e&&null!=f;)null!=f.value&&"object"==typeof f.value&&(e=f.hasAttribute(c)?null!=f.getAttribute(c)?f.getAttribute(c):"":null),f=this.model.getParent(f);else e=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(e=c.getAttribute("label_"+Graph.diagramLanguage)),
null==e&&(e=c.getAttribute("label")||"");return e||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(b){return null!=b&&null!=b.text&&null!=b.text.node?b.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(b){return null!=b.value&&"object"==typeof b.value?(b=b.value.getAttribute("link"),null!=b&&"javascript:"===b.toLowerCase().substring(0,11)&&(b=b.substring(11)),b):null};
@@ -2540,12 +2540,12 @@ Graph.minTableColumnWidth&&(e=e.clone(),e.width=d+c.width+c.x+Graph.minTableColu
arguments);null!=g&&d&&this.graph.model.isEdge(g.cell)&&null!=g.style&&1!=g.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(g);return g};var e=mxShape.prototype.paint;mxShape.prototype.paint=function(){e.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var b=this.node.getElementsByTagName("path");if(1<b.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&b[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var d=this.state.view.graph.getFlowAnimationStyle();null!=d&&b[1].setAttribute("class",d.getAttribute("id"))}}};var f=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(b,d){return f.apply(this,arguments)||null!=b.routedPoints&&null!=d.routedPoints&&!mxUtils.equalPoints(d.routedPoints,b.routedPoints)};var n=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
function(b){n.apply(this,arguments);this.graph.model.isEdge(b.cell)&&1!=b.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(b)};mxGraphView.prototype.updateLineJumps=function(b){var d=b.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=b.routedPoints,g=null;if(null!=d&&null!=this.validEdges&&"none"!==mxUtils.getValue(b.style,"jumpStyle","none")){for(var e=function(d,c,e){var k=new mxPoint(c,e);k.type=d;g.push(k);k=null!=b.routedPoints?b.routedPoints[g.length-1]:null;return null==k||k.type!=
-d||k.x!=c||k.y!=e},k=.5*this.scale,c=!1,g=[],f=0;f<d.length-1;f++){for(var l=d[f+1],p=d[f],n=[],q=d[f+2];f<d.length-2&&mxUtils.ptSegDistSq(p.x,p.y,q.x,q.y,l.x,l.y)<1*this.scale*this.scale;)l=q,f++,q=d[f+2];for(var c=e(0,p.x,p.y)||c,O=0;O<this.validEdges.length;O++){var B=this.validEdges[O],G=B.absolutePoints;if(null!=G&&mxUtils.intersects(b,B)&&"1"!=B.style.noJump)for(B=0;B<G.length-1;B++){for(var H=G[B+1],L=G[B],q=G[B+2];B<G.length-2&&mxUtils.ptSegDistSq(L.x,L.y,q.x,q.y,H.x,H.y)<1*this.scale*this.scale;)H=
-q,B++,q=G[B+2];q=mxUtils.intersection(p.x,p.y,l.x,l.y,L.x,L.y,H.x,H.y);if(null!=q&&(Math.abs(q.x-p.x)>k||Math.abs(q.y-p.y)>k)&&(Math.abs(q.x-l.x)>k||Math.abs(q.y-l.y)>k)&&(Math.abs(q.x-L.x)>k||Math.abs(q.y-L.y)>k)&&(Math.abs(q.x-H.x)>k||Math.abs(q.y-H.y)>k)){H=q.x-p.x;L=q.y-p.y;q={distSq:H*H+L*L,x:q.x,y:q.y};for(H=0;H<n.length;H++)if(n[H].distSq>q.distSq){n.splice(H,0,q);q=null;break}null==q||0!=n.length&&n[n.length-1].x===q.x&&n[n.length-1].y===q.y||n.push(q)}}}for(B=0;B<n.length;B++)c=e(1,n[B].x,
+d||k.x!=c||k.y!=e},k=.5*this.scale,c=!1,g=[],f=0;f<d.length-1;f++){for(var l=d[f+1],p=d[f],n=[],q=d[f+2];f<d.length-2&&mxUtils.ptSegDistSq(p.x,p.y,q.x,q.y,l.x,l.y)<1*this.scale*this.scale;)l=q,f++,q=d[f+2];for(var c=e(0,p.x,p.y)||c,O=0;O<this.validEdges.length;O++){var B=this.validEdges[O],E=B.absolutePoints;if(null!=E&&mxUtils.intersects(b,B)&&"1"!=B.style.noJump)for(B=0;B<E.length-1;B++){for(var H=E[B+1],L=E[B],q=E[B+2];B<E.length-2&&mxUtils.ptSegDistSq(L.x,L.y,q.x,q.y,H.x,H.y)<1*this.scale*this.scale;)H=
+q,B++,q=E[B+2];q=mxUtils.intersection(p.x,p.y,l.x,l.y,L.x,L.y,H.x,H.y);if(null!=q&&(Math.abs(q.x-p.x)>k||Math.abs(q.y-p.y)>k)&&(Math.abs(q.x-l.x)>k||Math.abs(q.y-l.y)>k)&&(Math.abs(q.x-L.x)>k||Math.abs(q.y-L.y)>k)&&(Math.abs(q.x-H.x)>k||Math.abs(q.y-H.y)>k)){H=q.x-p.x;L=q.y-p.y;q={distSq:H*H+L*L,x:q.x,y:q.y};for(H=0;H<n.length;H++)if(n[H].distSq>q.distSq){n.splice(H,0,q);q=null;break}null==q||0!=n.length&&n[n.length-1].x===q.x&&n[n.length-1].y===q.y||n.push(q)}}}for(B=0;B<n.length;B++)c=e(1,n[B].x,
n[B].y)||c}q=d[d.length-1];c=e(0,q.x,q.y)||c}b.routedPoints=g;return c}return!1};var l=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(b,d,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 g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,
-"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,k=mxUtils.getValue(this.style,"jumpStyle","none"),f=!0,m=null,p=null,u=[],n=null;b.begin();for(var q=0;q<this.state.routedPoints.length;q++){var B=this.state.routedPoints[q],G=new mxPoint(B.x/this.scale,B.y/this.scale);0==q?G=d[0]:q==this.state.routedPoints.length-1&&(G=d[d.length-1]);var H=!1;if(null!=m&&1==B.type){var L=this.state.routedPoints[q+1],B=L.x/this.scale-G.x,L=L.y/this.scale-G.y,B=B*B+L*L;null==n&&(n=new mxPoint(G.x-m.x,G.y-m.y),
-p=Math.sqrt(n.x*n.x+n.y*n.y),0<p?(n.x=n.x*e/p,n.y=n.y*e/p):n=null);B>e*e&&0<p&&(B=m.x-G.x,L=m.y-G.y,B=B*B+L*L,B>e*e&&(H=new mxPoint(G.x-n.x,G.y-n.y),B=new mxPoint(G.x+n.x,G.y+n.y),u.push(H),this.addPoints(b,u,c,g,!1,null,f),u=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,f=!1,"sharp"==k?(b.lineTo(H.x-n.y*u,H.y+n.x*u),b.lineTo(B.x-n.y*u,B.y+n.x*u),b.lineTo(B.x,B.y)):"line"==k?(b.moveTo(H.x+n.y*u,H.y-n.x*u),b.lineTo(H.x-n.y*u,H.y+n.x*u),b.moveTo(B.x-n.y*u,B.y+n.x*u),b.lineTo(B.x+n.y*
-u,B.y-n.x*u),b.moveTo(B.x,B.y)):"arc"==k?(u*=1.3,b.curveTo(H.x-n.y*u,H.y+n.x*u,B.x-n.y*u,B.y+n.x*u,B.x,B.y)):(b.moveTo(B.x,B.y),f=!0),u=[B],H=!0))}else n=null;H||(u.push(G),m=G)}this.addPoints(b,u,c,g,!1,null,f);b.stroke()}};var q=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(b,d,c,g){return null!=d&&"centerPerimeter"==d.style[mxConstants.STYLE_PERIMETER]?new mxPoint(d.getCenterX(),d.getCenterY()):q.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;
+"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,k=mxUtils.getValue(this.style,"jumpStyle","none"),f=!0,m=null,p=null,u=[],n=null;b.begin();for(var q=0;q<this.state.routedPoints.length;q++){var B=this.state.routedPoints[q],E=new mxPoint(B.x/this.scale,B.y/this.scale);0==q?E=d[0]:q==this.state.routedPoints.length-1&&(E=d[d.length-1]);var H=!1;if(null!=m&&1==B.type){var L=this.state.routedPoints[q+1],B=L.x/this.scale-E.x,L=L.y/this.scale-E.y,B=B*B+L*L;null==n&&(n=new mxPoint(E.x-m.x,E.y-m.y),
+p=Math.sqrt(n.x*n.x+n.y*n.y),0<p?(n.x=n.x*e/p,n.y=n.y*e/p):n=null);B>e*e&&0<p&&(B=m.x-E.x,L=m.y-E.y,B=B*B+L*L,B>e*e&&(H=new mxPoint(E.x-n.x,E.y-n.y),B=new mxPoint(E.x+n.x,E.y+n.y),u.push(H),this.addPoints(b,u,c,g,!1,null,f),u=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,f=!1,"sharp"==k?(b.lineTo(H.x-n.y*u,H.y+n.x*u),b.lineTo(B.x-n.y*u,B.y+n.x*u),b.lineTo(B.x,B.y)):"line"==k?(b.moveTo(H.x+n.y*u,H.y-n.x*u),b.lineTo(H.x-n.y*u,H.y+n.x*u),b.moveTo(B.x-n.y*u,B.y+n.x*u),b.lineTo(B.x+n.y*
+u,B.y-n.x*u),b.moveTo(B.x,B.y)):"arc"==k?(u*=1.3,b.curveTo(H.x-n.y*u,H.y+n.x*u,B.x-n.y*u,B.y+n.x*u,B.x,B.y)):(b.moveTo(B.x,B.y),f=!0),u=[B],H=!0))}else n=null;H||(u.push(E),m=E)}this.addPoints(b,u,c,g,!1,null,f);b.stroke()}};var q=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(b,d,c,g){return null!=d&&"centerPerimeter"==d.style[mxConstants.STYLE_PERIMETER]?new mxPoint(d.getCenterX(),d.getCenterY()):q.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;
mxGraphView.prototype.updateFloatingTerminalPoint=function(b,c,g,e){if(null==c||null==b||"1"!=c.style.snapToPoint&&"1"!=b.style.snapToPoint)d.apply(this,arguments);else{c=this.getTerminalPort(b,c,e);var k=this.getNextPoint(b,g,e),f=this.graph.isOrthogonal(b),l=mxUtils.toRadians(Number(c.style[mxConstants.STYLE_ROTATION]||"0")),m=new mxPoint(c.getCenterX(),c.getCenterY());if(0!=l)var p=Math.cos(-l),u=Math.sin(-l),k=mxUtils.getRotatedPoint(k,p,u,m);p=parseFloat(b.style[mxConstants.STYLE_PERIMETER_SPACING]||
0);p+=parseFloat(b.style[e?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);k=this.getPerimeterPoint(c,k,0==l&&f,p);0!=l&&(p=Math.cos(l),u=Math.sin(l),k=mxUtils.getRotatedPoint(k,p,u,m));b.setAbsoluteTerminalPoint(this.snapToAnchorPoint(b,c,g,e,k),e)}};mxGraphView.prototype.snapToAnchorPoint=function(b,d,c,g,e){if(null!=d&&null!=b){b=this.graph.getAllConnectionConstraints(d);g=c=null;if(null!=b)for(var k=0;k<b.length;k++){var f=this.graph.getConnectionPoint(d,
b[k]);if(null!=f){var l=(f.x-e.x)*(f.x-e.x)+(f.y-e.y)*(f.y-e.y);if(null==g||l<g)c=f,g=l}}null!=c&&(e=c)}return e};var k=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(b,d,c){var g=k.apply(this,arguments);"1"==b.getAttribute("placeholders")&&null!=c.state&&(g=c.state.view.graph.replacePlaceholders(c.state.cell,g));return g};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(b){if(null!=b.style&&"undefined"!==typeof pako){var d=
@@ -2578,7 +2578,7 @@ else{var e=this.getSelectionCell(),k=null,f=[],l=mxUtils.bind(this,function(d){i
if(null!=d&&1==b.length){var g=this.view.getState(d),e=this.view.getState(b[0]);if(null!=g&&null!=e&&"umlLifeline"==g.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(d),g=this.getCellGeometry(b[0]),null!=e&&null!=g)){c=e.clone();e=g.clone();e.x=c.x;e.y=c.y;c.x=g.x;c.y=g.y;this.model.beginUpdate();try{this.model.setGeometry(d,c),this.model.setGeometry(b[0],e)}finally{this.model.endUpdate()}c=!0}}return c};var p=Graph.prototype.moveCells;Graph.prototype.moveCells=function(b,d,c,g,
e,k,f){if(!g&&this.swapUmlLifelines(b,e))return b;f=null!=f?f:{};if(this.isTable(e)){for(var l=[],m=0;m<b.length;m++)this.isTable(b[m])?l=l.concat(this.model.getChildCells(b[m],!0).reverse()):l.push(b[m]);b=l}this.model.beginUpdate();try{l=[];for(m=0;m<b.length;m++)if(null!=e&&this.isTableRow(b[m])){var x=this.model.getParent(b[m]),u=this.getCellGeometry(b[m]);this.isTable(x)&&l.push(x);if(null!=x&&null!=u&&this.isTable(x)&&this.isTable(e)&&(g||x!=e)){if(!g){var n=this.getCellGeometry(x);null!=n&&
(n=n.clone(),n.height-=u.height,this.model.setGeometry(x,n))}n=this.getCellGeometry(e);null!=n&&(n=n.clone(),n.height+=u.height,this.model.setGeometry(e,n));var Z=this.model.getChildCells(e,!0);if(0<Z.length){b[m]=g?this.cloneCell(b[m]):b[m];var t=this.model.getChildCells(b[m],!0),v=this.model.getChildCells(Z[0],!0),y=v.length-t.length;if(0<y)for(var C=0;C<y;C++){var z=this.cloneCell(t[t.length-1]);null!=z&&(z.value="",this.model.add(b[m],z))}else if(0>y)for(C=0;C>y;C--)this.model.remove(t[t.length+
-C-1]);t=this.model.getChildCells(b[m],!0);for(C=0;C<v.length;C++){var J=this.getCellGeometry(v[C]),la=this.getCellGeometry(t[C]);null!=J&&null!=la&&(la=la.clone(),la.width=J.width,this.model.setGeometry(t[C],la))}}}}for(var q=p.apply(this,arguments),m=0;m<l.length;m++)!g&&this.model.contains(l[m])&&0==this.model.getChildCount(l[m])&&this.model.remove(l[m]);g&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(b)),q)}finally{this.model.endUpdate()}return q};var m=Graph.prototype.removeCells;
+C-1]);t=this.model.getChildCells(b[m],!0);for(C=0;C<v.length;C++){var J=this.getCellGeometry(v[C]),ka=this.getCellGeometry(t[C]);null!=J&&null!=ka&&(ka=ka.clone(),ka.width=J.width,this.model.setGeometry(t[C],ka))}}}}for(var q=p.apply(this,arguments),m=0;m<l.length;m++)!g&&this.model.contains(l[m])&&0==this.model.getChildCount(l[m])&&this.model.remove(l[m]);g&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(b)),q)}finally{this.model.endUpdate()}return q};var m=Graph.prototype.removeCells;
Graph.prototype.removeCells=function(b,d){var c=[];this.model.beginUpdate();try{for(var g=0;g<b.length;g++)if(this.isTableCell(b[g])){var e=this.model.getParent(b[g]),k=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(k)?0>mxUtils.indexOf(b,k)&&0>mxUtils.indexOf(c,k)&&c.push(k):this.labelChanged(b[g],"")}else{if(this.isTableRow(b[g])&&(k=this.model.getParent(b[g]),0>mxUtils.indexOf(b,k)&&0>mxUtils.indexOf(c,k))){for(var f=this.model.getChildCells(k,!0),l=0,p=0;p<
f.length;p++)0<=mxUtils.indexOf(b,f[p])&&l++;l==f.length&&c.push(k)}c.push(b[g])}c=m.apply(this,[c,d])}finally{this.model.endUpdate()}return c};Graph.prototype.updateCustomLinks=function(b,d,c){c=null!=c?c:new Graph;for(var g=0;g<d.length;g++)null!=d[g]&&c.updateCustomLinksForCell(b,d[g],c)};Graph.prototype.updateCustomLinksForCell=function(b,d){this.doUpdateCustomLinksForCell(b,d);for(var c=this.model.getChildCount(d),g=0;g<c;g++)this.updateCustomLinksForCell(b,this.model.getChildAt(d,g))};Graph.prototype.doUpdateCustomLinksForCell=
function(b,d){};Graph.prototype.getAllConnectionConstraints=function(b,d){if(null!=b){var c=mxUtils.getValue(b.style,"points",null);if(null!=c){var g=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var k=e[c];g.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(aa){}return g}if(null!=b.shape&&null!=b.shape.bounds){k=b.shape.direction;e=b.shape.bounds;c=b.shape.scale;g=e.width/c;e=e.height/c;if(k==mxConstants.DIRECTION_NORTH||
@@ -2622,9 +2622,9 @@ function(){var b=new mxImageExport;b.getLinkForCellState=mxUtils.bind(this,funct
!1,this.view.revalidate(),this.sizeDidChange();try{d=null!=d?d:1;c=null!=c?c:0;e=null!=e?e:!0;k=null!=k?k:!0;f=null!=f?f:!0;p=null!=p?p:!1;var y="page"==n?this.view.getBackgroundPageBounds():k&&null==v||g||"diagram"==n?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),C=this.view.scale;"diagram"==n&&null!=this.backgroundImage&&(y=mxRectangle.fromRectangle(y),y.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*C,(this.view.translate.y+this.backgroundImage.y)*C,this.backgroundImage.width*
C,this.backgroundImage.height*C)));if(null==y)throw Error(mxResources.get("drawingEmpty"));var z=mxUtils.createXmlDocument(),J=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"svg"):z.createElement("svg");null!=b&&(null!=J.style?J.style.backgroundColor=b:J.setAttribute("style","background-color:"+b));null==z.createElementNS?(J.setAttribute("xmlns",mxConstants.NS_SVG),J.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):J.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);
b=d/C;var q=Math.max(1,Math.ceil(y.width*b)+2*c)+(p&&0==c?5:0),Z=Math.max(1,Math.ceil(y.height*b)+2*c)+(p&&0==c?5:0);J.setAttribute("version","1.1");J.setAttribute("width",q+"px");J.setAttribute("height",Z+"px");J.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+Z);z.appendChild(J);var K=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"g"):z.createElement("g");J.appendChild(K);var B=this.createSvgCanvas(K);B.foOffset=e?-.5:0;B.textOffset=e?-.5:0;B.imageOffset=e?-.5:0;B.translate(Math.floor(c/
-d-y.x/C),Math.floor(c/d-y.y/C));var M=document.createElement("div"),ca=B.getAlternateText;B.getAlternateText=function(b,d,c,g,e,k,f,l,m,p,x,u,n){if(null!=k&&0<this.state.fontSize)try{mxUtils.isNode(k)?k=k.innerText:(M.innerHTML=k,k=mxUtils.extractTextWithWhitespace(M.childNodes));for(var t=Math.ceil(2*g/this.state.fontSize),v=[],A=0,va=0;(0==t||A<t)&&va<k.length;){var Ua=k.charCodeAt(va);if(10==Ua||13==Ua){if(0<A)break}else v.push(k.charAt(va)),255>Ua&&A++;va++}v.length<k.length&&1<k.length-v.length&&
-(k=mxUtils.trim(v.join(""))+"...");return k}catch(Ja){return ca.apply(this,arguments)}else return ca.apply(this,arguments)};var X=this.backgroundImage;if(null!=X){d=C/d;var ka=this.view.translate,la=new mxRectangle((X.x+ka.x)*d,(X.y+ka.y)*d,X.width*d,X.height*d);mxUtils.intersects(y,la)&&B.image(X.x+ka.x,X.y+ka.y,X.width,X.height,X.src,!0)}B.scale(b);B.textEnabled=f;l=null!=l?l:this.createSvgImageExport();var G=l.drawCellState,P=l.getLinkForCellState;l.getLinkForCellState=function(b,d){var c=P.apply(this,
-arguments);return null==c||b.view.graph.isCustomLink(c)?null:c};l.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};l.drawCellState=function(b,d){for(var c=b.view.graph,g=null!=v?v.get(b.cell):c.isCellSelected(b.cell),e=c.model.getParent(b.cell);!(k&&null==v||g)&&null!=e;)g=null!=v?v.get(e):c.isCellSelected(e),e=c.model.getParent(e);(k&&null==v||g)&&G.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),B);this.updateSvgLinks(J,m,!0);
+d-y.x/C),Math.floor(c/d-y.y/C));var M=document.createElement("div"),ea=B.getAlternateText;B.getAlternateText=function(b,d,c,g,e,k,f,l,m,p,x,u,n){if(null!=k&&0<this.state.fontSize)try{mxUtils.isNode(k)?k=k.innerText:(M.innerHTML=k,k=mxUtils.extractTextWithWhitespace(M.childNodes));for(var t=Math.ceil(2*g/this.state.fontSize),v=[],A=0,va=0;(0==t||A<t)&&va<k.length;){var Ua=k.charCodeAt(va);if(10==Ua||13==Ua){if(0<A)break}else v.push(k.charAt(va)),255>Ua&&A++;va++}v.length<k.length&&1<k.length-v.length&&
+(k=mxUtils.trim(v.join(""))+"...");return k}catch(Ja){return ea.apply(this,arguments)}else return ea.apply(this,arguments)};var V=this.backgroundImage;if(null!=V){d=C/d;var ja=this.view.translate,ka=new mxRectangle((V.x+ja.x)*d,(V.y+ja.y)*d,V.width*d,V.height*d);mxUtils.intersects(y,ka)&&B.image(V.x+ja.x,V.y+ja.y,V.width,V.height,V.src,!0)}B.scale(b);B.textEnabled=f;l=null!=l?l:this.createSvgImageExport();var E=l.drawCellState,R=l.getLinkForCellState;l.getLinkForCellState=function(b,d){var c=R.apply(this,
+arguments);return null==c||b.view.graph.isCustomLink(c)?null:c};l.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};l.drawCellState=function(b,d){for(var c=b.view.graph,g=null!=v?v.get(b.cell):c.isCellSelected(b.cell),e=c.model.getParent(b.cell);!(k&&null==v||g)&&null!=e;)g=null!=v?v.get(e):c.isCellSelected(e),e=c.model.getParent(e);(k&&null==v||g)&&E.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),B);this.updateSvgLinks(J,m,!0);
this.addForeignObjectWarning(B,J);return J}finally{t&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(b,d){if("0"!=urlParams["svg-warning"]&&0<d.getElementsByTagName("foreignObject").length){var c=b.createElement("switch"),g=b.createElement("g");g.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=b.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
d.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var k=b.createElement("text");k.setAttribute("text-anchor","middle");k.setAttribute("font-size","10px");k.setAttribute("x","50%");k.setAttribute("y","100%");mxUtils.write(k,Graph.foreignObjectWarningText);c.appendChild(g);
e.appendChild(k);c.appendChild(e);d.appendChild(c)}};Graph.prototype.updateSvgLinks=function(b,d,c){b=b.getElementsByTagName("a");for(var g=0;g<b.length;g++)if(null==b[g].getAttribute("target")){var e=b[g].getAttribute("href");null==e&&(e=b[g].getAttribute("xlink:href"));null!=e&&(null!=d&&/^https?:\/\//.test(e)?b[g].setAttribute("target",d):c&&this.isCustomLink(e)&&b[g].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(b){b=new mxSvgCanvas2D(b);b.pointerEvents=
@@ -2666,32 +2666,32 @@ this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;thi
mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(b.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=g.x*this.bounds.width;this.bounds.y+=g.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-
this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+
c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",D.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(b,d){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(b.cell,d);"1"==mxUtils.getValue(b.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};mxCellEditorGetCurrentValue=
-mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d="1"==mxUtils.getValue(b.style,"nl2Br","1")?d.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var F=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(b){this.codeViewMode&&this.toggleViewMode();
-F.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(Z){}};var E=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(b,d){this.graph.getModel().beginUpdate();try{E.apply(this,arguments),""==d&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)&&this.graph.isTransparentState(b)&&this.graph.removeCells([b.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=
+mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d="1"==mxUtils.getValue(b.style,"nl2Br","1")?d.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var G=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(b){this.codeViewMode&&this.toggleViewMode();
+G.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(Z){}};var F=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(b,d){this.graph.getModel().beginUpdate();try{F.apply(this,arguments),""==d&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)&&this.graph.isTransparentState(b)&&this.graph.removeCells([b.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=
function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getBorderColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BORDERCOLOR,
null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_STROKECOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getMinimumSize=function(b){var d=this.graph.getView().scale;return new mxRectangle(0,0,null==b.text?30:b.text.size*d+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;
mxGraphHandler.prototype.isValidDropTarget=function(b,d){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(d.getEvent)};mxGraphView.prototype.formatUnitText=function(b){return b?c(b,this.unit):b};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var g=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+
this.currentDx)/e-g.x);g=this.roundLength((this.bounds.y+this.currentDy)/e-g.y);e=this.graph.view.unit;this.hint.innerHTML=c(d,e)+", "+c(g,e);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var O=mxStackLayout.prototype.resizeCell;
mxStackLayout.prototype.resizeCell=function(b,d){O.apply(this,arguments);var c=this.graph.getCellStyle(b);if(null==c.childLayout){var g=this.graph.model.getParent(b),e=null!=g?this.graph.getCellGeometry(g):null;if(null!=e&&(c=this.graph.getCellStyle(g),"stackLayout"==c.childLayout)){var k=parseFloat(mxUtils.getValue(c,"stackBorder",mxStackLayout.prototype.border)),c="1"==mxUtils.getValue(c,"horizontalStack","1"),f=this.graph.getActualStartSize(g),e=e.clone();c?e.height=d.height+f.y+f.height+2*k:e.width=
-d.width+f.x+f.width+2*k;this.graph.model.setGeometry(g,e)}}};var B=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){c.get(b)||(c.put(b,!0),e.push(b))}for(var d=B.apply(this,arguments),c=new mxDictionary,g=this.graph.model,e=[],k=0;k<d.length;k++){var f=d[k];this.graph.isTableCell(f)?b(g.getParent(g.getParent(f))):this.graph.isTableRow(f)&&b(g.getParent(f));b(f)}return e};var G=mxVertexHandler.prototype.createParentHighlightShape;
-mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=G.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var H=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(b){var d=H.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var b=this.getHandlePadding();return new mxPoint(this.bounds.x+
+d.width+f.x+f.width+2*k;this.graph.model.setGeometry(g,e)}}};var B=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){c.get(b)||(c.put(b,!0),e.push(b))}for(var d=B.apply(this,arguments),c=new mxDictionary,g=this.graph.model,e=[],k=0;k<d.length;k++){var f=d[k];this.graph.isTableCell(f)?b(g.getParent(g.getParent(f))):this.graph.isTableRow(f)&&b(g.getParent(f));b(f)}return e};var E=mxVertexHandler.prototype.createParentHighlightShape;
+mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=E.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var H=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(b){var d=H.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var b=this.getHandlePadding();return new mxPoint(this.bounds.x+
this.bounds.width-this.rotationHandleVSpacing+b.x/2,this.bounds.y+this.rotationHandleVSpacing-b.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(b,d){return this.graph.isRecursiveVertexResize(b)&&!mxEvent.isControlDown(d.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(b,d){return!(!this.graph.isSwimlane(b.cell)&&0<this.graph.model.getChildCount(b.cell)&&!this.graph.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,
"childLayout",null))&&mxEvent.isControlDown(d.getEvent())||mxEvent.isMetaDown(d.getEvent())};var L=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return L.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):
this.bounds};var N=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return N.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var M=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(b){return b.tableHandle||M.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
-function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var P=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return P.apply(this,arguments).grow(-this.getSelectionBorderInset())};var V=null,W=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==V&&(V=mxCellRenderer.defaultShapes.tableLine);var b=W.apply(this,arguments);
+function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var R=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return R.apply(this,arguments).grow(-this.getSelectionBorderInset())};var W=null,X=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==W&&(W=mxCellRenderer.defaultShapes.tableLine);var b=X.apply(this,arguments);
if(this.graph.isTable(this.state.cell)){var d=function(b,d,c){for(var g=[],e=0;e<b.length;e++){var f=b[e];g.push(null==f?null:new mxPoint((m+f.x+d)*k,(p+f.y+c)*k))}return g},c=this,g=this.graph,e=g.model,k=g.view.scale,f=this.state,l=this.selectionBorder,m=this.state.origin.x+g.view.translate.x,p=this.state.origin.y+g.view.translate.y;null==b&&(b=[]);var x=g.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<x.length){for(var u=e.getChildCells(x[0].cell,!0),n=g.getTableLines(this.state.cell,
-!1,!0),t=g.getTableLines(this.state.cell,!0,!1),e=0;e<x.length;e++)mxUtils.bind(this,function(e){var m=x[e],p=e<x.length-1?x[e+1]:null,p=null!=p?g.getCellGeometry(p.cell):null,u=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=t[e]?new V(t[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"row-resize",null,p);m.tableHandle=!0;var n=0;m.shape.node.parentNode.insertBefore(m.shape.node,m.shape.node.parentNode.firstChild);
-m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==n?mxConstants.NONE:l.stroke;if(this.shape.constructor==V)this.shape.line=d(t[e],0,n),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+n*k;this.shape.bounds.x=f.x+(e==x.length-1?0:b.x*k);this.shape.bounds.width=f.width-(e==x.length-1?0:b.width+b.x+k)}this.shape.redraw()}};var v=!1;m.setPosition=function(b,d,c){n=Math.max(Graph.minTableRowHeight-
+!1,!0),t=g.getTableLines(this.state.cell,!0,!1),e=0;e<x.length;e++)mxUtils.bind(this,function(e){var m=x[e],p=e<x.length-1?x[e+1]:null,p=null!=p?g.getCellGeometry(p.cell):null,u=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=t[e]?new W(t[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"row-resize",null,p);m.tableHandle=!0;var n=0;m.shape.node.parentNode.insertBefore(m.shape.node,m.shape.node.parentNode.firstChild);
+m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==n?mxConstants.NONE:l.stroke;if(this.shape.constructor==W)this.shape.line=d(t[e],0,n),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+n*k;this.shape.bounds.x=f.x+(e==x.length-1?0:b.x*k);this.shape.bounds.width=f.width-(e==x.length-1?0:b.width+b.x+k)}this.shape.redraw()}};var v=!1;m.setPosition=function(b,d,c){n=Math.max(Graph.minTableRowHeight-
b.height,d.y-b.y-b.height);v=mxEvent.isShiftDown(c.getEvent());null!=u&&v&&(n=Math.min(n,u.height-Graph.minTableRowHeight))};m.execute=function(b){if(0!=n)g.setTableRowHeight(this.state.cell,n,!v);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}n=0};m.reset=function(){n=0};b.push(m)})(e);for(e=0;e<u.length;e++)mxUtils.bind(this,function(e){var m=g.view.getState(u[e]),p=g.getCellGeometry(u[e]),x=null!=p.alternateBounds?
-p.alternateBounds:p;null==m&&(m=new mxCellState(g.view,u[e],g.getCellStyle(u[e])),m.x=f.x+p.x*k,m.y=f.y+p.y*k,m.width=x.width*k,m.height=x.height*k,m.updateCachedBounds());var p=e<u.length-1?u[e+1]:null,p=null!=p?g.getCellGeometry(p):null,t=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=n[e]?new V(n[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"col-resize",null,p);m.tableHandle=!0;var v=0;m.shape.node.parentNode.insertBefore(m.shape.node,
-m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==v?mxConstants.NONE:l.stroke;if(this.shape.constructor==V)this.shape.line=d(n[e],v,0),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(x.width+v)*k;this.shape.bounds.y=f.y+(e==u.length-1?0:b.y*k);this.shape.bounds.height=f.height-(e==u.length-1?0:(b.height+b.y)*k)}this.shape.redraw()}};var y=!1;m.setPosition=function(b,
-d,c){v=Math.max(Graph.minTableColumnWidth-x.width,d.x-b.x-x.width);y=mxEvent.isShiftDown(c.getEvent());null==t||y||(v=Math.min(v,t.width-Graph.minTableColumnWidth))};m.execute=function(b){if(0!=v)g.setTableColumnWidth(this.state.cell,v,y);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}v=0};m.positionChanged=function(){};m.reset=function(){v=0};b.push(m)})(e)}}return null!=b?b.reverse():null};var ga=mxVertexHandler.prototype.setHandlesVisible;
-mxVertexHandler.prototype.setHandlesVisible=function(b){ga.apply(this,arguments);if(null!=this.moveHandles)for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].style.visibility=b?"":"hidden";if(null!=this.cornerHandles)for(d=0;d<this.cornerHandles.length;d++)this.cornerHandles[d].node.style.visibility=b?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var b=this.graph.model;if(null!=this.moveHandles){for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].parentNode.removeChild(this.moveHandles[d]);
+p.alternateBounds:p;null==m&&(m=new mxCellState(g.view,u[e],g.getCellStyle(u[e])),m.x=f.x+p.x*k,m.y=f.y+p.y*k,m.width=x.width*k,m.height=x.height*k,m.updateCachedBounds());var p=e<u.length-1?u[e+1]:null,p=null!=p?g.getCellGeometry(p):null,t=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=n[e]?new W(n[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"col-resize",null,p);m.tableHandle=!0;var v=0;m.shape.node.parentNode.insertBefore(m.shape.node,
+m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==v?mxConstants.NONE:l.stroke;if(this.shape.constructor==W)this.shape.line=d(n[e],v,0),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(x.width+v)*k;this.shape.bounds.y=f.y+(e==u.length-1?0:b.y*k);this.shape.bounds.height=f.height-(e==u.length-1?0:(b.height+b.y)*k)}this.shape.redraw()}};var y=!1;m.setPosition=function(b,
+d,c){v=Math.max(Graph.minTableColumnWidth-x.width,d.x-b.x-x.width);y=mxEvent.isShiftDown(c.getEvent());null==t||y||(v=Math.min(v,t.width-Graph.minTableColumnWidth))};m.execute=function(b){if(0!=v)g.setTableColumnWidth(this.state.cell,v,y);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}v=0};m.positionChanged=function(){};m.reset=function(){v=0};b.push(m)})(e)}}return null!=b?b.reverse():null};var fa=mxVertexHandler.prototype.setHandlesVisible;
+mxVertexHandler.prototype.setHandlesVisible=function(b){fa.apply(this,arguments);if(null!=this.moveHandles)for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].style.visibility=b?"":"hidden";if(null!=this.cornerHandles)for(d=0;d<this.cornerHandles.length;d++)this.cornerHandles[d].node.style.visibility=b?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var b=this.graph.model;if(null!=this.moveHandles){for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].parentNode.removeChild(this.moveHandles[d]);
this.moveHandles=null}this.moveHandles=[];for(d=0;d<b.getChildCount(this.state.cell);d++)mxUtils.bind(this,function(d){if(null!=d&&b.isVertex(d.cell)){var c=mxUtils.createImage(Editor.rowMoveImage);c.style.position="absolute";c.style.cursor="pointer";c.style.width="7px";c.style.height="4px";c.style.padding="4px 2px 4px 2px";c.rowState=d;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(b){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(b)&&this.graph.isCellSelected(d.cell)||
this.graph.selectCellForEvent(d.cell,b);mxEvent.isPopupTrigger(b)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0);mxEvent.consume(b)}),null,mxUtils.bind(this,function(b){mxEvent.isPopupTrigger(b)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(b),mxEvent.getClientY(b),d.cell,b),mxEvent.consume(b))}));
-this.moveHandles.push(c);this.graph.container.appendChild(c)}})(this.graph.view.getState(b.getChildAt(this.state.cell,d)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ea=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,
+this.moveHandles.push(c);this.graph.container.appendChild(c)}})(this.graph.view.getState(b.getChildAt(this.state.cell,d)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var da=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,
0),d=this.tolerance,c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&mxStencilRegistry.getStencil(c);c=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!c&&null!=this.customHandles)for(var g=0;g<this.customHandles.length;g++)if(null!=this.customHandles[g].shape&&null!=this.customHandles[g].shape.bounds){var e=this.customHandles[g].shape.bounds,k=e.getCenterX(),f=e.getCenterY();if(Math.abs(this.state.x-k)<e.width/2||Math.abs(this.state.y-
-f)<e.height/2||Math.abs(this.state.x+this.state.width-k)<e.width/2||Math.abs(this.state.y+this.state.height-f)<e.height/2){c=!0;break}}c&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=ea.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));
+f)<e.height/2||Math.abs(this.state.x+this.state.width-k)<e.width/2||Math.abs(this.state.y+this.state.height-f)<e.height/2){c=!0;break}}c&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=da.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));
if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{d=this.state.view.scale;var g=this.state.view.unit;this.hint.innerHTML=c(this.roundLength(this.bounds.width/d),g)+" x "+c(this.roundLength(this.bounds.height/d),g)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=
d.y+d.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var ba=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(b,d){ba.apply(this,arguments);null!=this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display=
"none")};var x=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(b,d){x.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,g){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,k=this.graph.view.scale,f=this.roundLength(g.x/k-e.x),e=this.roundLength(g.y/k-e.y),k=this.graph.view.unit;this.hint.innerHTML=
@@ -2714,37 +2714,37 @@ this.graph.view.getState(l[c]),p=this.graph.getCellGeometry(l[c]);null!=m&&null!
var g=d.getX()+c.x,c=d.getY()+c.y,e=this.first.x-g,k=this.first.y-c,f=this.graph.tolerance;if(null!=this.div||Math.abs(e)>f||Math.abs(k)>f)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(g,c),this.isSpaceEvent(d)?(g=this.x+this.width,c=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=
0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=g-this.width),this.y<this.first.y&&(this.y=c-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=
this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
-this.secondDiv=null)),d.consume()}};var J=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);J.apply(this,arguments)};var X=(new Date).getTime(),ca=0,ka=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,c,g){ka.apply(this,arguments);c!=this.currentTerminalState?(X=(new Date).getTime(),ca=0):ca=(new Date).getTime()-X;this.currentTerminalState=
-c};var K=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<ca||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&K.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,c){d=null!=b&&0==b;var g=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
+this.secondDiv=null)),d.consume()}};var J=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);J.apply(this,arguments)};var ea=(new Date).getTime(),V=0,ja=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,c,g){ja.apply(this,arguments);c!=this.currentTerminalState?(ea=(new Date).getTime(),V=0):V=(new Date).getTime()-ea;this.currentTerminalState=
+c};var K=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<V||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&K.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,c){d=null!=b&&0==b;var g=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
1||this.constructor==mxElbowEdgeHandler&&2==b)?this.graph.getConnectionConstraint(this.state,g,d):null;c=null!=(null!=b?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(d),b):null)?c?this.endFixedHandleImage:this.fixedHandleImage:null!=b&&null!=g?c?this.endTerminalHandleImage:this.terminalHandleImage:c?this.endHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&
---c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var na=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(b,d,c){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return na.apply(this,arguments)};var qa=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(b){if(null!=
-b&&1==b.length){var d=this.graph.getModel(),c=d.getParent(b[0]),g=this.graph.getCellGeometry(b[0]);if(d.isEdge(c)&&null!=g&&g.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return qa.apply(this,arguments)};var pa=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=pa.apply(this,arguments),d=[],c=0;c<b.length;c++)"1"!=mxUtils.getValue(b[c].style,
-"part","0")&&d.push(b[c]);return d};var ha=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),c=d.getParent(b.cell),g=this.graph.getCellGeometry(b.cell);return d.isEdge(c)&&null!=g&&g.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):ha.apply(this,arguments)};
-var sa=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(b,d){var c=this.graph.getModel(),g=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!c.isEdge(g)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&sa.apply(this,arguments)};mxVertexHandler.prototype.rotateClick=function(){var b=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),
+--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ma=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(b,d,c){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return ma.apply(this,arguments)};var pa=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(b){if(null!=
+b&&1==b.length){var d=this.graph.getModel(),c=d.getParent(b[0]),g=this.graph.getCellGeometry(b[0]);if(d.isEdge(c)&&null!=g&&g.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return pa.apply(this,arguments)};var oa=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=oa.apply(this,arguments),d=[],c=0;c<b.length;c++)"1"!=mxUtils.getValue(b[c].style,
+"part","0")&&d.push(b[c]);return d};var ga=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),c=d.getParent(b.cell),g=this.graph.getCellGeometry(b.cell);return d.isEdge(c)&&null!=g&&g.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):ga.apply(this,arguments)};
+var ra=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(b,d){var c=this.graph.getModel(),g=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!c.isEdge(g)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&ra.apply(this,arguments)};mxVertexHandler.prototype.rotateClick=function(){var b=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),
d=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&b==mxConstants.NONE&&d==mxConstants.NONE?(b=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,b,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};var Y=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(b,d){Y.apply(this,
-arguments);null!=this.graph.graphHandler.first&&(null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display="none"),null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none"))};var Q=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(b,d){Q.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");
-null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="");this.blockDelayedSelection=null};var ta=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ta.apply(this,arguments);var b=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));if(this.graph.isTable(this.state.cell))this.refreshMoveHandles();else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=
+arguments);null!=this.graph.graphHandler.first&&(null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display="none"),null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none"))};var P=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(b,d){P.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");
+null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="");this.blockDelayedSelection=null};var sa=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){sa.apply(this,arguments);var b=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));if(this.graph.isTable(this.state.cell))this.refreshMoveHandles();else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=
[];for(var d=0;4>d;d++){var c=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);c.dialect=mxConstants.DIALECT_SVG;c.init(this.graph.view.getOverlayPane());this.cornerHandles.push(c)}}var g=mxUtils.bind(this,function(){null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this,function(b,d){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),
this.graph.getLinksForState(this.state));g()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(b,d){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);d=this.graph.getLinkForCell(this.state.cell);c=this.graph.getLinksForState(this.state);this.updateLinkHint(d,c);if(null!=d||null!=c&&0<c.length)b=!0;b&&this.redrawHandles()};
mxVertexHandler.prototype.updateLinkHint=function(d,c){try{if(null==d&&(null==c||0==c.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=d||null!=c&&0<c.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",
mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerHTML="";if(null!=d&&(this.linkHint.appendChild(this.graph.createLinkForHint(d)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var g=document.createElement("img");g.setAttribute("src",Editor.editImage);g.setAttribute("title",mxResources.get("editLink"));g.setAttribute("width","11");g.setAttribute("height","11");g.style.marginLeft="10px";g.style.marginBottom="-1px";g.style.cursor="pointer";this.linkHint.appendChild(g);
mxEvent.addListener(g,"click",mxUtils.bind(this,function(b){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(b)}));this.linkHint.appendChildGraph.createRemoveIcon(mxResources.get("removeIt",[mxResources.get("link")]),mxUtils.bind(this,function(b){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(b)}))}if(null!=c)for(g=0;g<c.length;g++){var e=document.createElement("div");e.style.marginTop=null!=d||0<g?"6px":"0px";e.appendChild(this.graph.createLinkForHint(c[g].getAttribute("href"),
-mxUtils.getTextContent(c[g])));this.linkHint.appendChild(e)}}}catch(ua){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var T=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){T.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var b=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");
+mxUtils.getTextContent(c[g])));this.linkHint.appendChild(e)}}}catch(ta){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var T=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){T.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var b=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");
null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(d,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),
-c=this.graph.getLinksForState(this.state);if(null!=d||null!=c&&0<c.length)this.updateLinkHint(d,c),this.redrawHandles()};var ja=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){ja.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var ma=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.left=
+c=this.graph.getLinksForState(this.state);if(null!=d||null!=c&&0<c.length)this.updateLinkHint(d,c),this.redrawHandles()};var ia=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){ia.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var la=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.left=
this.moveHandles[b].rowState.x+this.moveHandles[b].rowState.width-5+"px",this.moveHandles[b].style.top=this.moveHandles[b].rowState.y+this.moveHandles[b].rowState.height/2-6+"px";if(null!=this.cornerHandles){var b=this.getSelectionBorderInset(),d=this.cornerHandles,c=d[0].bounds.height/2;d[0].bounds.x=this.state.x-d[0].bounds.width/2+b;d[0].bounds.y=this.state.y-c+b;d[0].redraw();d[1].bounds.x=d[0].bounds.x+this.state.width-2*b;d[1].bounds.y=d[0].bounds.y;d[1].redraw();d[2].bounds.x=d[0].bounds.x;
-d[2].bounds.y=this.state.y+this.state.height-2*b;d[2].redraw();d[3].bounds.x=d[1].bounds.x;d[3].bounds.y=d[2].bounds.y;d[3].redraw();for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.display=1==this.graph.getSelectionCount()?"":"none"}null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&this.index!=mxEvent.ROTATION_HANDLE?"none":"");ma.apply(this);null!=this.state&&
+d[2].bounds.y=this.state.y+this.state.height-2*b;d[2].redraw();d[3].bounds.x=d[1].bounds.x;d[3].bounds.y=d[2].bounds.y;d[3].redraw();for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.display=1==this.graph.getSelectionCount()?"":"none"}null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&this.index!=mxEvent.ROTATION_HANDLE?"none":"");la.apply(this);null!=this.state&&
null!=this.linkHint&&(b=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),c=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]||"0",b),b=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null,null==c&&(c=this.state),c=c.y+c.height,null!=d&&(c=Math.max(c,d.y+d.height)),this.linkHint.style.left=
-Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(c+this.verticalOffset/2+Editor.hintOffset)+"px")};var ra=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){ra.apply(this,arguments);if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)null!=this.moveHandles[b]&&null!=this.moveHandles[b].parentNode&&this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);this.moveHandles=null}if(null!=this.cornerHandles){for(b=
+Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(c+this.verticalOffset/2+Editor.hintOffset)+"px")};var qa=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){qa.apply(this,arguments);if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)null!=this.moveHandles[b]&&null!=this.moveHandles[b].parentNode&&this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);this.moveHandles=null}if(null!=this.cornerHandles){for(b=
0;b<this.cornerHandles.length;b++)null!=this.cornerHandles[b]&&null!=this.cornerHandles[b].node&&null!=this.cornerHandles[b].node.parentNode&&this.cornerHandles[b].node.parentNode.removeChild(this.cornerHandles[b].node);this.cornerHandles=null}null!=this.linkHint&&(null!=this.linkHint.parentNode&&this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),this.graph.getModel().removeListener(this.changeHandler),
this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var S=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(S.apply(this),null!=this.state&&null!=this.linkHint)){var b=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(b=new mxRectangle(b.x,b.y,b.width,b.height),b.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(b.x+(b.width-
-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b.y+b.height+Editor.hintOffset)+"px"}};var oa=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){oa.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var da=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){da.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.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b.y+b.height+Editor.hintOffset)+"px"}};var na=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){na.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var ca=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ca.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),
this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(b,d,c){mxShape.call(this);this.line=b;this.stroke=d;this.strokewidth=null!=c?c:1;this.updateBoundsFromLine()}function c(){mxSwimlane.call(this)}function e(){mxSwimlane.call(this)}function f(){mxCylinder.call(this)}function n(){mxCylinder.call(this)}function l(){mxActor.call(this)}function q(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function p(){mxShape.call(this)}function m(){mxShape.call(this)}
-function u(b,d,c,g){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=c;this.strokewidth=null!=g?g:1}function v(){mxActor.call(this)}function t(){mxCylinder.call(this)}function z(){mxCylinder.call(this)}function y(){mxActor.call(this)}function I(){mxActor.call(this)}function D(){mxActor.call(this)}function F(){mxActor.call(this)}function E(){mxActor.call(this)}function O(){mxActor.call(this)}function B(){mxActor.call(this)}function G(b,d){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
-this.defaultVariation=d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,G.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,G.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,G.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,G.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,G.prototype.curveTo);
-this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,G.prototype.arcTo)}function H(){mxRectangleShape.call(this)}function L(){mxRectangleShape.call(this)}function N(){mxActor.call(this)}function M(){mxActor.call(this)}function P(){mxActor.call(this)}function V(){mxRectangleShape.call(this)}function W(){mxRectangleShape.call(this)}function ga(){mxCylinder.call(this)}function ea(){mxShape.call(this)}function ba(){mxShape.call(this)}function x(){mxEllipse.call(this)}function C(){mxShape.call(this)}
-function J(){mxShape.call(this)}function X(){mxRectangleShape.call(this)}function ca(){mxShape.call(this)}function ka(){mxShape.call(this)}function K(){mxShape.call(this)}function na(){mxShape.call(this)}function qa(){mxShape.call(this)}function pa(){mxCylinder.call(this)}function ha(){mxCylinder.call(this)}function sa(){mxRectangleShape.call(this)}function Y(){mxDoubleEllipse.call(this)}function Q(){mxDoubleEllipse.call(this)}function ta(){mxArrowConnector.call(this);this.spacing=0}function T(){mxArrowConnector.call(this);
-this.spacing=0}function ja(){mxActor.call(this)}function ma(){mxRectangleShape.call(this)}function ra(){mxActor.call(this)}function S(){mxActor.call(this)}function oa(){mxActor.call(this)}function da(){mxActor.call(this)}function Z(){mxActor.call(this)}function la(){mxActor.call(this)}function ya(){mxActor.call(this)}function za(){mxActor.call(this)}function ua(){mxActor.call(this)}function fa(){mxActor.call(this)}function aa(){mxEllipse.call(this)}function R(){mxEllipse.call(this)}function Fa(){mxEllipse.call(this)}
+function u(b,d,c,g){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=c;this.strokewidth=null!=g?g:1}function v(){mxActor.call(this)}function t(){mxCylinder.call(this)}function z(){mxCylinder.call(this)}function y(){mxActor.call(this)}function I(){mxActor.call(this)}function D(){mxActor.call(this)}function G(){mxActor.call(this)}function F(){mxActor.call(this)}function O(){mxActor.call(this)}function B(){mxActor.call(this)}function E(b,d){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
+this.defaultVariation=d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,E.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,E.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,E.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,E.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,E.prototype.curveTo);
+this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,E.prototype.arcTo)}function H(){mxRectangleShape.call(this)}function L(){mxRectangleShape.call(this)}function N(){mxActor.call(this)}function M(){mxActor.call(this)}function R(){mxActor.call(this)}function W(){mxRectangleShape.call(this)}function X(){mxRectangleShape.call(this)}function fa(){mxCylinder.call(this)}function da(){mxShape.call(this)}function ba(){mxShape.call(this)}function x(){mxEllipse.call(this)}function C(){mxShape.call(this)}
+function J(){mxShape.call(this)}function ea(){mxRectangleShape.call(this)}function V(){mxShape.call(this)}function ja(){mxShape.call(this)}function K(){mxShape.call(this)}function ma(){mxShape.call(this)}function pa(){mxShape.call(this)}function oa(){mxCylinder.call(this)}function ga(){mxCylinder.call(this)}function ra(){mxRectangleShape.call(this)}function Y(){mxDoubleEllipse.call(this)}function P(){mxDoubleEllipse.call(this)}function sa(){mxArrowConnector.call(this);this.spacing=0}function T(){mxArrowConnector.call(this);
+this.spacing=0}function ia(){mxActor.call(this)}function la(){mxRectangleShape.call(this)}function qa(){mxActor.call(this)}function S(){mxActor.call(this)}function na(){mxActor.call(this)}function ca(){mxActor.call(this)}function Z(){mxActor.call(this)}function ka(){mxActor.call(this)}function ya(){mxActor.call(this)}function za(){mxActor.call(this)}function ta(){mxActor.call(this)}function ua(){mxActor.call(this)}function aa(){mxEllipse.call(this)}function Q(){mxEllipse.call(this)}function Fa(){mxEllipse.call(this)}
function Ga(){mxRhombus.call(this)}function wa(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function xa(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Ha(){mxActor.call(this)}function Ca(){mxActor.call(this)}function Da(){mxActor.call(this)}function U(b,d,c,g){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=c;this.strokewidth=null!=g?g:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Ea(){mxConnector.call(this)}
function Na(b,d,c,g,e,k,f,l,m,p){f+=m;var A=g.clone();g.x-=e*(2*f+m);g.y-=k*(2*f+m);e*=f+m;k*=f+m;return function(){b.ellipse(A.x-e-f,A.y-k-f,2*f,2*f);p?b.fillAndStroke():b.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var b=null;if(null!=this.line)for(var d=0;d<this.line.length;d++){var c=this.line[d];null!=c&&(c=new mxRectangle(c.x,c.y,this.strokewidth,this.strokewidth),null==b?b=c:b.add(c))}this.bounds=null!=b?b:new mxRectangle};b.prototype.paintVertexShape=function(b,
d,c,g,e){this.paintTableLine(b,this.line,0,0)};b.prototype.paintTableLine=function(b,d,c,g){if(null!=d){var A=null;b.begin();for(var e=0;e<d.length;e++){var k=d[e];null!=k&&(null==A?b.moveTo(k.x+c,k.y+g):null!=A&&b.lineTo(k.x+c,k.y+g));A=k}b.end();b.stroke()}};b.prototype.intersectsRectangle=function(b){var d=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var c=null,g=0;g<this.line.length&&!d;g++){var A=this.line[g];null!=A&&null!=c&&(d=mxUtils.rectangleIntersectsSegment(b,
@@ -2778,16 +2778,16 @@ g,new mxRectangle(b.x,b.y+d,c,g-2*d);d*=c;return new mxRectangle(b.x+d,b.y,c-2*d
"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,b.height*d),0,0)}return null};u.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(d/=2);return new mxRectangle(0,Math.min(b.height*this.scale,2*d*this.scale),0,Math.max(0,.3*d*this.scale))}return null};t.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var c=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,g=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(k*=Math.min(b.width,b.height));k=Math.min(k,.5*b.width,.5*(b.height-d));g||(k=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?
new mxRectangle(k,0,Math.min(b.width,b.width-c),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,b.width-c),0,k,Math.min(b.height,b.height-d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};z.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};g.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",
-!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,Math.max(0,d*this.scale))}return null};mxUtils.extend(F,mxActor);F.prototype.size=.2;F.prototype.fixedSize=20;F.prototype.isRoundable=function(){return!0};F.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(g,0),new mxPoint(g-d,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("parallelogram",F);mxUtils.extend(E,mxActor);E.prototype.size=.2;E.prototype.fixedSize=20;E.prototype.isRoundable=function(){return!0};E.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
-g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(g-d,0),new mxPoint(g,e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("trapezoid",E);mxUtils.extend(O,mxActor);O.prototype.size=.5;O.prototype.redrawPath=function(b,d,c,g,e){b.setFillColor(null);
+!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,Math.max(0,d*this.scale))}return null};mxUtils.extend(G,mxActor);G.prototype.size=.2;G.prototype.fixedSize=20;G.prototype.isRoundable=function(){return!0};G.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(g,0),new mxPoint(g-d,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("parallelogram",G);mxUtils.extend(F,mxActor);F.prototype.size=.2;F.prototype.fixedSize=20;F.prototype.isRoundable=function(){return!0};F.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
+g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(g-d,0),new mxPoint(g,e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("trapezoid",F);mxUtils.extend(O,mxActor);O.prototype.size=.5;O.prototype.redrawPath=function(b,d,c,g,e){b.setFillColor(null);
d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(g,0),new mxPoint(d,0),new mxPoint(d,e/2),new mxPoint(0,e/2),new mxPoint(d,e/2),new mxPoint(d,e),new mxPoint(g,e)],this.isRounded,c,!1);b.end()};mxCellRenderer.registerShape("curlyBracket",O);mxUtils.extend(B,mxActor);B.prototype.redrawPath=function(b,d,c,g,e){b.setStrokeWidth(1);b.setFillColor(this.stroke);
-d=g/5;b.rect(0,0,d,e);b.fillAndStroke();b.rect(2*d,0,d,e);b.fillAndStroke();b.rect(4*d,0,d,e);b.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",B);G.prototype.moveTo=function(b,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;this.firstX=b;this.firstY=d};G.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)};
-G.prototype.quadTo=function(b,d,c,g){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=g};G.prototype.curveTo=function(b,d,c,g,e,k){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=k};G.prototype.arcTo=function(b,d,c,g,e,k,f){this.originalArcTo.apply(this.canvas,arguments);this.lastX=k;this.lastY=f};G.prototype.lineTo=function(b,d){if(null!=this.lastX&&null!=this.lastY){var c=function(b){return"number"===typeof b?b?0>b?-1:1:b===b?0:NaN:NaN},g=Math.abs(b-
+d=g/5;b.rect(0,0,d,e);b.fillAndStroke();b.rect(2*d,0,d,e);b.fillAndStroke();b.rect(4*d,0,d,e);b.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",B);E.prototype.moveTo=function(b,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;this.firstX=b;this.firstY=d};E.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};
+E.prototype.quadTo=function(b,d,c,g){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=g};E.prototype.curveTo=function(b,d,c,g,e,k){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=k};E.prototype.arcTo=function(b,d,c,g,e,k,f){this.originalArcTo.apply(this.canvas,arguments);this.lastX=k;this.lastY=f};E.prototype.lineTo=function(b,d){if(null!=this.lastX&&null!=this.lastY){var c=function(b){return"number"===typeof b?b?0>b?-1:1:b===b?0:NaN:NaN},g=Math.abs(b-
this.lastX),e=Math.abs(d-this.lastY),k=Math.sqrt(g*g+e*e);if(2>k){this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;return}var A=Math.round(k/10),f=this.defaultVariation;5>A&&(A=5,f/=3);for(var l=c(b-this.lastX)*g/A,c=c(d-this.lastY)*e/A,g=g/k,e=e/k,k=0;k<A;k++){var m=(Math.random()-.5)*f;this.originalLineTo.call(this.canvas,l*k+this.lastX-m*e,c*k+this.lastY-m*g)}this.originalLineTo.call(this.canvas,b,d)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=
-d};G.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var cb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(b){cb.apply(this,arguments);null==b.handJiggle&&(b.handJiggle=this.createHandJiggle(b))};var db=mxShape.prototype.afterPaint;
-mxShape.prototype.afterPaint=function(b){db.apply(this,arguments);null!=b.handJiggle&&(b.handJiggle.destroy(),delete b.handJiggle)};mxShape.prototype.createComicCanvas=function(b){return new G(b,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(b)};mxRhombus.prototype.defaultJiggle=2;var gb=mxRectangleShape.prototype.isHtmlAllowed;
-mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&gb.apply(this,arguments)};var hb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(b,d,c,g,e){if(null==b.handJiggle||b.handJiggle.constructor!=G)hb.apply(this,arguments);else{var k=!0;null!=this.style&&(k="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
+d};E.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var cb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(b){cb.apply(this,arguments);null==b.handJiggle&&(b.handJiggle=this.createHandJiggle(b))};var db=mxShape.prototype.afterPaint;
+mxShape.prototype.afterPaint=function(b){db.apply(this,arguments);null!=b.handJiggle&&(b.handJiggle.destroy(),delete b.handJiggle)};mxShape.prototype.createComicCanvas=function(b){return new E(b,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(b)};mxRhombus.prototype.defaultJiggle=2;var gb=mxRectangleShape.prototype.isHtmlAllowed;
+mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&gb.apply(this,arguments)};var hb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(b,d,c,g,e){if(null==b.handJiggle||b.handJiggle.constructor!=E)hb.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||(b.pointerEvents=!1),b.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?k=Math.min(g/2,Math.min(e/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(g*
k,e*k)),b.moveTo(d+k,c),b.lineTo(d+g-k,c),b.quadTo(d+g,c,d+g,c+k),b.lineTo(d+g,c+e-k),b.quadTo(d+g,c+e,d+g-k,c+e),b.lineTo(d+k,c+e),b.quadTo(d,c+e,d,c+e-k),b.lineTo(d,c+k),b.quadTo(d,c,d+k,c)):(b.moveTo(d,c),b.lineTo(d+g,c),b.lineTo(d+g,c+e),b.lineTo(d,c+e),b.lineTo(d,c)),b.close(),b.end(),b.fillAndStroke()}};mxUtils.extend(H,mxRectangleShape);H.prototype.size=.1;H.prototype.fixedSize=!1;H.prototype.isHtmlAllowed=function(){return!1};H.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=b.width,c=b.height;b=new mxRectangle(b.x,b.y,d,c);var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(d*e,c*e));b.x+=Math.round(g);b.width-=Math.round(2*g)}return b};
@@ -2796,56 +2796,56 @@ arguments)};mxCellRenderer.registerShape("process",H);mxCellRenderer.registerSha
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};N.prototype.isRoundable=function(){return!0};N.prototype.redrawPath=function(b,d,c,g,e){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var k=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),A=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),f=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,e-c),new mxPoint(Math.min(g,k+f),e-c),new mxPoint(A,e),new mxPoint(Math.max(0,k),e-c),new mxPoint(0,e-c)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",N);mxUtils.extend(M,mxActor);M.prototype.size=.2;M.prototype.fixedSize=20;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(b,d,c,g,e){d=
"0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(0,e),new mxPoint(d,e/2)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("step",M);
-mxUtils.extend(P,mxHexagon);P.prototype.size=.25;P.prototype.fixedSize=20;P.prototype.isRoundable=function(){return!0};P.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,
-0),new mxPoint(g-d,0),new mxPoint(g,.5*e),new mxPoint(g-d,e),new mxPoint(d,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",P);mxUtils.extend(V,mxRectangleShape);V.prototype.isHtmlAllowed=function(){return!1};V.prototype.paintForeground=function(b,d,c,g,e){var k=Math.min(g/5,e/5)+1;b.begin();b.moveTo(d+g/2,c+k);b.lineTo(d+g/2,c+e-k);b.moveTo(d+k,c+e/2);b.lineTo(d+g-k,c+e/2);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
-V);var $a=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};mxRhombus.prototype.paintVertexShape=function(b,d,c,g,e){$a.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);d+=k;c+=k;g-=2*k;e-=2*k;0<g&&0<e&&(b.setShadow(!1),$a.apply(this,[b,d,c,g,e]))}};mxUtils.extend(W,mxRectangleShape);W.prototype.isHtmlAllowed=function(){return!1};W.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};W.prototype.paintForeground=function(b,d,c,g,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var k=
+mxUtils.extend(R,mxHexagon);R.prototype.size=.25;R.prototype.fixedSize=20;R.prototype.isRoundable=function(){return!0};R.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,
+0),new mxPoint(g-d,0),new mxPoint(g,.5*e),new mxPoint(g-d,e),new mxPoint(d,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",R);mxUtils.extend(W,mxRectangleShape);W.prototype.isHtmlAllowed=function(){return!1};W.prototype.paintForeground=function(b,d,c,g,e){var k=Math.min(g/5,e/5)+1;b.begin();b.moveTo(d+g/2,c+k);b.lineTo(d+g/2,c+e-k);b.moveTo(d+k,c+e/2);b.lineTo(d+g-k,c+e/2);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
+W);var $a=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};mxRhombus.prototype.paintVertexShape=function(b,d,c,g,e){$a.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);d+=k;c+=k;g-=2*k;e-=2*k;0<g&&0<e&&(b.setShadow(!1),$a.apply(this,[b,d,c,g,e]))}};mxUtils.extend(X,mxRectangleShape);X.prototype.isHtmlAllowed=function(){return!1};X.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};X.prototype.paintForeground=function(b,d,c,g,e){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);d+=k;c+=k;g-=2*k;e-=2*k;0<g&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}b.setDashed(!1);var k=0,A;do{A=mxCellRenderer.defaultShapes[this.style["symbol"+k]];if(null!=A){var f=this.style["symbol"+k+"Align"],l=this.style["symbol"+k+"VerticalAlign"],m=this.style["symbol"+k+"Width"],p=this.style["symbol"+k+"Height"],x=this.style["symbol"+k+"Spacing"]||0,u=this.style["symbol"+k+"VSpacing"]||x,va=
this.style["symbol"+k+"ArcSpacing"];null!=va&&(va*=this.getArcSize(g+this.strokewidth,e+this.strokewidth),x+=va,u+=va);var va=d,Ja=c,va=f==mxConstants.ALIGN_CENTER?va+(g-m)/2:f==mxConstants.ALIGN_RIGHT?va+(g-m-x):va+x,Ja=l==mxConstants.ALIGN_MIDDLE?Ja+(e-p)/2:l==mxConstants.ALIGN_BOTTOM?Ja+(e-p-u):Ja+u;b.save();f=new A;f.style=this.style;A.prototype.paintVertexShape.call(f,b,va,Ja,m,p);b.restore()}k++}while(null!=A)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
-W);mxUtils.extend(ga,mxCylinder);ga.prototype.redrawPath=function(b,d,c,g,e,k){k?(b.moveTo(0,0),b.lineTo(g/2,e/2),b.lineTo(g,0),b.end()):(b.moveTo(0,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",ga);mxUtils.extend(ea,mxShape);ea.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.ellipse(g/4,0,g/2,e/4);b.fillAndStroke();b.begin();b.moveTo(g/2,e/4);b.lineTo(g/2,2*e/3);b.moveTo(g/2,e/3);b.lineTo(0,e/3);b.moveTo(g/2,e/3);b.lineTo(g,e/3);
-b.moveTo(g/2,2*e/3);b.lineTo(0,e);b.moveTo(g/2,2*e/3);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",ea);mxUtils.extend(ba,mxShape);ba.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};ba.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(g/6,e/2);b.end();b.stroke();b.ellipse(g/6,0,5*g/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+X);mxUtils.extend(fa,mxCylinder);fa.prototype.redrawPath=function(b,d,c,g,e,k){k?(b.moveTo(0,0),b.lineTo(g/2,e/2),b.lineTo(g,0),b.end()):(b.moveTo(0,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",fa);mxUtils.extend(da,mxShape);da.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.ellipse(g/4,0,g/2,e/4);b.fillAndStroke();b.begin();b.moveTo(g/2,e/4);b.lineTo(g/2,2*e/3);b.moveTo(g/2,e/3);b.lineTo(0,e/3);b.moveTo(g/2,e/3);b.lineTo(g,e/3);
+b.moveTo(g/2,2*e/3);b.lineTo(0,e);b.moveTo(g/2,2*e/3);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",da);mxUtils.extend(ba,mxShape);ba.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};ba.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(g/6,e/2);b.end();b.stroke();b.ellipse(g/6,0,5*g/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
ba);mxUtils.extend(x,mxEllipse);x.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+g/8,c+e);b.lineTo(d+7*g/8,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("umlEntity",x);mxUtils.extend(C,mxShape);C.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(g,0);b.lineTo(0,e);b.moveTo(0,0);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlDestroy",C);mxUtils.extend(J,mxShape);
-J.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};J.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,0);b.end();b.stroke();b.ellipse(0,e/8,g,7*e/8);b.fillAndStroke()};J.prototype.paintForeground=function(b,d,c,g,e){b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,e/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(X,mxRectangleShape);X.prototype.size=
-40;X.prototype.isHtmlAllowed=function(){return!1};X.prototype.getLabelBounds=function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,d)};X.prototype.paintBackground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,b,d,
-c,g,k):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=X&&(f=new f,f.apply(this.state),b.save(),f.paintVertexShape(b,d,c,g,k),b.restore()));k<e&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(d+g/2,c+k),b.lineTo(d+g/2,c+e),b.end(),b.stroke())};X.prototype.paintForeground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,d,c,g,Math.min(e,
-k))};mxCellRenderer.registerShape("umlLifeline",X);mxUtils.extend(ca,mxShape);ca.prototype.width=60;ca.prototype.height=30;ca.prototype.corner=10;ca.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};ca.prototype.paintBackground=function(b,d,c,g,e){var k=this.corner,f=Math.min(g,Math.max(k,parseFloat(mxUtils.getValue(this.style,
+J.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};J.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,0);b.end();b.stroke();b.ellipse(0,e/8,g,7*e/8);b.fillAndStroke()};J.prototype.paintForeground=function(b,d,c,g,e){b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,e/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(ea,mxRectangleShape);ea.prototype.size=
+40;ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.getLabelBounds=function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,d)};ea.prototype.paintBackground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,
+b,d,c,g,k):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=ea&&(f=new f,f.apply(this.state),b.save(),f.paintVertexShape(b,d,c,g,k),b.restore()));k<e&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(d+g/2,c+k),b.lineTo(d+g/2,c+e),b.end(),b.stroke())};ea.prototype.paintForeground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,d,c,g,
+Math.min(e,k))};mxCellRenderer.registerShape("umlLifeline",ea);mxUtils.extend(V,mxShape);V.prototype.width=60;V.prototype.height=30;V.prototype.corner=10;V.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};V.prototype.paintBackground=function(b,d,c,g,e){var k=this.corner,f=Math.min(g,Math.max(k,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),A=Math.min(e,Math.max(1.5*k,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),l=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);l!=mxConstants.NONE&&(b.setFillColor(l),b.rect(d,c,g,e),b.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(b,d,c,g,e),b.setGradient(this.fill,this.gradient,d,c,g,e,this.gradientDirection)):b.setFillColor(this.fill);b.begin();
-b.moveTo(d,c);b.lineTo(d+f,c);b.lineTo(d+f,c+Math.max(0,A-1.5*k));b.lineTo(d+Math.max(0,f-k),c+A);b.lineTo(d,c+A);b.close();b.fillAndStroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+g,c);b.lineTo(d+g,c+e);b.lineTo(d,c+e);b.lineTo(d,c+A);b.stroke()};mxCellRenderer.registerShape("umlFrame",ca);mxPerimeter.CenterPerimeter=function(b,d,c,g){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
-c,g){g=X.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;c.x<b.getCenterX()&&(d=-1*(d+1));return new mxPoint(b.getCenterX()+d,Math.min(b.y+b.height,Math.max(b.y+g,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,d,c,g){g=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
+b.moveTo(d,c);b.lineTo(d+f,c);b.lineTo(d+f,c+Math.max(0,A-1.5*k));b.lineTo(d+Math.max(0,f-k),c+A);b.lineTo(d,c+A);b.close();b.fillAndStroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+g,c);b.lineTo(d+g,c+e);b.lineTo(d,c+e);b.lineTo(d,c+A);b.stroke()};mxCellRenderer.registerShape("umlFrame",V);mxPerimeter.CenterPerimeter=function(b,d,c,g){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
+c,g){g=ea.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;c.x<b.getCenterX()&&(d=-1*(d+1));return new mxPoint(b.getCenterX()+d,Math.min(b.y+b.height,Math.max(b.y+g,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,d,c,g){g=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(b,d,c,g){g=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(g+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return c.x<b.getCenterX()&&(g=-1*(g+1)),new mxPoint(b.getCenterX()+g,Math.min(b.y+b.height,Math.max(b.y,c.y)));c.y<b.getCenterY()&&(g=-1*(g+1));return new mxPoint(Math.min(b.x+
b.width,Math.max(b.x,c.x)),b.getCenterY()+g)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(b,d,c,g){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(b,new mxRectangle(0,0,0,Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(d.style,"size",N.prototype.size))*d.view.scale))),d.style),d,c,g)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(b,
-d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?F.prototype.fixedSize:F.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(f+l,A+e),new mxPoint(f+
+d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?G.prototype.fixedSize:G.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(f+l,A+e),new mxPoint(f+
l,A+m),new mxPoint(f,A+m-e),new mxPoint(f,A)]):(e=e?Math.max(0,Math.min(.5*l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f+e,A),new mxPoint(f+l,A),new mxPoint(f+l-e,A+m),new mxPoint(f,A+m),new mxPoint(f+e,A)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);g&&(c.x<f||c.x>f+l?b.y=c.y:b.x=c.x);return mxUtils.getPerimeterPoint(A,b,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(b,d,c,g){var e="0"!=mxUtils.getValue(d.style,
-"fixedSize","0"),k=e?E.prototype.fixedSize:E.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(.5*l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f+e,A),new mxPoint(f+l-e,A),new mxPoint(f+l,A+m),new mxPoint(f,A+m),new mxPoint(f+e,A)]):d==mxConstants.DIRECTION_WEST?
+"fixedSize","0"),k=e?F.prototype.fixedSize:F.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(.5*l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f+e,A),new mxPoint(f+l-e,A),new mxPoint(f+l,A+m),new mxPoint(f,A+m),new mxPoint(f+e,A)]):d==mxConstants.DIRECTION_WEST?
(e=e?Math.max(0,Math.min(l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(f+l,A),new mxPoint(f+l-e,A+m),new mxPoint(f+e,A+m),new mxPoint(f,A)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A+e),new mxPoint(f+l,A),new mxPoint(f+l,A+m),new mxPoint(f,A+m-e),new mxPoint(f,A+e)]):(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(f+l,A+e),new mxPoint(f+l,A+m-e),new mxPoint(f,A+m),new mxPoint(f,
A)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);g&&(c.x<f||c.x>f+l?b.y=c.y:b.x=c.x);return mxUtils.getPerimeterPoint(A,b,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(b,d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?M.prototype.fixedSize:M.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height,p=b.getCenterX();b=b.getCenterY();d=null!=
d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(f+l-e,A),new mxPoint(f+l,b),new mxPoint(f+l-e,A+m),new mxPoint(f,A+m),new mxPoint(f+e,b),new mxPoint(f,A)]):d==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f+e,A),new mxPoint(f+l,A),new mxPoint(f+l-e,b),new mxPoint(f+
l,A+m),new mxPoint(f+e,A+m),new mxPoint(f,b),new mxPoint(f+e,A)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A+e),new mxPoint(p,A),new mxPoint(f+l,A+e),new mxPoint(f+l,A+m),new mxPoint(p,A+m-e),new mxPoint(f,A+m),new mxPoint(f,A+e)]):(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(p,A+e),new mxPoint(f+l,A),new mxPoint(f+l,A+m-e),new mxPoint(p,A+m),new mxPoint(f,A+m-e),new mxPoint(f,A)]);p=new mxPoint(p,
-b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(A,p,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?P.prototype.fixedSize:P.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height,p=b.getCenterX();b=b.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
+b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(A,p,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?R.prototype.fixedSize:R.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height,p=b.getCenterX();b=b.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(p,A),new mxPoint(f+l,A+e),new mxPoint(f+l,A+m-e),new mxPoint(p,A+m),new mxPoint(f,A+m-e),new mxPoint(f,A+e),new mxPoint(p,A)]):(e=e?Math.max(0,Math.min(l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f+e,A),new mxPoint(f+l-e,A),new mxPoint(f+l,b),new mxPoint(f+l-e,A+m),new mxPoint(f+e,A+m),new mxPoint(f,b),new mxPoint(f+e,A)]);p=new mxPoint(p,
-b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(A,p,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(ka,mxShape);ka.prototype.size=10;ka.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,c);b.ellipse((g-k)/2,0,k,k);b.fillAndStroke();b.begin();b.moveTo(g/2,k);b.lineTo(g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",ka);mxUtils.extend(K,mxShape);
-K.prototype.size=10;K.prototype.inset=2;K.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.begin();b.moveTo(g/2,k+f);b.lineTo(g/2,e);b.end();b.stroke();b.begin();b.moveTo((g-k)/2-f,k/2);b.quadTo((g-k)/2-f,k+f,g/2,k+f);b.quadTo((g+k)/2+f,k+f,(g+k)/2+f,k/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",K);mxUtils.extend(na,mxShape);
-na.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",na);mxUtils.extend(qa,mxShape);qa.prototype.inset=2;qa.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.ellipse(0,k,g-2*k,e-2*k);b.fillAndStroke();b.begin();b.moveTo(g/2,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,
-g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",qa);mxUtils.extend(pa,mxCylinder);pa.prototype.jettyWidth=20;pa.prototype.jettyHeight=10;pa.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,A=Math.min(d,e-d),l=Math.min(A+2*d,e-d);k?(b.moveTo(c,A),b.lineTo(f,A),b.lineTo(f,A+d),b.lineTo(c,A+d),b.moveTo(c,
-l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(c,A),b.close());b.end()};mxCellRenderer.registerShape("module",pa);mxUtils.extend(ha,mxCylinder);ha.prototype.jettyWidth=32;ha.prototype.jettyHeight=12;ha.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
-"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,A=.3*e-d/2,l=.7*e-d/2;k?(b.moveTo(c,A),b.lineTo(f,A),b.lineTo(f,A+d),b.lineTo(c,A+d),b.moveTo(c,l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(c,A),b.close());b.end()};mxCellRenderer.registerShape("component",ha);mxUtils.extend(sa,mxRectangleShape);sa.prototype.paintForeground=
-function(b,d,c,g,e){var k=g/2,f=e/2,A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(d+k,c),new mxPoint(d+g,c+f),new mxPoint(d+k,c+e),new mxPoint(d,c+f)],this.isRounded,A,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",sa);mxUtils.extend(Y,mxDoubleEllipse);Y.prototype.outerStroke=!0;Y.prototype.paintVertexShape=function(b,d,c,g,e){var k=Math.min(4,
-Math.min(g/5,e/5));0<g&&0<e&&(b.ellipse(d+k,c+k,g-2*k,e-2*k),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,c,g,e),b.stroke())};mxCellRenderer.registerShape("endState",Y);mxUtils.extend(Q,Y);Q.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",Q);mxUtils.extend(ta,mxArrowConnector);ta.prototype.defaultWidth=4;ta.prototype.isOpenEnded=function(){return!0};ta.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
-this.strokewidth-1)};ta.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",ta);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=10;T.prototype.defaultArrowWidth=20;T.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};T.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};T.prototype.getEdgeWidth=
-function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",T);mxUtils.extend(ja,mxActor);ja.prototype.size=30;ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(g,
-0),new mxPoint(g,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("manualInput",ja);mxUtils.extend(ma,mxRectangleShape);ma.prototype.dx=20;ma.prototype.dy=20;ma.prototype.isHtmlAllowed=function(){return!1};ma.prototype.paintForeground=function(b,d,c,g,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var k=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(g*f,e*f));f=
-Math.max(k,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));k=Math.max(k,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(d,c+k);b.lineTo(d+g,c+k);b.end();b.stroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+f,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",ma);mxUtils.extend(ra,mxActor);ra.prototype.dx=20;ra.prototype.dy=20;ra.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,
-"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint(d,c),new mxPoint(d,e),new mxPoint(0,e)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("corner",ra);mxUtils.extend(S,mxActor);S.prototype.redrawPath=function(b,d,c,g,
-e){b.moveTo(0,0);b.lineTo(0,e);b.end();b.moveTo(g,0);b.lineTo(g,e);b.end();b.moveTo(0,e/2);b.lineTo(g,e/2);b.end()};mxCellRenderer.registerShape("crossbar",S);mxUtils.extend(oa,mxActor);oa.prototype.dx=20;oa.prototype.dy=20;oa.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint((g+d)/2,c),new mxPoint((g+d)/2,e),new mxPoint((g-d)/2,e),new mxPoint((g-d)/2,c),new mxPoint(0,c)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("tee",oa);mxUtils.extend(da,mxActor);da.prototype.arrowWidth=.3;da.prototype.arrowSize=.2;da.prototype.redrawPath=function(b,d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
-this.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(0,k)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("singleArrow",da);mxUtils.extend(Z,mxActor);Z.prototype.redrawPath=function(b,
-d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(d,
-k),new mxPoint(d,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",Z);mxUtils.extend(la,mxActor);la.prototype.size=.1;la.prototype.fixedSize=20;la.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(g,0);b.quadTo(g-2*d,e/2,g,e);b.lineTo(d,
-e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",la);mxUtils.extend(ya,mxActor);ya.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",ya);mxUtils.extend(za,mxActor);za.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.quadTo(g/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",za);mxUtils.extend(ua,mxActor);
-ua.prototype.size=20;ua.prototype.isRoundable=function(){return!0};ua.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(g/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(g-d,0),new mxPoint(g,.8*d),new mxPoint(g,e),new mxPoint(0,e),new mxPoint(0,.8*d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("loopLimit",ua);mxUtils.extend(fa,
-mxActor);fa.prototype.size=.375;fa.prototype.isRoundable=function(){return!0};fa.prototype.redrawPath=function(b,d,c,g,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,e-d),new mxPoint(g/2,e),new mxPoint(0,e-d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",fa);mxUtils.extend(aa,
-mxEllipse);aa.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+g/2,c+e);b.lineTo(d+g,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",aa);mxUtils.extend(R,mxEllipse);R.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,c+e/2);b.lineTo(d+g,c+e/2);b.end();b.stroke();b.begin();b.moveTo(d+g/2,c);b.lineTo(d+g/2,c+e);b.end();
-b.stroke()};mxCellRenderer.registerShape("orEllipse",R);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d+.145*g,c+.145*e);b.lineTo(d+.855*g,c+.855*e);b.end();b.stroke();b.begin();b.moveTo(d+.855*g,c+.145*e);b.lineTo(d+.145*g,c+.855*e);b.end();b.stroke()};mxCellRenderer.registerShape("sumEllipse",Fa);mxUtils.extend(Ga,mxRhombus);Ga.prototype.paintVertexShape=function(b,d,c,
+b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(A,p,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(ja,mxShape);ja.prototype.size=10;ja.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,c);b.ellipse((g-k)/2,0,k,k);b.fillAndStroke();b.begin();b.moveTo(g/2,k);b.lineTo(g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",ja);mxUtils.extend(K,mxShape);
+K.prototype.size=10;K.prototype.inset=2;K.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.begin();b.moveTo(g/2,k+f);b.lineTo(g/2,e);b.end();b.stroke();b.begin();b.moveTo((g-k)/2-f,k/2);b.quadTo((g-k)/2-f,k+f,g/2,k+f);b.quadTo((g+k)/2+f,k+f,(g+k)/2+f,k/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",K);mxUtils.extend(ma,mxShape);
+ma.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",ma);mxUtils.extend(pa,mxShape);pa.prototype.inset=2;pa.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.ellipse(0,k,g-2*k,e-2*k);b.fillAndStroke();b.begin();b.moveTo(g/2,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,
+g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",pa);mxUtils.extend(oa,mxCylinder);oa.prototype.jettyWidth=20;oa.prototype.jettyHeight=10;oa.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,A=Math.min(d,e-d),l=Math.min(A+2*d,e-d);k?(b.moveTo(c,A),b.lineTo(f,A),b.lineTo(f,A+d),b.lineTo(c,A+d),b.moveTo(c,
+l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(c,A),b.close());b.end()};mxCellRenderer.registerShape("module",oa);mxUtils.extend(ga,mxCylinder);ga.prototype.jettyWidth=32;ga.prototype.jettyHeight=12;ga.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
+"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,A=.3*e-d/2,l=.7*e-d/2;k?(b.moveTo(c,A),b.lineTo(f,A),b.lineTo(f,A+d),b.lineTo(c,A+d),b.moveTo(c,l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(c,A),b.close());b.end()};mxCellRenderer.registerShape("component",ga);mxUtils.extend(ra,mxRectangleShape);ra.prototype.paintForeground=
+function(b,d,c,g,e){var k=g/2,f=e/2,A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(d+k,c),new mxPoint(d+g,c+f),new mxPoint(d+k,c+e),new mxPoint(d,c+f)],this.isRounded,A,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",ra);mxUtils.extend(Y,mxDoubleEllipse);Y.prototype.outerStroke=!0;Y.prototype.paintVertexShape=function(b,d,c,g,e){var k=Math.min(4,
+Math.min(g/5,e/5));0<g&&0<e&&(b.ellipse(d+k,c+k,g-2*k,e-2*k),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,c,g,e),b.stroke())};mxCellRenderer.registerShape("endState",Y);mxUtils.extend(P,Y);P.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",P);mxUtils.extend(sa,mxArrowConnector);sa.prototype.defaultWidth=4;sa.prototype.isOpenEnded=function(){return!0};sa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
+this.strokewidth-1)};sa.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",sa);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=10;T.prototype.defaultArrowWidth=20;T.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};T.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};T.prototype.getEdgeWidth=
+function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",T);mxUtils.extend(ia,mxActor);ia.prototype.size=30;ia.prototype.isRoundable=function(){return!0};ia.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(g,
+0),new mxPoint(g,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("manualInput",ia);mxUtils.extend(la,mxRectangleShape);la.prototype.dx=20;la.prototype.dy=20;la.prototype.isHtmlAllowed=function(){return!1};la.prototype.paintForeground=function(b,d,c,g,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var k=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(g*f,e*f));f=
+Math.max(k,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));k=Math.max(k,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(d,c+k);b.lineTo(d+g,c+k);b.end();b.stroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+f,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",la);mxUtils.extend(qa,mxActor);qa.prototype.dx=20;qa.prototype.dy=20;qa.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,
+"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint(d,c),new mxPoint(d,e),new mxPoint(0,e)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("corner",qa);mxUtils.extend(S,mxActor);S.prototype.redrawPath=function(b,d,c,g,
+e){b.moveTo(0,0);b.lineTo(0,e);b.end();b.moveTo(g,0);b.lineTo(g,e);b.end();b.moveTo(0,e/2);b.lineTo(g,e/2);b.end()};mxCellRenderer.registerShape("crossbar",S);mxUtils.extend(na,mxActor);na.prototype.dx=20;na.prototype.dy=20;na.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint((g+d)/2,c),new mxPoint((g+d)/2,e),new mxPoint((g-d)/2,e),new mxPoint((g-d)/2,c),new mxPoint(0,c)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("tee",na);mxUtils.extend(ca,mxActor);ca.prototype.arrowWidth=.3;ca.prototype.arrowSize=.2;ca.prototype.redrawPath=function(b,d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
+this.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(0,k)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("singleArrow",ca);mxUtils.extend(Z,mxActor);Z.prototype.redrawPath=function(b,
+d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(d,
+k),new mxPoint(d,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",Z);mxUtils.extend(ka,mxActor);ka.prototype.size=.1;ka.prototype.fixedSize=20;ka.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(g,0);b.quadTo(g-2*d,e/2,g,e);b.lineTo(d,
+e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",ka);mxUtils.extend(ya,mxActor);ya.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",ya);mxUtils.extend(za,mxActor);za.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.quadTo(g/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",za);mxUtils.extend(ta,mxActor);
+ta.prototype.size=20;ta.prototype.isRoundable=function(){return!0};ta.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(g/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(g-d,0),new mxPoint(g,.8*d),new mxPoint(g,e),new mxPoint(0,e),new mxPoint(0,.8*d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("loopLimit",ta);mxUtils.extend(ua,
+mxActor);ua.prototype.size=.375;ua.prototype.isRoundable=function(){return!0};ua.prototype.redrawPath=function(b,d,c,g,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,e-d),new mxPoint(g/2,e),new mxPoint(0,e-d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",ua);mxUtils.extend(aa,
+mxEllipse);aa.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+g/2,c+e);b.lineTo(d+g,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",aa);mxUtils.extend(Q,mxEllipse);Q.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,c+e/2);b.lineTo(d+g,c+e/2);b.end();b.stroke();b.begin();b.moveTo(d+g/2,c);b.lineTo(d+g/2,c+e);b.end();
+b.stroke()};mxCellRenderer.registerShape("orEllipse",Q);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d+.145*g,c+.145*e);b.lineTo(d+.855*g,c+.855*e);b.end();b.stroke();b.begin();b.moveTo(d+.855*g,c+.145*e);b.lineTo(d+.145*g,c+.855*e);b.end();b.stroke()};mxCellRenderer.registerShape("sumEllipse",Fa);mxUtils.extend(Ga,mxRhombus);Ga.prototype.paintVertexShape=function(b,d,c,
g,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,c+e/2);b.lineTo(d+g,c+e/2);b.end();b.stroke()};mxCellRenderer.registerShape("sortShape",Ga);mxUtils.extend(wa,mxEllipse);wa.prototype.paintVertexShape=function(b,d,c,g,e){b.begin();b.moveTo(d,c);b.lineTo(d+g,c);b.lineTo(d+g/2,c+e/2);b.close();b.fillAndStroke();b.begin();b.moveTo(d,c+e);b.lineTo(d+g,c+e);b.lineTo(d+g/2,c+e/2);b.close();b.fillAndStroke()};mxCellRenderer.registerShape("collate",wa);mxUtils.extend(Aa,
mxEllipse);Aa.prototype.paintVertexShape=function(b,d,c,g,e){var k=b.state.strokeWidth/2,f=10+2*k,l=c+e-f/2;b.begin();b.moveTo(d,c);b.lineTo(d,c+e);b.moveTo(d+k,l);b.lineTo(d+k+f,l-f/2);b.moveTo(d+k,l);b.lineTo(d+k+f,l+f/2);b.moveTo(d+k,l);b.lineTo(d+g-k,l);b.moveTo(d+g,c);b.lineTo(d+g,c+e);b.moveTo(d+g-k,l);b.lineTo(d+g-f-k,l-f/2);b.moveTo(d+g-k,l);b.lineTo(d+g-f-k,l+f/2);b.end();b.stroke()};mxCellRenderer.registerShape("dimension",Aa);mxUtils.extend(xa,mxEllipse);xa.prototype.drawHidden=!0;xa.prototype.paintVertexShape=
function(b,d,c,g,e){this.outline||b.setStrokeColor(null);if(null!=this.style){var k=b.pointerEvents,f=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||f||(b.pointerEvents=!1);var l="1"==mxUtils.getValue(this.style,"top","1"),m="1"==mxUtils.getValue(this.style,"left","1"),A="1"==mxUtils.getValue(this.style,"right","1"),p="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||f||this.outline||l||A||p||m?(b.rect(d,c,g,e),b.fill(),
@@ -2860,9 +2860,9 @@ dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Ro
dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];U.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);this.strictDrawShape(b,0,0,g,e)};U.prototype.strictDrawShape=function(b,d,c,g,e,k){var f=k&&k.rectStyle?k.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),l=k&&k.absoluteCornerSize?k.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",
this.absoluteCornerSize),m=k&&k.size?k.size:Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),p=k&&k.rectOutline?k.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),x=k&&k.indent?k.indent:Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),u=k&&k.dashed?k.dashed:mxUtils.getValue(this.style,"dashed",!1),A=k&&k.dashPattern?k.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),n=k&&k.relIndent?k.relIndent:
Math.max(0,Math.min(50,x)),t=k&&k.top?k.top:mxUtils.getValue(this.style,"top",!0),v=k&&k.right?k.right:mxUtils.getValue(this.style,"right",!0),y=k&&k.bottom?k.bottom:mxUtils.getValue(this.style,"bottom",!0),C=k&&k.left?k.left:mxUtils.getValue(this.style,"left",!0),z=k&&k.topLeftStyle?k.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),J=k&&k.topRightStyle?k.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),q=k&&k.bottomRightStyle?k.bottomRightStyle:mxUtils.getValue(this.style,
-"bottomRightStyle","default"),K=k&&k.bottomLeftStyle?k.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),B=k&&k.fillColor?k.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");k&&k.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var M=k&&k.strokeWidth?k.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),X=k&&k.fillColor2?k.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),ca=k&&k.gradientColor2?k.gradientColor2:mxUtils.getValue(this.style,
-"gradientColor2","none"),Ja=k&&k.gradientDirection2?k.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),va=k&&k.opacity?k.opacity:mxUtils.getValue(this.style,"opacity","100"),ka=Math.max(0,Math.min(50,m));k=U.prototype;b.setDashed(u);A&&""!=A&&b.setDashPattern(A);b.setStrokeWidth(M);m=Math.min(.5*e,.5*g,m);l||(m=ka*Math.min(g,e)/100);m=Math.min(m,.5*Math.min(g,e));l||(x=Math.min(n*Math.min(g,e)/100));x=Math.min(x,.5*Math.min(g,e)-m);(t||v||y||C)&&"frame"!=p&&(b.begin(),
-t?k.moveNW(b,d,c,g,e,f,z,m,C):b.moveTo(0,0),t&&k.paintNW(b,d,c,g,e,f,z,m,C),k.paintTop(b,d,c,g,e,f,J,m,v),v&&k.paintNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),y&&k.paintSE(b,d,c,g,e,f,q,m,v),k.paintBottom(b,d,c,g,e,f,K,m,C),C&&k.paintSW(b,d,c,g,e,f,K,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(X),u=l=va,"none"==X&&(l=0),"none"==ca&&(u=0),b.setGradient(X,ca,0,0,g,e,Ja,l,u),b.begin(),t?k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C):b.moveTo(x,0),k.paintLeftInner(b,
+"bottomRightStyle","default"),K=k&&k.bottomLeftStyle?k.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),B=k&&k.fillColor?k.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");k&&k.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var M=k&&k.strokeWidth?k.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),V=k&&k.fillColor2?k.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),ea=k&&k.gradientColor2?k.gradientColor2:mxUtils.getValue(this.style,
+"gradientColor2","none"),Ja=k&&k.gradientDirection2?k.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),va=k&&k.opacity?k.opacity:mxUtils.getValue(this.style,"opacity","100"),ja=Math.max(0,Math.min(50,m));k=U.prototype;b.setDashed(u);A&&""!=A&&b.setDashPattern(A);b.setStrokeWidth(M);m=Math.min(.5*e,.5*g,m);l||(m=ja*Math.min(g,e)/100);m=Math.min(m,.5*Math.min(g,e));l||(x=Math.min(n*Math.min(g,e)/100));x=Math.min(x,.5*Math.min(g,e)-m);(t||v||y||C)&&"frame"!=p&&(b.begin(),
+t?k.moveNW(b,d,c,g,e,f,z,m,C):b.moveTo(0,0),t&&k.paintNW(b,d,c,g,e,f,z,m,C),k.paintTop(b,d,c,g,e,f,J,m,v),v&&k.paintNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),y&&k.paintSE(b,d,c,g,e,f,q,m,v),k.paintBottom(b,d,c,g,e,f,K,m,C),C&&k.paintSW(b,d,c,g,e,f,K,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(V),u=l=va,"none"==V&&(l=0),"none"==ea&&(u=0),b.setGradient(V,ea,0,0,g,e,Ja,l,u),b.begin(),t?k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C):b.moveTo(x,0),k.paintLeftInner(b,
d,c,g,e,f,K,m,x,y,C),C&&y&&k.paintSWInner(b,d,c,g,e,f,K,m,x,y),k.paintBottomInner(b,d,c,g,e,f,q,m,x,v,y),y&&v&&k.paintSEInner(b,d,c,g,e,f,q,m,x),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,v),v&&t&&k.paintNEInner(b,d,c,g,e,f,J,m,x),k.paintTopInner(b,d,c,g,e,f,z,m,x,C,t),t&&C&&k.paintNWInner(b,d,c,g,e,f,z,m,x),b.fill(),"none"==B&&(b.begin(),k.paintFolds(b,d,c,g,e,f,z,J,q,K,m,t,v,y,C),b.stroke()));t||v||y||!C?t||v||!y||C?!t&&!v&&y&&C?"frame"!=p?(b.begin(),k.moveSE(b,d,c,g,e,f,q,m,v),k.paintBottom(b,d,c,g,
e,f,K,m,C),k.paintSW(b,d,c,g,e,f,K,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),"double"==p&&(k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,K,m,x,y,C),k.paintSWInner(b,d,c,g,e,f,K,m,x,y),k.paintBottomInner(b,d,c,g,e,f,q,m,x,v,y)),b.stroke()):(b.begin(),k.moveSE(b,d,c,g,e,f,q,m,v),k.paintBottom(b,d,c,g,e,f,K,m,C),k.paintSW(b,d,c,g,e,f,K,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),k.lineNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,K,m,x,y,C),k.paintSWInner(b,d,c,g,e,f,K,m,x,y),k.paintBottomInner(b,
d,c,g,e,f,q,m,x,v,y),b.close(),b.fillAndStroke()):t||!v||y||C?!t&&v&&!y&&C?"frame"!=p?(b.begin(),k.moveSW(b,d,c,g,e,f,z,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),"double"==p&&(k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,K,m,x,y,C)),b.stroke(),b.begin(),k.moveNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),"double"==p&&(k.moveSEInner(b,d,c,g,e,f,q,m,x,y),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,v)),b.stroke()):(b.begin(),k.moveSW(b,d,c,g,e,f,z,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),
@@ -2907,14 +2907,14 @@ b.moveTo(g.x-x/2-u/2,g.y-u/2+x/2);b.lineTo(g.x+u/2-3*x/2,g.y-3*u/2-x/2);b.stroke
b.moveTo(g.x-x/2-u/2,g.y-u/2+x/2);b.lineTo(g.x+u/2-3*x/2,g.y-3*u/2-x/2);b.moveTo(g.x-x/2+u/2,g.y-u/2-x/2);b.lineTo(g.x-u/2-3*x/2,g.y-3*u/2+x/2);b.stroke()}});mxMarker.addMarker("circle",Na);mxMarker.addMarker("circlePlus",function(b,d,c,g,e,k,f,m,l,p){var x=g.clone(),u=Na.apply(this,arguments),t=e*(f+2*l),n=k*(f+2*l);return function(){u.apply(this,arguments);b.begin();b.moveTo(x.x-e*l,x.y-k*l);b.lineTo(x.x-2*t+e*l,x.y-2*n+k*l);b.moveTo(x.x-t-n+k*l,x.y-n+t-e*l);b.lineTo(x.x+n-t-k*l,x.y-n-t+e*l);b.stroke()}});
mxMarker.addMarker("halfCircle",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),u=k*(f+l+1),t=g.clone();g.x-=x;g.y-=u;return function(){b.begin();b.moveTo(t.x-u,t.y+x);b.quadTo(g.x-u,g.y+x,g.x,g.y);b.quadTo(g.x+u,g.y-x,t.x+u,t.y-x);b.stroke()}});mxMarker.addMarker("async",function(b,d,c,g,e,k,f,m,l,p){d=e*l*1.118;c=k*l*1.118;e*=f+l;k*=f+l;var x=g.clone();x.x-=d;x.y-=c;g.x+=1*-e-d;g.y+=1*-k-c;return function(){b.begin();b.moveTo(x.x,x.y);m?b.lineTo(x.x-e-k/2,x.y-k+e/2):b.lineTo(x.x+k/2-e,x.y-k-e/2);
b.lineTo(x.x-e,x.y-k);b.close();p?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("openAsync",function(b){b=null!=b?b:2;return function(d,c,g,e,k,f,m,l,p,x){k*=m+p;f*=m+p;var u=e.clone();return function(){d.begin();d.moveTo(u.x,u.y);l?d.lineTo(u.x-k-f/b,u.y-f+k/b):d.lineTo(u.x+f/b-k,u.y-f-k/b);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var ab=function(b,d,c){return Ma(b,["width"],d,function(d,g,e,k,f){f=b.shape.getEdgeWidth()*b.view.scale+c;return new mxPoint(k.x+g*d/4+e*f/2,k.y+
-e*d/4-g*f/2)},function(d,g,e,k,f,m){d=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,f.x,f.y,m.x,m.y));b.style.width=Math.round(2*d)/b.view.scale-c})},Ma=function(b,d,c,g,e){return ia(b,d,function(d){var e=b.absolutePoints,k=e.length-1;d=b.view.translate;var f=b.view.scale,m=c?e[0]:e[k],e=c?e[1]:e[k-1],k=e.x-m.x,l=e.y-m.y,p=Math.sqrt(k*k+l*l),m=g.call(this,p,k/p,l/p,m,e);return new mxPoint(m.x/f-d.x,m.y/f-d.y)},function(d,g,k){var f=b.absolutePoints,m=f.length-1;d=b.view.translate;var l=b.view.scale,p=c?f[0]:
-f[m],f=c?f[1]:f[m-1],m=f.x-p.x,x=f.y-p.y,u=Math.sqrt(m*m+x*x);g.x=(g.x+d.x)*l;g.y=(g.y+d.y)*l;e.call(this,u,m/u,x/u,p,f,g,k)})},Va=function(b){return function(d){return[ia(d,["arrowWidth","arrowSize"],function(d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",da.prototype.arrowWidth))),g=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",da.prototype.arrowSize)));return new mxPoint(d.x+(1-g)*d.width,d.y+(1-c)*d.height/2)},function(d,c){this.state.style.arrowWidth=
-Math.max(0,Math.min(1,Math.abs(d.y+d.height/2-c.y)/d.height*2));this.state.style.arrowSize=Math.max(0,Math.min(b,(d.x+d.width-c.x)/d.width))})]}},Wa=function(b){return function(d){return[ia(d,["size"],function(d){var c=Math.max(0,Math.min(.5*d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(d.x,d.y+c)},function(b,d){this.state.style.size=Math.max(0,d.y-b.y)},!0)]}},Ta=function(b,d,c){return function(g){var e=[ia(g,["size"],function(c){var g=Math.max(0,Math.min(c.width,
-Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*b;return new mxPoint(c.x+g,c.y+g)},function(d,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,c.x-d.x),Math.min(d.height,c.y-d.y)))/b)},!1)];c&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ia(g));return e}},Oa=function(b,d,c,g,e){c=null!=c?c:.5;return function(k){var f=[ia(k,["size"],function(d){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,g=parseFloat(mxUtils.getValue(this.state.style,
-"size",c?e:b));return new mxPoint(d.x+Math.max(0,Math.min(.5*d.width,g*(c?1:d.width))),d.getCenterY())},function(b,d,g){b=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(c,(d.x-b.x)/b.width));this.state.style.size=b},!1,g)];d&&mxUtils.getValue(k.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(Ia(k));return f}},Xa=function(b,d,c){b=null!=b?b:.5;return function(g){var e=[ia(g,["size"],function(g){var e=null!=c?"0"!=mxUtils.getValue(this.state.style,"fixedSize",
+e*d/4-g*f/2)},function(d,g,e,k,f,m){d=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,f.x,f.y,m.x,m.y));b.style.width=Math.round(2*d)/b.view.scale-c})},Ma=function(b,d,c,g,e){return ha(b,d,function(d){var e=b.absolutePoints,k=e.length-1;d=b.view.translate;var f=b.view.scale,m=c?e[0]:e[k],e=c?e[1]:e[k-1],k=e.x-m.x,l=e.y-m.y,p=Math.sqrt(k*k+l*l),m=g.call(this,p,k/p,l/p,m,e);return new mxPoint(m.x/f-d.x,m.y/f-d.y)},function(d,g,k){var f=b.absolutePoints,m=f.length-1;d=b.view.translate;var l=b.view.scale,p=c?f[0]:
+f[m],f=c?f[1]:f[m-1],m=f.x-p.x,x=f.y-p.y,u=Math.sqrt(m*m+x*x);g.x=(g.x+d.x)*l;g.y=(g.y+d.y)*l;e.call(this,u,m/u,x/u,p,f,g,k)})},Va=function(b){return function(d){return[ha(d,["arrowWidth","arrowSize"],function(d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",ca.prototype.arrowWidth))),g=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",ca.prototype.arrowSize)));return new mxPoint(d.x+(1-g)*d.width,d.y+(1-c)*d.height/2)},function(d,c){this.state.style.arrowWidth=
+Math.max(0,Math.min(1,Math.abs(d.y+d.height/2-c.y)/d.height*2));this.state.style.arrowSize=Math.max(0,Math.min(b,(d.x+d.width-c.x)/d.width))})]}},Wa=function(b){return function(d){return[ha(d,["size"],function(d){var c=Math.max(0,Math.min(.5*d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(d.x,d.y+c)},function(b,d){this.state.style.size=Math.max(0,d.y-b.y)},!0)]}},Ta=function(b,d,c){return function(g){var e=[ha(g,["size"],function(c){var g=Math.max(0,Math.min(c.width,
+Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*b;return new mxPoint(c.x+g,c.y+g)},function(d,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,c.x-d.x),Math.min(d.height,c.y-d.y)))/b)},!1)];c&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ia(g));return e}},Oa=function(b,d,c,g,e){c=null!=c?c:.5;return function(k){var f=[ha(k,["size"],function(d){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,g=parseFloat(mxUtils.getValue(this.state.style,
+"size",c?e:b));return new mxPoint(d.x+Math.max(0,Math.min(.5*d.width,g*(c?1:d.width))),d.getCenterY())},function(b,d,g){b=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(c,(d.x-b.x)/b.width));this.state.style.size=b},!1,g)];d&&mxUtils.getValue(k.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(Ia(k));return f}},Xa=function(b,d,c){b=null!=b?b:.5;return function(g){var e=[ha(g,["size"],function(g){var e=null!=c?"0"!=mxUtils.getValue(this.state.style,"fixedSize",
"0"):null,k=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,"size",e?c:d)));return new mxPoint(g.x+Math.min(.75*g.width*b,k*(e?.75:.75*g.width)),g.y+g.height/4)},function(d,g){var e=null!=c&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?g.x-d.x:Math.max(0,Math.min(b,(g.x-d.x)/d.width*.75));this.state.style.size=e},!1,!0)];mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ia(g));return e}},La=function(){return function(b){var d=[];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,
-!1)&&d.push(Ia(b));return d}},Ia=function(b,d){return ia(b,[mxConstants.STYLE_ARCSIZE],function(c){var g=null!=d?d:c.height/8;if("1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+g)}e=Math.max(0,parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/
-2,c.height/2),Math.min(c.width,c.height)*e),c.y+g)},function(d,c,g){"1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(d.width,2*(d.x+d.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(d.width-c.x+d.x)/Math.min(d.width,d.height))))})},ia=function(b,d,c,g,e,k,f){var m=new mxHandle(b,null,mxVertexHandler.prototype.secondaryHandleImage);m.execute=function(b){for(var c=
+!1)&&d.push(Ia(b));return d}},Ia=function(b,d){return ha(b,[mxConstants.STYLE_ARCSIZE],function(c){var g=null!=d?d:c.height/8;if("1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+g)}e=Math.max(0,parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/
+2,c.height/2),Math.min(c.width,c.height)*e),c.y+g)},function(d,c,g){"1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(d.width,2*(d.x+d.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(d.width-c.x+d.x)/Math.min(d.width,d.height))))})},ha=function(b,d,c,g,e,k,f){var m=new mxHandle(b,null,mxVertexHandler.prototype.secondaryHandleImage);m.execute=function(b){for(var c=
0;c<d.length;c++)this.copyStyle(d[c]);f&&f(b)};m.getPosition=c;m.setPosition=g;m.ignoreGrid=null!=e?e:!0;if(k){var l=m.positionChanged;m.positionChanged=function(){l.apply(this,arguments);b.view.invalidate(this.state.cell);b.view.validate()}}return m},Pa={link:function(b){return[ab(b,!0,10),ab(b,!1,10)]},flexArrow:function(b){var d=b.view.graph.gridSize/b.view.scale,c=[];mxUtils.getValue(b.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(Ma(b,["width",mxConstants.STYLE_STARTSIZE,
mxConstants.STYLE_ENDSIZE],!0,function(d,c,g,e,k){d=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;k=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+c*(k+b.shape.strokewidth*b.view.scale)+g*d/2,e.y+g*(k+b.shape.strokewidth*b.view.scale)-c*d/2)},function(c,g,e,k,f,m,l){c=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,f.x,f.y,m.x,m.y));g=mxUtils.ptLineDist(k.x,k.y,k.x+e,k.y-g,m.x,m.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*
(g-b.shape.strokewidth)/3)/100/b.view.scale;b.style.width=Math.round(2*c)/b.view.scale;if(mxEvent.isShiftDown(l.getEvent())||mxEvent.isControlDown(l.getEvent()))b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(l.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE])})),c.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,
@@ -2925,28 +2925,28 @@ c*(k+b.shape.strokewidth*b.view.scale)-g*d/2,e.y+g*(k+b.shape.strokewidth*b.view
mxEvent.isAltDown(l.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE])})),c.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,c,g,e,k){d=(b.shape.getEndArrowWidth()-b.shape.strokewidth)*b.view.scale;k=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+
c*(k+b.shape.strokewidth*b.view.scale)-g*d/2,e.y+g*(k+b.shape.strokewidth*b.view.scale)+c*d/2)},function(c,g,e,k,f,m,l){c=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,f.x,f.y,m.x,m.y));g=mxUtils.ptLineDist(k.x,k.y,k.x+e,k.y-g,m.x,m.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(g-b.shape.strokewidth)/3)/100/b.view.scale;b.style.endWidth=Math.max(0,Math.round(2*c)-b.shape.getEdgeWidth())/b.view.scale;if(mxEvent.isShiftDown(l.getEvent())||mxEvent.isControlDown(l.getEvent()))b.style[mxConstants.STYLE_STARTSIZE]=
b.style[mxConstants.STYLE_ENDSIZE],b.style.startWidth=b.style.endWidth;mxEvent.isAltDown(l.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(b.style.endWidth)-parseFloat(b.style.startWidth))<d&&(b.style.endWidth=b.style.startWidth))})));return c},swimlane:function(b){var d=[];if(mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED)){var c=
-parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(Ia(b,c/2))}d.push(ia(b,[mxConstants.STYLE_STARTSIZE],function(d){var c=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,c))):new mxPoint(d.x+Math.max(0,Math.min(d.width,c)),d.getCenterY())},function(d,c){b.style[mxConstants.STYLE_STARTSIZE]=
+parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(Ia(b,c/2))}d.push(ha(b,[mxConstants.STYLE_STARTSIZE],function(d){var c=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,c))):new mxPoint(d.x+Math.max(0,Math.min(d.width,c)),d.getCenterY())},function(d,c){b.style[mxConstants.STYLE_STARTSIZE]=
1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,c.y-d.y))):Math.round(Math.max(0,Math.min(d.width,c.x-d.x)))},!1,null,function(d){var c=b.view.graph;if(!mxEvent.isShiftDown(d.getEvent())&&!mxEvent.isControlDown(d.getEvent())&&(c.isTableRow(b.cell)||c.isTableCell(b.cell))){d=c.getSwimlaneDirection(b.style);for(var g=c.model.getParent(b.cell),g=c.model.getChildCells(g,!0),e=[],k=0;k<g.length;k++)g[k]!=b.cell&&c.isSwimlane(g[k])&&c.getSwimlaneDirection(c.getCurrentCellStyle(g[k]))==
-d&&e.push(g[k]);c.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],e)}}));return d},label:La(),ext:La(),rectangle:La(),triangle:La(),rhombus:La(),umlLifeline:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",X.prototype.size))));return new mxPoint(b.getCenterX(),b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},umlFrame:function(b){return[ia(b,
-["width","height"],function(b){var d=Math.max(ca.prototype.corner,Math.min(b.width,mxUtils.getValue(this.state.style,"width",ca.prototype.width))),c=Math.max(1.5*ca.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",ca.prototype.height)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.width=Math.round(Math.max(ca.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*ca.prototype.corner,Math.min(b.height,d.y-b.y)))},
-!1)]},process:function(b){var d=[ia(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",H.prototype.size));return d?new mxPoint(b.x+c,b.y+b.height/4):new mxPoint(b.x+b.width*c,b.y+b.height/4)},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*b.width,d.x-b.x)):Math.max(0,Math.min(.5,(d.x-b.x)/b.width));this.state.style.size=c},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,
-!1)&&d.push(Ia(b));return d},cross:function(b){return[ia(b,["size"],function(b){var d=Math.min(b.width,b.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",Ca.prototype.size)))*d/2;return new mxPoint(b.getCenterX()-d,b.getCenterY()-d)},function(b,d){var c=Math.min(b.width,b.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,b.getCenterY()-d.y)/c*2,Math.max(0,b.getCenterX()-d.x)/c*2)))})]},note:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,
-Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},note2:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},
-function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ia(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));
-return d},dataStorage:function(b){return[ia(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",d?la.prototype.fixedSize:la.prototype.size));return new mxPoint(b.x+b.width-c*(d?1:b.width),b.getCenterY())},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=c},!1)]},callout:function(b){var d=
-[ia(b,["size","position"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",N.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",N.prototype.position)));mxUtils.getValue(this.state.style,"base",N.prototype.base);return new mxPoint(b.x+c*b.width,b.y+b.height-d)},function(b,d){mxUtils.getValue(this.state.style,"base",N.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(b.height,b.y+b.height-d.y)));this.state.style.position=
-Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ia(b,["position2"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",N.prototype.position2)));return new mxPoint(b.x+d*b.width,b.y+b.height)},function(b,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ia(b,["base"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",N.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+d&&e.push(g[k]);c.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],e)}}));return d},label:La(),ext:La(),rectangle:La(),triangle:La(),rhombus:La(),umlLifeline:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",ea.prototype.size))));return new mxPoint(b.getCenterX(),b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},umlFrame:function(b){return[ha(b,
+["width","height"],function(b){var d=Math.max(V.prototype.corner,Math.min(b.width,mxUtils.getValue(this.state.style,"width",V.prototype.width))),c=Math.max(1.5*V.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",V.prototype.height)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.width=Math.round(Math.max(V.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*V.prototype.corner,Math.min(b.height,d.y-b.y)))},!1)]},
+process:function(b){var d=[ha(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",H.prototype.size));return d?new mxPoint(b.x+c,b.y+b.height/4):new mxPoint(b.x+b.width*c,b.y+b.height/4)},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*b.width,d.x-b.x)):Math.max(0,Math.min(.5,(d.x-b.x)/b.width));this.state.style.size=c},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,
+!1)&&d.push(Ia(b));return d},cross:function(b){return[ha(b,["size"],function(b){var d=Math.min(b.width,b.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",Ca.prototype.size)))*d/2;return new mxPoint(b.getCenterX()-d,b.getCenterY()-d)},function(b,d){var c=Math.min(b.width,b.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,b.getCenterY()-d.y)/c*2,Math.max(0,b.getCenterX()-d.x)/c*2)))})]},note:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,
+Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},note2:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},
+function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ha(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",ia.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));
+return d},dataStorage:function(b){return[ha(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",d?ka.prototype.fixedSize:ka.prototype.size));return new mxPoint(b.x+b.width-c*(d?1:b.width),b.getCenterY())},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=c},!1)]},callout:function(b){var d=
+[ha(b,["size","position"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",N.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",N.prototype.position)));mxUtils.getValue(this.state.style,"base",N.prototype.base);return new mxPoint(b.x+c*b.width,b.y+b.height-d)},function(b,d){mxUtils.getValue(this.state.style,"base",N.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(b.height,b.y+b.height-d.y)));this.state.style.position=
+Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ha(b,["position2"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",N.prototype.position2)));return new mxPoint(b.x+d*b.width,b.y+b.height)},function(b,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ha(b,["base"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",N.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"position",N.prototype.position))),g=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"base",N.prototype.base)));return new mxPoint(b.x+Math.min(b.width,c*b.width+g),b.y+b.height-d)},function(b,d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",N.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(b.width,d.x-b.x-c*b.width)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));return d},internalStorage:function(b){var d=
-[ia(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ma.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ma.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));return d},module:function(b){return[ia(b,
-["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",pa.prototype.jettyWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"jettyHeight",pa.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*c)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ia(b,
-["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ra.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ra.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},tee:function(b){return[ia(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
-"dx",oa.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",oa.prototype.dy)));return new mxPoint(b.x+(b.width+d)/2,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,2*Math.min(b.width/2,d.x-b.x-b.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},singleArrow:Va(1),doubleArrow:Va(.5),folder:function(b){return[ia(b,["tabWidth","tabHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
+[ha(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",la.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",la.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));return d},module:function(b){return[ha(b,
+["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",oa.prototype.jettyWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"jettyHeight",oa.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*c)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ha(b,
+["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",qa.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",qa.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},tee:function(b){return[ha(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
+"dx",na.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",na.prototype.dy)));return new mxPoint(b.x+(b.width+d)/2,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,2*Math.min(b.width/2,d.x-b.x-b.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},singleArrow:Va(1),doubleArrow:Va(.5),folder:function(b){return[ha(b,["tabWidth","tabHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
"tabWidth",t.prototype.tabWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"tabHeight",t.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",t.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(d=b.width-d);return new mxPoint(b.x+d,b.y+c)},function(b,d){var c=Math.max(0,Math.min(b.width,d.x-b.x));mxUtils.getValue(this.state.style,"tabPosition",t.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=b.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=
-Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},document:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",D.prototype.size))));return new mxPoint(b.x+3*b.width/4,b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},tape:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",I.prototype.size))));
-return new mxPoint(b.getCenterX(),b.y+d*b.height/2)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(d.y-b.y)/b.height*2))},!1)]},isoCube2:function(b){return[ia(b,["isoAngle"],function(b){var d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",p.isoAngle))))*Math.PI/200;return new mxPoint(b.x,b.y+Math.min(b.width*Math.tan(d),.5*b.height))},function(b,d){this.state.style.isoAngle=Math.max(0,50*(d.y-b.y)/b.height)},!0)]},cylinder2:Wa(m.prototype.size),cylinder3:Wa(u.prototype.size),
-offPageConnector:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size))));return new mxPoint(b.getCenterX(),b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},"mxgraph.basic.rect":function(b){var d=[Graph.createHandle(b,["size"],function(b){var d=Math.max(0,Math.min(b.width/2,b.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));
+Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},document:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",D.prototype.size))));return new mxPoint(b.x+3*b.width/4,b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},tape:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",I.prototype.size))));
+return new mxPoint(b.getCenterX(),b.y+d*b.height/2)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(d.y-b.y)/b.height*2))},!1)]},isoCube2:function(b){return[ha(b,["isoAngle"],function(b){var d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",p.isoAngle))))*Math.PI/200;return new mxPoint(b.x,b.y+Math.min(b.width*Math.tan(d),.5*b.height))},function(b,d){this.state.style.isoAngle=Math.max(0,50*(d.y-b.y)/b.height)},!0)]},cylinder2:Wa(m.prototype.size),cylinder3:Wa(u.prototype.size),
+offPageConnector:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ua.prototype.size))));return new mxPoint(b.getCenterX(),b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},"mxgraph.basic.rect":function(b){var d=[Graph.createHandle(b,["size"],function(b){var d=Math.max(0,Math.min(b.width/2,b.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));
return new mxPoint(b.x+d,b.y+d)},function(b,d){this.state.style.size=Math.round(100*Math.max(0,Math.min(b.height/2,b.width/2,d.x-b.x)))/100})];b=Graph.createHandle(b,["indent"],function(b){var d=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(b.x+.75*b.width,b.y+d*b.height/200)},function(b,d){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(d.y-b.y)/b.height)))/100});d.push(b);return d},step:Oa(M.prototype.size,!0,null,
-!0,M.prototype.fixedSize),hexagon:Oa(P.prototype.size,!0,.5,!0,P.prototype.fixedSize),curlyBracket:Oa(O.prototype.size,!1),display:Oa(Da.prototype.size,!1),cube:Ta(1,f.prototype.size,!1),card:Ta(.5,y.prototype.size,!0),loopLimit:Ta(.5,ua.prototype.size,!0),trapezoid:Xa(.5,E.prototype.size,E.prototype.fixedSize),parallelogram:Xa(1,F.prototype.size,F.prototype.fixedSize)};Graph.createHandle=ia;Graph.handleFactory=Pa;var eb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=
+!0,M.prototype.fixedSize),hexagon:Oa(R.prototype.size,!0,.5,!0,R.prototype.fixedSize),curlyBracket:Oa(O.prototype.size,!1),display:Oa(Da.prototype.size,!1),cube:Ta(1,f.prototype.size,!1),card:Ta(.5,y.prototype.size,!0),loopLimit:Ta(.5,ta.prototype.size,!0),trapezoid:Xa(.5,F.prototype.size,F.prototype.fixedSize),parallelogram:Xa(1,G.prototype.size,G.prototype.fixedSize)};Graph.createHandle=ha;Graph.handleFactory=Pa;var eb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=
function(){var b=eb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var d=this.state.style.shape;null==mxCellRenderer.defaultShapes[d]&&null==mxStencilRegistry.getStencil(d)?d=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(d=mxConstants.SHAPE_SWIMLANE);d=Pa[d];null==d&&null!=this.state.shape&&this.state.shape.isRoundable()&&(d=Pa[mxConstants.SHAPE_RECTANGLE]);null!=d&&(d=d(this.state),null!=d&&(b=null==b?d:b.concat(d)))}return b};mxEdgeHandler.prototype.createCustomHandles=
function(){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)&&(b=mxConstants.SHAPE_CONNECTOR);b=Pa[b];return null!=b?b(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Qa=new mxPoint(1,0),Ra=new mxPoint(1,0),Ya=mxUtils.toRadians(-30),Qa=mxUtils.getRotatedPoint(Qa,Math.cos(Ya),Math.sin(Ya)),Za=mxUtils.toRadians(-150),Ra=mxUtils.getRotatedPoint(Ra,Math.cos(Za),Math.sin(Za));mxEdgeStyle.IsometricConnector=function(b,
d,c,g,e){var k=b.view;g=null!=g&&0<g.length?g[0]:null;var f=b.absolutePoints,m=f[0],f=f[f.length-1];null!=g&&(g=k.transformControlPoint(b,g));null==m&&null!=d&&(m=new mxPoint(d.getCenterX(),d.getCenterY()));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));var l=Qa.x,p=Qa.y,x=Ra.x,u=Ra.y,t="horizontal"==mxUtils.getValue(b.style,"elbow","horizontal");if(null!=f&&null!=m){b=function(b,d,c){b-=n.x;var g=d-n.y;d=(u*b-x*g)/(l*u-p*x);b=(p*b-l*g)/(p*x-l*u);t?(c&&(n=new mxPoint(n.x+l*d,n.y+
@@ -2958,7 +2958,7 @@ arguments)};l.prototype.constraints=[];q.prototype.getConstraints=function(b,d,c
0),!1,null,d,.5*(c-g)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-g)));d>=2*g&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,
0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,
1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,
-.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];xa.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;V.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;k.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,Math.min(c,parseFloat(mxUtils.getValue(this.style,
+.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];xa.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;W.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;k.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,Math.min(c,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-g),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*g,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+g)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));d>=2*g&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};y.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),0));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,g,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c+g)));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));d>=2*g&&b.push(new mxConnectionConstraint(new mxPoint(.5,
@@ -2969,38 +2969,38 @@ parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.push(new mxConnect
1),!1,null,0,.29*-d));b.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-d));return b};t.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(b.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),e))):(b.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,e)),b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(d-g),e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
-0,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};ma.prototype.constraints=mxRectangleShape.prototype.constraints;la.prototype.constraints=
-mxRectangleShape.prototype.constraints;aa.prototype.constraints=mxEllipse.prototype.constraints;R.prototype.constraints=mxEllipse.prototype.constraints;Fa.prototype.constraints=mxEllipse.prototype.constraints;Ba.prototype.constraints=mxEllipse.prototype.constraints;ja.prototype.constraints=mxRectangleShape.prototype.constraints;Ha.prototype.constraints=mxRectangleShape.prototype.constraints;Da.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(d,c/2),e=Math.min(d-g,Math.max(0,parseFloat(mxUtils.getValue(this.style,
+0,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};la.prototype.constraints=mxRectangleShape.prototype.constraints;ka.prototype.constraints=
+mxRectangleShape.prototype.constraints;aa.prototype.constraints=mxEllipse.prototype.constraints;Q.prototype.constraints=mxEllipse.prototype.constraints;Fa.prototype.constraints=mxEllipse.prototype.constraints;Ba.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxRectangleShape.prototype.constraints;Ha.prototype.constraints=mxRectangleShape.prototype.constraints;Da.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(d,c/2),e=Math.min(d-g,Math.max(0,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))*d);b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-g),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-g),c));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,e,c));return b};pa.prototype.getConstraints=function(b,d,c){d=parseFloat(mxUtils.getValue(b,"jettyWidth",pa.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,"jettyHeight",pa.prototype.jettyHeight));var g=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,
+0),!1,null,e,c));return b};oa.prototype.getConstraints=function(b,d,c){d=parseFloat(mxUtils.getValue(b,"jettyWidth",oa.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,"jettyHeight",oa.prototype.jettyHeight));var g=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,
.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-.5*b,1.5*b)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-
-.5*b,3.5*b))];c>5*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,d));c>8*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,d));c>15*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,d));return g};ua.prototype.constraints=mxRectangleShape.prototype.constraints;fa.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),
-new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];ea.prototype.constraints=
-[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];ha.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,
+.5*b,3.5*b))];c>5*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,d));c>8*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,d));c>15*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,d));return g};ta.prototype.constraints=mxRectangleShape.prototype.constraints;ua.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),
+new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];da.prototype.constraints=
+[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];ga.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,
0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,
0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];I.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,
.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];M.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(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,
1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!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)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,
-.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];ka.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[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(.5,
+.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];ja.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[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(.5,
0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,
.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,
-.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];F.prototype.constraints=mxRectangleShape.prototype.constraints;E.prototype.constraints=mxRectangleShape.prototype.constraints;D.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,
-0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;oa.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,
+.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];G.prototype.constraints=mxRectangleShape.prototype.constraints;F.prototype.constraints=mxRectangleShape.prototype.constraints;D.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,
+0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;na.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,
Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
null,.75*d+.25*g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),.5*(c+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),c));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-g),c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-g),.5*(c+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),
-!1,null,.5*(d-g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d-.25*g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return b};ra.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),
+!1,null,.5*(d-g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d-.25*g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return b};qa.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),
!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*(c+e)));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,g,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return b};S.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,
-.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];da.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];ca.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-g));return b};Z.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,
-parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),
+parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),
!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return b};Ca.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(c,d),e=Math.max(0,Math.min(g,g*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=(c-e)/2,k=g+e,f=(d-e)/2,e=f+e;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,f,0));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c-.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),k));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,f,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,g));return b};X.prototype.constraints=null;ya.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,f,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,g));return b};ea.prototype.constraints=null;ya.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)];za.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)];na.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];qa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(b){this.editorUi=b;this.actions={};this.init()}
+.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ma.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];pa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(b){this.editorUi=b;this.actions={};this.init()}
Actions.prototype.init=function(){function b(b){l.escape();b=l.deleteCells(l.getDeletableCells(l.getSelectionCells()),b);null!=b&&l.setSelectionCells(b)}function c(){if(!l.isSelectionEmpty()){l.getModel().beginUpdate();try{for(var b=l.getSelectionCells(),d=0;d<b.length;d++)l.cellLabelChanged(b[d],"")}finally{l.getModel().endUpdate()}}}function e(b,d,c,e,k){k.getModel().beginUpdate();try{var g=k.getCellGeometry(b);null!=g&&c&&e&&(c/=e,g=g.clone(),1<c?g.height=g.width/c:g.width=g.height*c,k.getModel().setGeometry(b,
g));k.setCellStyles(mxConstants.STYLE_CLIP_PATH,d,[b]);k.setCellStyles(mxConstants.STYLE_ASPECT,"fixed",[b])}finally{k.getModel().endUpdate()}}var f=this.editorUi,n=f.editor,l=n.graph,q=function(){return Action.prototype.isEnabled.apply(this,arguments)&&l.isEnabled()};this.addAction("new...",function(){l.openLink(f.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";f.openFile()});this.addAction("smartFit",function(){l.popupMenuHandler.hideMenu();var b=l.view.scale,
d=l.view.translate.x,c=l.view.translate.y;f.actions.get("resetView").funct();1E-5>Math.abs(b-l.view.scale)&&d==l.view.translate.x&&c==l.view.translate.y&&f.actions.get(l.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){l.isEnabled()&&(l.isSelectionEmpty()?f.actions.get("smartFit").funct():l.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){f.hideDialog()}));
@@ -3063,7 +3063,7 @@ p&&(l.setSelectionCells(p),l.scrollCellToVisible(p[0]))}}},l.cellEditor.isConten
!0))}}).isEnabled=q;d=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(f,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){f.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),this.layersWindow.window.addListener("hide",function(){f.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),f.fireEvent(new mxEventObject("layers")),
this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));d=this.addAction("formatPanel",mxUtils.bind(this,function(){f.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return 0<f.formatWidth}));
d=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(f,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){f.fireEvent(new mxEventObject("outline"));this.outlineWindow.window.fit()})),this.outlineWindow.window.addListener("hide",function(){f.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),f.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),
-null,null,Editor.ctrlKey+"+Shift+O");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("connectionPoints...",function(){var b=l.getSelectionCell();l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&null!=b&&(b=new ConnectionPointsDialog(f,b),f.showDialog(b.container,300,390,!0,!0),b.init())}).isEnabled=q};
+null,null,Editor.ctrlKey+"+Shift+O");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("editConnectionPoints...",function(){var b=l.getSelectionCell();if(l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&null!=b){var d=new ConnectionPointsDialog(f,b);f.showDialog(d.container,350,450,!0,!0,function(){d.destroy()});d.init()}}).isEnabled=q};
Actions.prototype.addAction=function(b,c,e,f,n){var l;"..."==b.substring(b.length-3)?(b=b.substring(0,b.length-3),l=mxResources.get(b)+"..."):l=mxResources.get(b);return this.put(b,new Action(l,c,e,f,n))};Actions.prototype.put=function(b,c){return this.actions[b]=c};Actions.prototype.get=function(b){return this.actions[b]};function Action(b,c,e,f,n){mxEventSource.call(this);this.label=b;this.funct=this.createFunction(c);this.enabled=null!=e?e:!0;this.iconCls=f;this.shortcut=n;this.visible=!0}
mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(b){return b};Action.prototype.setEnabled=function(b){this.enabled!=b&&(this.enabled=b,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};Action.prototype.setToggleAction=function(b){this.toggleAction=b};Action.prototype.setSelectedCallback=function(b){this.selectedCallback=b};Action.prototype.isSelected=function(){return this.selectedCallback()};DrawioFile=function(b,c){mxEventSource.call(this);this.ui=b;this.shadowData=this.data=c||"";this.shadowPages=null;this.created=(new Date).getTime();this.stats={opened:0,merged:0,fileMerged:0,fileReloaded:0,conflicts:0,timeouts:0,saved:0,closed:0,destroyed:0,joined:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource);
DrawioFile.prototype.allChangesSavedKey="allChangesSaved";DrawioFile.prototype.savingSpinnerKey="saving";DrawioFile.prototype.savingStatusKey="saving";DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.optimisticSyncDelay=300;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.lastSaved=null;DrawioFile.prototype.lastChanged=null;DrawioFile.prototype.opened=null;DrawioFile.prototype.modified=!1;
@@ -3192,61 +3192,61 @@ Editor.createRoughCanvas=function(b){var d=rough.canvas({getContext:function(){r
c.filled?b.fill():b.stroke()};return d};(function(){function b(d,c,g){this.canvas=d;this.rc=c;this.shape=g;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,b.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,b.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,b.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
mxUtils.bind(this,b.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,b.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,b.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,b.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,b.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
b.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,b.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,b.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,b.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,b.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,b.prototype.fillAndStroke);
-this.path=[];this.passThrough=!1}b.prototype.moveOp="M";b.prototype.lineOp="L";b.prototype.quadOp="Q";b.prototype.curveOp="C";b.prototype.closeOp="Z";b.prototype.getStyle=function(b,d){var c=1;if(null!=this.shape.state){var g=this.shape.state.cell.id;if(null!=g)for(var e=0;e<g.length;e++)c=(c<<5)-c+g.charCodeAt(e)<<0}c={strokeWidth:this.canvas.state.strokeWidth,seed:c,preserveVertices:!0};g=this.rc.getDefaultOptions();c.stroke=b?"none"===this.canvas.state.strokeColor?"transparent":this.canvas.state.strokeColor:
-"none";e=null;(c.filled=d)?(c.fill="none"===this.canvas.state.fillColor?"":this.canvas.state.fillColor,e="none"===this.canvas.state.gradientColor?null:this.canvas.state.gradientColor):c.fill="";c.bowing=mxUtils.getValue(this.shape.style,"bowing",g.bowing);c.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",g.hachureAngle);c.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",g.curveFitting);c.roughness=mxUtils.getValue(this.shape.style,"jiggle",g.roughness);c.simplification=
-mxUtils.getValue(this.shape.style,"simplification",g.simplification);c.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",g.disableMultiStroke);c.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",g.disableMultiStrokeFill);var k=mxUtils.getValue(this.shape.style,"hachureGap",-1);c.hachureGap="auto"==k?-1:k;c.dashGap=mxUtils.getValue(this.shape.style,"dashGap",k);c.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",k);c.zigzagOffset=mxUtils.getValue(this.shape.style,
-"zigzagOffset",k);k=mxUtils.getValue(this.shape.style,"fillWeight",-1);c.fillWeight="auto"==k?-1:k;k=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==k&&(k=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),k=null!=c.fill&&(null!=e||null!=k&&c.fill==k)?"solid":g.fillStyle);c.fillStyle=k;return c};b.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};
-b.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};b.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var b=2;b<arguments.length;b+=2)this.lastX=arguments[b-1],this.lastY=arguments[b],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};b.prototype.lineTo=function(b,d){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,b,d),this.lastX=
-b,this.lastY=d)};b.prototype.moveTo=function(b,d){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,b,d),this.lastX=b,this.lastY=d,this.firstX=b,this.firstY=d)};b.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};b.prototype.quadTo=function(b,d,c,g){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,b,d,c,g),this.lastX=c,this.lastY=g)};b.prototype.curveTo=
-function(b,d,c,g,e,k){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,b,d,c,g,e,k),this.lastX=e,this.lastY=k)};b.prototype.arcTo=function(b,d,c,g,e,k,f){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var l=mxUtils.arcToCurves(this.lastX,this.lastY,b,d,c,g,e,k,f);if(null!=l)for(var m=0;m<l.length;m+=6)this.curveTo(l[m],l[m+1],l[m+2],l[m+3],l[m+4],l[m+5]);this.lastX=k;this.lastY=f}};b.prototype.rect=function(b,d,c,g){this.passThrough?
-this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(b,d,c,g,this.getStyle(!0,!0)))};b.prototype.ellipse=function(b,d,c,g){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(b+c/2,d+g/2,c,g,this.getStyle(!0,!0)))};b.prototype.roundrect=function(b,d,c,g,e,k){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(b+e,d),this.lineTo(b+c-e,d),
-this.quadTo(b+c,d,b+c,d+k),this.lineTo(b+c,d+g-k),this.quadTo(b+c,d+g,b+c-e,d+g),this.lineTo(b+e,d+g),this.quadTo(b,d+g,b,d+g-k),this.lineTo(b,d+k),this.quadTo(b,d,b+e,d))};b.prototype.drawPath=function(b){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),b)}catch(na){}this.passThrough=!1}else if(null!=this.nextShape){for(var d in b)this.nextShape.options[d]=b[d];null==b.stroke&&delete this.nextShape.options.stroke;b.filled||delete this.nextShape.options.fill;this.passThrough=
-!0;this.rc.draw(this.nextShape);this.passThrough=!1}};b.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};b.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};b.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!0))};b.prototype.destroy=function(){this.canvas.lineTo=
-this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo;this.canvas.close=this.originalClose;this.canvas.fill=this.originalFill;this.canvas.stroke=this.originalStroke;this.canvas.fillAndStroke=this.originalFillAndStroke;this.canvas.begin=this.originalBegin;this.canvas.end=this.originalEnd;this.canvas.rect=this.originalRect;this.canvas.ellipse=
-this.originalEllipse;this.canvas.roundrect=this.originalRoundrect};mxShape.prototype.createRoughCanvas=function(d){return new b(d,Editor.createRoughCanvas(d),this)};var d=mxShape.prototype.createHandJiggle;mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?d.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(b):this.createRoughCanvas(b)};var c=mxImageShape.prototype.paintVertexShape;
-mxImageShape.prototype.paintVertexShape=function(b,d,g,e,k){null!=b.handJiggle&&b.handJiggle.passThrough||c.apply(this,arguments)};var g=mxShape.prototype.paint;mxShape.prototype.paint=function(d){var c=d.addTolerance,e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=d.handJiggle&&d.handJiggle.constructor==b&&!this.outline){d.save();var k=this.fill,f=this.stroke;this.stroke=this.fill=null;var l=this.configurePointerEvents,m=d.setStrokeColor;
-d.setStrokeColor=function(){};var p=d.setFillColor;d.setFillColor=function(){};e||null==k||(this.configurePointerEvents=function(){});d.handJiggle.passThrough=!0;g.apply(this,arguments);d.handJiggle.passThrough=!1;d.setFillColor=p;d.setStrokeColor=m;this.configurePointerEvents=l;this.stroke=f;this.fill=k;d.restore();e&&null!=k&&(d.addTolerance=function(){})}g.apply(this,arguments);d.addTolerance=c};var e=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(d,c,g,k,f,l){null!=
-d.handJiggle&&d.handJiggle.constructor==b?(d.handJiggle.passThrough=!0,e.apply(this,arguments),d.handJiggle.passThrough=!1):e.apply(this,arguments)}})();Editor.fastCompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:Graph.arrayBufferToString(pako.deflateRaw(b))};Editor.fastDecompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:pako.inflateRaw(Graph.stringToArrayBuffer(atob(b)),{to:"string"})};Editor.extractGraphModel=function(b,d,c){if(null!=b&&"undefined"!==
-typeof pako){var g=b.ownerDocument.getElementsByTagName("div"),e=[];if(null!=g&&0<g.length)for(var k=0;k<g.length;k++)if("mxgraph"==g[k].getAttribute("class")){e.push(g[k]);break}0<e.length&&(g=e[0].getAttribute("data-mxgraph"),null!=g?(e=JSON.parse(g),null!=e&&null!=e.xml&&(b=mxUtils.parseXml(e.xml),b=b.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(g=mxUtils.getTextContent(e[0]),g=Graph.decompress(g,null,c),0<g.length&&(b=mxUtils.parseXml(g),b=b.documentElement))))}if(null!=
-b&&"svg"==b.nodeName)if(g=b.getAttribute("content"),null!=g&&"<"!=g.charAt(0)&&"%"!=g.charAt(0)&&(g=unescape(window.atob?atob(g):Base64.decode(cont,g))),null!=g&&"%"==g.charAt(0)&&(g=decodeURIComponent(g)),null!=g&&0<g.length)b=mxUtils.parseXml(g).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==b||d||(e=null,"diagram"==b.nodeName?e=b:"mxfile"==b.nodeName&&(g=b.getElementsByTagName("diagram"),0<g.length&&(e=g[Math.max(0,Math.min(g.length-1,urlParams.page||0))])),null!=
-e&&(b=Editor.parseDiagramNode(e,c)));null==b||"mxGraphModel"==b.nodeName||d&&"mxfile"==b.nodeName||(b=null);return b};Editor.parseDiagramNode=function(b,d){var c=mxUtils.trim(mxUtils.getTextContent(b)),g=null;0<c.length?(c=Graph.decompress(c,null,d),null!=c&&0<c.length&&(g=mxUtils.parseXml(c).documentElement)):(c=mxUtils.getChildNodes(b),0<c.length&&(g=mxUtils.createXmlDocument(),g.appendChild(g.importNode(c[0],!0)),g=g.documentElement));return g};Editor.getDiagramNodeXml=function(b){var d=mxUtils.getTextContent(b),
-c=null;0<d.length?c=Graph.decompress(d):null!=b.firstChild&&(c=mxUtils.getXml(b.firstChild));return c};Editor.extractGraphModelFromPdf=function(b){b=b.substring(b.indexOf(",")+1);b=window.atob&&!mxClient.IS_SF?atob(b):Base64.decode(b,!0);if("%PDF-1.7"==b.substring(0,8)){var d=b.indexOf("EmbeddedFile");if(-1<d){var c=b.indexOf("stream",d)+9;if(0<b.substring(d,c).indexOf("application#2Fvnd.jgraph.mxfile"))return d=b.indexOf("endstream",c-1),pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(c,d)),
-{to:"string"})}return null}for(var c=null,d="",g=0,e=0,k=[],f=null;e<b.length;){var l=b.charCodeAt(e),e=e+1;10!=l&&(d+=String.fromCharCode(l));l=="/Subject (%3Cmxfile".charCodeAt(g)?g++:g=0;if(19==g){var m=b.indexOf("%3C%2Fmxfile%3E)",e)+15,e=e-9;if(m>e){c=b.substring(e,m);break}}10==l&&("endobj"==d?f=null:"obj"==d.substring(d.length-3,d.length)||"xref"==d||"trailer"==d?(f=[],k[d.split(" ")[0]]=f):null!=f&&f.push(d),d="")}null==c&&(c=Editor.extractGraphModelFromXref(k));null!=c&&(c=decodeURIComponent(c.replace(/\\\(/g,
-"(").replace(/\\\)/g,")")));return c};Editor.extractGraphModelFromXref=function(b){var d=b.trailer,c=null;null!=d&&(d=/.* \/Info (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(d=b[d[1]],null!=d&&(d=/.* \/Subject (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(b=b[d[1]],null!=b&&(b=b.join("\n"),c=b.substring(1,b.length-1))))));return c};Editor.extractParserError=function(b,d){var c=null,g=null!=b?b.getElementsByTagName("parsererror"):null;null!=g&&0<g.length&&(c=d||mxResources.get("invalidChars"),
-g=g[0].getElementsByTagName("div"),0<g.length&&(c=mxUtils.getTextContent(g[0])));return null!=c?mxUtils.trim(c):c};Editor.addRetryToError=function(b,d){if(null!=b){var c=null!=b.error?b.error:b;null==c.retry&&(c.retry=d)}};Editor.configure=function(b,d){if(null!=b){Editor.config=b;Editor.configVersion=b.version;Menus.prototype.defaultFonts=b.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=b.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=
-b.defaultColors||ColorDialog.prototype.defaultColors;ColorDialog.prototype.colorNames=b.colorNames||ColorDialog.prototype.colorNames;StyleFormatPanel.prototype.defaultColorSchemes=b.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=b.defaultEdgeLength||Graph.prototype.defaultEdgeLength;DrawioFile.prototype.autosaveDelay=b.autosaveDelay||DrawioFile.prototype.autosaveDelay;null!=b.templateFile&&(EditorUi.templateFile=b.templateFile);null!=b.styles&&
-(Array.isArray(b.styles)?Editor.styles=b.styles:EditorUi.debug("Configuration Error: Array expected for styles"));null!=b.globalVars&&(Editor.globalVars=b.globalVars);null!=b.compressXml&&(Editor.compressXml=b.compressXml);null!=b.includeDiagram&&(Editor.defaultIncludeDiagram=b.includeDiagram);null!=b.simpleLabels&&(Editor.simpleLabels=b.simpleLabels);null!=b.oneDriveInlinePicker&&(Editor.oneDriveInlinePicker=b.oneDriveInlinePicker);null!=b.darkColor&&(Editor.darkColor=b.darkColor);null!=b.lightColor&&
-(Editor.lightColor=b.lightColor);null!=b.settingsName&&(Editor.configurationKey="."+b.settingsName+"-configuration",Editor.settingsKey="."+b.settingsName+"-config",mxSettings.key=Editor.settingsKey);b.customFonts&&(Menus.prototype.defaultFonts=b.customFonts.concat(Menus.prototype.defaultFonts));b.customPresetColors&&(ColorDialog.prototype.presetColors=b.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=b.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=b.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));
-if(null!=b.css){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b.css));var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(c,g)}null!=b.libraries&&(Sidebar.prototype.customEntries=b.libraries);null!=b.enabledLibraries&&(Array.isArray(b.enabledLibraries)?Sidebar.prototype.enabledLibraries=b.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=b.defaultLibraries&&(Sidebar.prototype.defaultEntries=
-b.defaultLibraries);null!=b.defaultCustomLibraries&&(Editor.defaultCustomLibraries=b.defaultCustomLibraries);null!=b.enableCustomLibraries&&(Editor.enableCustomLibraries=b.enableCustomLibraries);null!=b.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=b.defaultVertexStyle);null!=b.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=b.defaultEdgeStyle);null!=b.defaultPageVisible&&(Graph.prototype.defaultPageVisible=b.defaultPageVisible);null!=b.defaultGridEnabled&&(Graph.prototype.defaultGridEnabled=
-b.defaultGridEnabled);null!=b.zoomWheel&&(Graph.zoomWheel=b.zoomWheel);null!=b.zoomFactor&&(c=parseFloat(b.zoomFactor),!isNaN(c)&&1<c?Graph.prototype.zoomFactor=c:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=b.gridSteps&&(c=parseInt(b.gridSteps),!isNaN(c)&&0<c?mxGraphView.prototype.gridSteps=c:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=b.pageFormat&&(c=parseInt(b.pageFormat.width),g=parseInt(b.pageFormat.height),!isNaN(c)&&0<c&&
-!isNaN(g)&&0<g?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,c,g),mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):EditorUi.debug("Configuration Error: {width: int, height: int} expected for pageFormat"));b.thumbWidth&&(Sidebar.prototype.thumbWidth=b.thumbWidth);b.thumbHeight&&(Sidebar.prototype.thumbHeight=b.thumbHeight);b.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml=b.emptyLibraryXml);b.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=b.emptyDiagramXml);b.sidebarWidth&&
-(EditorUi.prototype.hsplitPosition=b.sidebarWidth);b.sidebarTitles&&(Sidebar.prototype.sidebarTitles=b.sidebarTitles);b.sidebarTitleSize&&(c=parseInt(b.sidebarTitleSize),!isNaN(c)&&0<c?Sidebar.prototype.sidebarTitleSize=c:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));b.fontCss&&("string"===typeof b.fontCss?Editor.configureFontCss(b.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));null!=b.autosaveDelay&&(c=parseInt(b.autosaveDelay),!isNaN(c)&&
-0<c?DrawioFile.prototype.autosaveDelay=c:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));if(null!=b.plugins&&!d)for(App.initPluginCallback(),c=0;c<b.plugins.length;c++)mxscript(b.plugins[c]);null!=b.maxImageBytes&&(EditorUi.prototype.maxImageBytes=b.maxImageBytes);null!=b.maxImageSize&&(EditorUi.prototype.maxImageSize=b.maxImageSize)}};Editor.configureFontCss=function(b){if(null!=b){Editor.prototype.fontCss=b;var d=document.getElementsByTagName("script")[0];if(null!=d&&
-null!=d.parentNode){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b));d.parentNode.insertBefore(c,d);b=b.split("url(");for(c=1;c<b.length;c++){var g=b[c].indexOf(")"),g=Editor.trimCssUrl(b[c].substring(0,g)),e=document.createElement("link");e.setAttribute("rel","preload");e.setAttribute("href",g);e.setAttribute("as","font");e.setAttribute("crossorigin","");d.parentNode.insertBefore(e,d)}}}};Editor.trimCssUrl=function(b){return b.replace(RegExp("^[\\s\"']+",
-"g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";Editor.GUID_LENGTH=20;Editor.guid=function(b){b=null!=b?b:Editor.GUID_LENGTH;for(var d=[],c=0;c<b;c++)d.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return d.join("")};Editor.prototype.timeout=25E3;Editor.prototype.useForeignObjectForMath=!0;Editor.prototype.editButtonLink=
-null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(d){d=null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var c=d.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],g=c.getElementsByTagName("div");null!=g&&0<g.length&&(c=g[0]);throw{message:mxUtils.getTextContent(c)};}if("mxGraphModel"==d.nodeName){c=d.getAttribute("style")||
-"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),null!=g&&(e=new mxCodec(g.ownerDocument),e.decode(g,this.graph.getStylesheet())));else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var e=new mxCodec(g.ownerDocument);e.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=
-c;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");c=d.getAttribute("backgroundImage");null!=c?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(c)):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),
-!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),g=0;g<c.length;g++)this.graph.addExtFont(c[g].name,c[g].url)}catch(ca){console.log("ExtFonts format error: "+ca.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=
-function(b,d){b=null!=b?b:!0;var g=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&g.setAttribute("style",this.graph.currentStyle);var e=this.graph.getBackgroundImageObject(this.graph.backgroundImage,d);null!=e&&g.setAttribute("backgroundImage",JSON.stringify(e));g.setAttribute("math",this.graph.mathEnabled?"1":"0");g.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(e=this.graph.extFonts.map(function(b){return b.name+
-"^"+b.url}),g.setAttribute("extFonts",e.join("|")));return g};Editor.prototype.isDataSvg=function(b){try{var d=mxUtils.parseXml(b).documentElement.getAttribute("content");if(null!=d&&(null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var c=mxUtils.parseXml(d).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(X){}return!1};Editor.prototype.extractGraphModel=
-function(b,d,c){return Editor.extractGraphModel.apply(this,arguments)};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};
-var f=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){f.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.mathJaxWebkitCss="div.MathJax_SVG_Display { position: static; }\nspan.MathJax_SVG { position: static !important; }";
-Editor.initMath=function(b,d){if("undefined"===typeof window.MathJax){b=(null!=b?b:DRAW_MATH_URL+"/MathJax.js")+"?config=TeX-MML-AM_"+("html"==urlParams["math-output"]?"HTMLorMML":"SVG")+"-full";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(b){window.setTimeout(function(){"hidden"!=b.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,b])},0)};var c=null!=urlParams["math-font"]?decodeURIComponent(urlParams["math-font"]):"TeX";d=null!=d?d:{"HTML-CSS":{availableFonts:[c],imageFont:null},
-SVG:{font:c,useFontCache:!1},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(d);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};
-Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var g=Editor.prototype.init;Editor.prototype.init=function(){g.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,d){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var e=document.createElement("script");e.setAttribute("type","text/javascript");e.setAttribute("src",
-b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var k=document.createElement("style");k.type="text/css";k.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(k)}}catch(K){}}};Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;
+this.path=[];this.passThrough=!1}b.prototype.moveOp="M";b.prototype.lineOp="L";b.prototype.quadOp="Q";b.prototype.curveOp="C";b.prototype.closeOp="Z";b.prototype.getStyle=function(b,d){var c=1;if(null!=this.shape.state){var g=this.shape.state.cell.id;if(null!=g)for(var e=0;e<g.length;e++)c=(c<<5)-c+g.charCodeAt(e)<<0}c={strokeWidth:this.canvas.state.strokeWidth,seed:c,preserveVertices:!0};g=this.rc.getDefaultOptions();c.stroke=b?this.canvas.state.strokeColor===mxConstants.NONE?"transparent":this.canvas.state.strokeColor:
+mxConstants.NONE;e=null;(c.filled=d)?(c.fill=this.canvas.state.fillColor===mxConstants.NONE?"":this.canvas.state.fillColor,e=this.canvas.state.gradientColor===mxConstants.NONE?null:this.canvas.state.gradientColor):c.fill="";c.bowing=mxUtils.getValue(this.shape.style,"bowing",g.bowing);c.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",g.hachureAngle);c.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",g.curveFitting);c.roughness=mxUtils.getValue(this.shape.style,"jiggle",
+g.roughness);c.simplification=mxUtils.getValue(this.shape.style,"simplification",g.simplification);c.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",g.disableMultiStroke);c.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",g.disableMultiStrokeFill);var k=mxUtils.getValue(this.shape.style,"hachureGap",-1);c.hachureGap="auto"==k?-1:k;c.dashGap=mxUtils.getValue(this.shape.style,"dashGap",k);c.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",
+k);c.zigzagOffset=mxUtils.getValue(this.shape.style,"zigzagOffset",k);k=mxUtils.getValue(this.shape.style,"fillWeight",-1);c.fillWeight="auto"==k?-1:k;k=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==k&&(k=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),k=null!=c.fill&&(null!=e||null!=k&&c.fill==k)?"solid":g.fillStyle);c.fillStyle=k;return c};b.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,
+arguments):this.path=[]};b.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};b.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var b=2;b<arguments.length;b+=2)this.lastX=arguments[b-1],this.lastY=arguments[b],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};b.prototype.lineTo=function(b,d){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,
+b,d),this.lastX=b,this.lastY=d)};b.prototype.moveTo=function(b,d){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,b,d),this.lastX=b,this.lastY=d,this.firstX=b,this.firstY=d)};b.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};b.prototype.quadTo=function(b,d,c,g){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,b,d,c,g),this.lastX=c,this.lastY=g)};
+b.prototype.curveTo=function(b,d,c,g,e,k){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,b,d,c,g,e,k),this.lastX=e,this.lastY=k)};b.prototype.arcTo=function(b,d,c,g,e,k,f){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var l=mxUtils.arcToCurves(this.lastX,this.lastY,b,d,c,g,e,k,f);if(null!=l)for(var m=0;m<l.length;m+=6)this.curveTo(l[m],l[m+1],l[m+2],l[m+3],l[m+4],l[m+5]);this.lastX=k;this.lastY=f}};b.prototype.rect=function(b,
+d,c,g){this.passThrough?this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(b,d,c,g,this.getStyle(!0,!0)))};b.prototype.ellipse=function(b,d,c,g){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(b+c/2,d+g/2,c,g,this.getStyle(!0,!0)))};b.prototype.roundrect=function(b,d,c,g,e,k){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(b+
+e,d),this.lineTo(b+c-e,d),this.quadTo(b+c,d,b+c,d+k),this.lineTo(b+c,d+g-k),this.quadTo(b+c,d+g,b+c-e,d+g),this.lineTo(b+e,d+g),this.quadTo(b,d+g,b,d+g-k),this.lineTo(b,d+k),this.quadTo(b,d,b+e,d))};b.prototype.drawPath=function(b){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),b)}catch(ma){}this.passThrough=!1}else if(null!=this.nextShape){for(var d in b)this.nextShape.options[d]=b[d];b.stroke!=mxConstants.NONE&&null!=b.stroke||delete this.nextShape.options.stroke;
+b.filled||delete this.nextShape.options.fill;this.passThrough=!0;this.rc.draw(this.nextShape);this.passThrough=!1}};b.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};b.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};b.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,
+!0))};b.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo;this.canvas.close=this.originalClose;this.canvas.fill=this.originalFill;this.canvas.stroke=this.originalStroke;this.canvas.fillAndStroke=this.originalFillAndStroke;this.canvas.begin=this.originalBegin;this.canvas.end=this.originalEnd;
+this.canvas.rect=this.originalRect;this.canvas.ellipse=this.originalEllipse;this.canvas.roundrect=this.originalRoundrect};mxShape.prototype.createRoughCanvas=function(d){return new b(d,Editor.createRoughCanvas(d),this)};var d=mxShape.prototype.createHandJiggle;mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?d.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(b):
+this.createRoughCanvas(b)};var c=mxImageShape.prototype.paintVertexShape;mxImageShape.prototype.paintVertexShape=function(b,d,g,e,k){null!=b.handJiggle&&b.handJiggle.passThrough||c.apply(this,arguments)};var g=mxShape.prototype.paint;mxShape.prototype.paint=function(d){var c=d.addTolerance,e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=d.handJiggle&&d.handJiggle.constructor==b&&!this.outline){d.save();var k=this.fill,f=this.stroke;this.stroke=
+this.fill=null;var l=this.configurePointerEvents,m=d.setStrokeColor;d.setStrokeColor=function(){};var p=d.setFillColor;d.setFillColor=function(){};e||null==k||(this.configurePointerEvents=function(){});d.handJiggle.passThrough=!0;g.apply(this,arguments);d.handJiggle.passThrough=!1;d.setFillColor=p;d.setStrokeColor=m;this.configurePointerEvents=l;this.stroke=f;this.fill=k;d.restore();e&&null!=k&&(d.addTolerance=function(){})}g.apply(this,arguments);d.addTolerance=c};var e=mxShape.prototype.paintGlassEffect;
+mxShape.prototype.paintGlassEffect=function(d,c,g,k,f,l){null!=d.handJiggle&&d.handJiggle.constructor==b?(d.handJiggle.passThrough=!0,e.apply(this,arguments),d.handJiggle.passThrough=!1):e.apply(this,arguments)}})();Editor.fastCompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:Graph.arrayBufferToString(pako.deflateRaw(b))};Editor.fastDecompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:pako.inflateRaw(Graph.stringToArrayBuffer(atob(b)),{to:"string"})};
+Editor.extractGraphModel=function(b,d,c){if(null!=b&&"undefined"!==typeof pako){var g=b.ownerDocument.getElementsByTagName("div"),e=[];if(null!=g&&0<g.length)for(var k=0;k<g.length;k++)if("mxgraph"==g[k].getAttribute("class")){e.push(g[k]);break}0<e.length&&(g=e[0].getAttribute("data-mxgraph"),null!=g?(e=JSON.parse(g),null!=e&&null!=e.xml&&(b=mxUtils.parseXml(e.xml),b=b.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(g=mxUtils.getTextContent(e[0]),g=Graph.decompress(g,null,c),0<
+g.length&&(b=mxUtils.parseXml(g),b=b.documentElement))))}if(null!=b&&"svg"==b.nodeName)if(g=b.getAttribute("content"),null!=g&&"<"!=g.charAt(0)&&"%"!=g.charAt(0)&&(g=unescape(window.atob?atob(g):Base64.decode(cont,g))),null!=g&&"%"==g.charAt(0)&&(g=decodeURIComponent(g)),null!=g&&0<g.length)b=mxUtils.parseXml(g).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==b||d||(e=null,"diagram"==b.nodeName?e=b:"mxfile"==b.nodeName&&(g=b.getElementsByTagName("diagram"),0<g.length&&
+(e=g[Math.max(0,Math.min(g.length-1,urlParams.page||0))])),null!=e&&(b=Editor.parseDiagramNode(e,c)));null==b||"mxGraphModel"==b.nodeName||d&&"mxfile"==b.nodeName||(b=null);return b};Editor.parseDiagramNode=function(b,d){var c=mxUtils.trim(mxUtils.getTextContent(b)),g=null;0<c.length?(c=Graph.decompress(c,null,d),null!=c&&0<c.length&&(g=mxUtils.parseXml(c).documentElement)):(c=mxUtils.getChildNodes(b),0<c.length&&(g=mxUtils.createXmlDocument(),g.appendChild(g.importNode(c[0],!0)),g=g.documentElement));
+return g};Editor.getDiagramNodeXml=function(b){var d=mxUtils.getTextContent(b),c=null;0<d.length?c=Graph.decompress(d):null!=b.firstChild&&(c=mxUtils.getXml(b.firstChild));return c};Editor.extractGraphModelFromPdf=function(b){b=b.substring(b.indexOf(",")+1);b=window.atob&&!mxClient.IS_SF?atob(b):Base64.decode(b,!0);if("%PDF-1.7"==b.substring(0,8)){var d=b.indexOf("EmbeddedFile");if(-1<d){var c=b.indexOf("stream",d)+9;if(0<b.substring(d,c).indexOf("application#2Fvnd.jgraph.mxfile"))return d=b.indexOf("endstream",
+c-1),pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(c,d)),{to:"string"})}return null}for(var c=null,d="",g=0,e=0,k=[],f=null;e<b.length;){var l=b.charCodeAt(e),e=e+1;10!=l&&(d+=String.fromCharCode(l));l=="/Subject (%3Cmxfile".charCodeAt(g)?g++:g=0;if(19==g){var m=b.indexOf("%3C%2Fmxfile%3E)",e)+15,e=e-9;if(m>e){c=b.substring(e,m);break}}10==l&&("endobj"==d?f=null:"obj"==d.substring(d.length-3,d.length)||"xref"==d||"trailer"==d?(f=[],k[d.split(" ")[0]]=f):null!=f&&f.push(d),d="")}null==c&&(c=
+Editor.extractGraphModelFromXref(k));null!=c&&(c=decodeURIComponent(c.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return c};Editor.extractGraphModelFromXref=function(b){var d=b.trailer,c=null;null!=d&&(d=/.* \/Info (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(d=b[d[1]],null!=d&&(d=/.* \/Subject (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(b=b[d[1]],null!=b&&(b=b.join("\n"),c=b.substring(1,b.length-1))))));return c};Editor.extractParserError=function(b,d){var c=null,g=null!=
+b?b.getElementsByTagName("parsererror"):null;null!=g&&0<g.length&&(c=d||mxResources.get("invalidChars"),g=g[0].getElementsByTagName("div"),0<g.length&&(c=mxUtils.getTextContent(g[0])));return null!=c?mxUtils.trim(c):c};Editor.addRetryToError=function(b,d){if(null!=b){var c=null!=b.error?b.error:b;null==c.retry&&(c.retry=d)}};Editor.configure=function(b,d){if(null!=b){Editor.config=b;Editor.configVersion=b.version;Menus.prototype.defaultFonts=b.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=
+b.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=b.defaultColors||ColorDialog.prototype.defaultColors;ColorDialog.prototype.colorNames=b.colorNames||ColorDialog.prototype.colorNames;StyleFormatPanel.prototype.defaultColorSchemes=b.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=b.defaultEdgeLength||Graph.prototype.defaultEdgeLength;DrawioFile.prototype.autosaveDelay=b.autosaveDelay||DrawioFile.prototype.autosaveDelay;
+null!=b.templateFile&&(EditorUi.templateFile=b.templateFile);null!=b.styles&&(Array.isArray(b.styles)?Editor.styles=b.styles:EditorUi.debug("Configuration Error: Array expected for styles"));null!=b.globalVars&&(Editor.globalVars=b.globalVars);null!=b.compressXml&&(Editor.compressXml=b.compressXml);null!=b.includeDiagram&&(Editor.defaultIncludeDiagram=b.includeDiagram);null!=b.simpleLabels&&(Editor.simpleLabels=b.simpleLabels);null!=b.oneDriveInlinePicker&&(Editor.oneDriveInlinePicker=b.oneDriveInlinePicker);
+null!=b.darkColor&&(Editor.darkColor=b.darkColor);null!=b.lightColor&&(Editor.lightColor=b.lightColor);null!=b.settingsName&&(Editor.configurationKey="."+b.settingsName+"-configuration",Editor.settingsKey="."+b.settingsName+"-config",mxSettings.key=Editor.settingsKey);b.customFonts&&(Menus.prototype.defaultFonts=b.customFonts.concat(Menus.prototype.defaultFonts));b.customPresetColors&&(ColorDialog.prototype.presetColors=b.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=b.customColorSchemes&&
+(StyleFormatPanel.prototype.defaultColorSchemes=b.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));if(null!=b.css){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b.css));var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(c,g)}null!=b.libraries&&(Sidebar.prototype.customEntries=b.libraries);null!=b.enabledLibraries&&(Array.isArray(b.enabledLibraries)?Sidebar.prototype.enabledLibraries=b.enabledLibraries:
+EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=b.defaultLibraries&&(Sidebar.prototype.defaultEntries=b.defaultLibraries);null!=b.defaultCustomLibraries&&(Editor.defaultCustomLibraries=b.defaultCustomLibraries);null!=b.enableCustomLibraries&&(Editor.enableCustomLibraries=b.enableCustomLibraries);null!=b.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=b.defaultVertexStyle);null!=b.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=b.defaultEdgeStyle);null!=
+b.defaultPageVisible&&(Graph.prototype.defaultPageVisible=b.defaultPageVisible);null!=b.defaultGridEnabled&&(Graph.prototype.defaultGridEnabled=b.defaultGridEnabled);null!=b.zoomWheel&&(Graph.zoomWheel=b.zoomWheel);null!=b.zoomFactor&&(c=parseFloat(b.zoomFactor),!isNaN(c)&&1<c?Graph.prototype.zoomFactor=c:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=b.gridSteps&&(c=parseInt(b.gridSteps),!isNaN(c)&&0<c?mxGraphView.prototype.gridSteps=c:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));
+null!=b.pageFormat&&(c=parseInt(b.pageFormat.width),g=parseInt(b.pageFormat.height),!isNaN(c)&&0<c&&!isNaN(g)&&0<g?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,c,g),mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):EditorUi.debug("Configuration Error: {width: int, height: int} expected for pageFormat"));b.thumbWidth&&(Sidebar.prototype.thumbWidth=b.thumbWidth);b.thumbHeight&&(Sidebar.prototype.thumbHeight=b.thumbHeight);b.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml=
+b.emptyLibraryXml);b.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=b.emptyDiagramXml);b.sidebarWidth&&(EditorUi.prototype.hsplitPosition=b.sidebarWidth);b.sidebarTitles&&(Sidebar.prototype.sidebarTitles=b.sidebarTitles);b.sidebarTitleSize&&(c=parseInt(b.sidebarTitleSize),!isNaN(c)&&0<c?Sidebar.prototype.sidebarTitleSize=c:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));b.fontCss&&("string"===typeof b.fontCss?Editor.configureFontCss(b.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));
+null!=b.autosaveDelay&&(c=parseInt(b.autosaveDelay),!isNaN(c)&&0<c?DrawioFile.prototype.autosaveDelay=c:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));if(null!=b.plugins&&!d)for(App.initPluginCallback(),c=0;c<b.plugins.length;c++)mxscript(b.plugins[c]);null!=b.maxImageBytes&&(EditorUi.prototype.maxImageBytes=b.maxImageBytes);null!=b.maxImageSize&&(EditorUi.prototype.maxImageSize=b.maxImageSize)}};Editor.configureFontCss=function(b){if(null!=b){Editor.prototype.fontCss=
+b;var d=document.getElementsByTagName("script")[0];if(null!=d&&null!=d.parentNode){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b));d.parentNode.insertBefore(c,d);b=b.split("url(");for(c=1;c<b.length;c++){var g=b[c].indexOf(")"),g=Editor.trimCssUrl(b[c].substring(0,g)),e=document.createElement("link");e.setAttribute("rel","preload");e.setAttribute("href",g);e.setAttribute("as","font");e.setAttribute("crossorigin","");d.parentNode.insertBefore(e,
+d)}}}};Editor.trimCssUrl=function(b){return b.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";Editor.GUID_LENGTH=20;Editor.guid=function(b){b=null!=b?b:Editor.GUID_LENGTH;for(var d=[],c=0;c<b;c++)d.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return d.join("")};Editor.prototype.timeout=
+25E3;Editor.prototype.useForeignObjectForMath=!0;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(d){d=null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var c=d.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],g=c.getElementsByTagName("div");null!=g&&0<g.length&&(c=g[0]);throw{message:mxUtils.getTextContent(c)};
+}if("mxGraphModel"==d.nodeName){c=d.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),null!=g&&(e=new mxCodec(g.ownerDocument),e.decode(g,this.graph.getStylesheet())));else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var e=new mxCodec(g.ownerDocument);
+e.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=c;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");c=d.getAttribute("backgroundImage");null!=c?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(c)):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();
+this.graph.setShadowVisible("1"==d.getAttribute("shadow"),!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),g=0;g<c.length;g++)this.graph.addExtFont(c[g].name,c[g].url)}catch(V){console.log("ExtFonts format error: "+V.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};
+};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(b,d){b=null!=b?b:!0;var g=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&g.setAttribute("style",this.graph.currentStyle);var e=this.graph.getBackgroundImageObject(this.graph.backgroundImage,d);null!=e&&g.setAttribute("backgroundImage",JSON.stringify(e));g.setAttribute("math",this.graph.mathEnabled?"1":"0");g.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&
+0<this.graph.extFonts.length&&(e=this.graph.extFonts.map(function(b){return b.name+"^"+b.url}),g.setAttribute("extFonts",e.join("|")));return g};Editor.prototype.isDataSvg=function(b){try{var d=mxUtils.parseXml(b).documentElement.getAttribute("content");if(null!=d&&(null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var c=mxUtils.parseXml(d).documentElement;return"mxfile"==
+c.nodeName||"mxGraphModel"==c.nodeName}}catch(ea){}return!1};Editor.prototype.extractGraphModel=function(b,d,c){return Editor.extractGraphModel.apply(this,arguments)};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&
+this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};var f=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){f.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.mathJaxWebkitCss=
+"div.MathJax_SVG_Display { position: static; }\nspan.MathJax_SVG { position: static !important; }";Editor.initMath=function(b,d){if("undefined"===typeof window.MathJax){b=(null!=b?b:DRAW_MATH_URL+"/MathJax.js")+"?config=TeX-MML-AM_"+("html"==urlParams["math-output"]?"HTMLorMML":"SVG")+"-full";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(b){window.setTimeout(function(){"hidden"!=b.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,b])},0)};var c=null!=urlParams["math-font"]?decodeURIComponent(urlParams["math-font"]):
+"TeX";d=null!=d?d:{"HTML-CSS":{availableFonts:[c],imageFont:null},SVG:{font:c,useFontCache:!1},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(d);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&
+"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var g=Editor.prototype.init;Editor.prototype.init=function(){g.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,d){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var e=document.createElement("script");
+e.setAttribute("type","text/javascript");e.setAttribute("src",b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var k=document.createElement("style");k.type="text/css";k.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(k)}}catch(K){}}};Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;
var d=[];b.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(b,c,g,e){void 0!==c?d.push(c.replace(/\\'/g,"'")):void 0!==g?d.push(g.replace(/\\"/g,'"')):void 0!==e&&d.push(e);return""});/,\s*$/.test(b)&&d.push("");return d};Editor.prototype.isCorsEnabledForUrl=function(b){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||b.substring(0,window.location.origin.length)==window.location.origin)return!0;null!=urlParams.cors&&
null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(b)||"https://raw.githubusercontent.com/"===b.substring(0,34)||"https://fonts.googleapis.com/"===b.substring(0,29)||"https://fonts.gstatic.com/"===b.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var b=new mxUrlConverter;b.updateBaseUrl();var d=b.convert,c=this;b.convert=function(g){if(null!=g){var e="http://"==g.substring(0,7)||"https://"==
g.substring(0,8);e&&!navigator.onLine?g=Editor.svgBrokenImage.src:!e||g.substring(0,b.baseUrl.length)==b.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(g)?"chrome-extension://"==g.substring(0,19)||mxClient.IS_CHROMEAPP||(g=d.apply(this,arguments)):g=PROXY_URL+"?url="+encodeURIComponent(g)}return g};return b};Editor.createSvgDataUri=function(b){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(b)))};Editor.prototype.convertImageToDataUri=function(b,d){try{var c=!0,g=window.setTimeout(mxUtils.bind(this,
function(){c=!1;d(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(b))mxUtils.get(b,mxUtils.bind(this,function(b){window.clearTimeout(g);c&&d(Editor.createSvgDataUri(b.getText()))}),function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)});else{var e=new Image;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(g);if(c)try{var b=document.createElement("canvas"),k=b.getContext("2d");b.height=e.height;b.width=e.width;k.drawImage(e,0,0);
-d(b.toDataURL())}catch(na){d(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)};e.src=b}}catch(ka){d(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,d,c,g){null==g&&(g=this.createImageUrlConverter());var e=0,k=c||{};c=mxUtils.bind(this,function(c,f){for(var l=b.getElementsByTagName(c),m=0;m<l.length;m++)mxUtils.bind(this,function(c){try{if(null!=c){var l=g.convert(c.getAttribute(f));if(null!=l&&"data:"!=l.substring(0,5)){var m=
-k[l];null==m?(e++,this.convertImageToDataUri(l,function(g){null!=g&&(k[l]=g,c.setAttribute(f,g));e--;0==e&&d(b)})):c.setAttribute(f,m)}else null!=l&&c.setAttribute(f,l)}}catch(Q){}})(l[m])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,g=b.length,e,k,f;c<g;){e=b.charCodeAt(c++)&255;if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&
+d(b.toDataURL())}catch(ma){d(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)};e.src=b}}catch(ja){d(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,d,c,g){null==g&&(g=this.createImageUrlConverter());var e=0,k=c||{};c=mxUtils.bind(this,function(c,f){for(var l=b.getElementsByTagName(c),m=0;m<l.length;m++)mxUtils.bind(this,function(c){try{if(null!=c){var l=g.convert(c.getAttribute(f));if(null!=l&&"data:"!=l.substring(0,5)){var m=
+k[l];null==m?(e++,this.convertImageToDataUri(l,function(g){null!=g&&(k[l]=g,c.setAttribute(f,g));e--;0==e&&d(b)})):c.setAttribute(f,m)}else null!=l&&c.setAttribute(f,l)}}catch(P){}})(l[m])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,g=b.length,e,k,f;c<g;){e=b.charCodeAt(c++)&255;if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&
3)<<4);d+="==";break}k=b.charCodeAt(c++);if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);d+="=";break}f=b.charCodeAt(c++);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&
3)<<4|(k&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(f&192)>>6);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f&63)}return d};Editor.prototype.loadUrl=function(b,d,c,g,e,k,f,l){try{var m=!f&&(g||/(\.png)($|\?)/i.test(b)||/(\.jpe?g)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.pdf)($|\?)/i.test(b));e=null!=e?e:!0;var p=mxUtils.bind(this,function(){mxUtils.get(b,mxUtils.bind(this,function(b){if(200<=b.getStatus()&&
299>=b.getStatus()){if(null!=d){var g=b.getText();if(m){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){b=mxUtilsBinaryToArray(b.request.responseBody).toArray();for(var g=Array(b.length),e=0;e<b.length;e++)g[e]=String.fromCharCode(b[e]);g=g.join("")}k=null!=k?k:"data:image/png;base64,";g=k+Editor.base64Encode(g)}d(g)}}else null!=c&&(0==b.getStatus()?c({message:mxResources.get("accessDenied")},b):c({message:mxResources.get("error")+" "+b.getStatus()},
-b))}),function(b){null!=c&&c({message:mxResources.get("error")+" "+b.getStatus()})},m,this.timeout,function(){e&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:p})},l)});p()}catch(ha){null!=c&&c(ha)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var g=null!=b?b.lastIndexOf("/"):-1;0<=g&&(b=b.substring(0,g+1));var g=document.getElementsByTagName("base"),e=null;null!=g&&0<g.length&&(e=g[0].getAttribute("href"));
+b))}),function(b){null!=c&&c({message:mxResources.get("error")+" "+b.getStatus()})},m,this.timeout,function(){e&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:p})},l)});p()}catch(ga){null!=c&&c(ga)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var g=null!=b?b.lastIndexOf("/"):-1;0<=g&&(b=b.substring(0,g+1));var g=document.getElementsByTagName("base"),e=null;null!=g&&0<g.length&&(e=g[0].getAttribute("href"));
for(var k=1;k<c.length;k++)if(g=c[k].indexOf(")"),0<g){var f=Editor.trimCssUrl(c[k].substring(0,g));this.graph.isRelativeUrl(f)&&(f=null!=e?e+f:window.location.protocol+"//"+window.location.hostname+("/"==f.charAt(0)?"":b)+f);d.push('url("'+f+'"'+c[k].substring(g))}else d.push(c[k])}else d=[b]}return null!=d?d.join(""):null};Editor.prototype.mapFontUrl=function(b,d,c){/^https?:\/\//.test(d)&&!this.isCorsEnabledForUrl(d)&&(d=PROXY_URL+"?url="+encodeURIComponent(d));c(b,d)};Editor.prototype.embedCssFonts=
function(b,d){var c=b.split("url("),g=0;null==this.cachedFonts&&(this.cachedFonts={});var e=mxUtils.bind(this,function(){if(0==g){for(var b=[c[0]],e=1;e<c.length;e++){var k=c[e].indexOf(")");b.push('url("');b.push(this.cachedFonts[Editor.trimCssUrl(c[e].substring(0,k))]);b.push('"'+c[e].substring(k))}d(b.join(""))}});if(0<c.length){for(var k=1;k<c.length;k++){var f=c[k].indexOf(")"),l=null,m=c[k].indexOf("format(",f);0<m&&(l=Editor.trimCssUrl(c[k].substring(m+7,c[k].indexOf(")",m))));mxUtils.bind(this,
function(b){if(null==this.cachedFonts[b]){this.cachedFonts[b]=b;g++;var d="application/x-font-ttf";if("svg"==l||/(\.svg)($|\?)/i.test(b))d="image/svg+xml";else if("otf"==l||"embedded-opentype"==l||/(\.otf)($|\?)/i.test(b))d="application/x-font-opentype";else if("woff"==l||/(\.woff)($|\?)/i.test(b))d="application/font-woff";else if("woff2"==l||/(\.woff2)($|\?)/i.test(b))d="application/font-woff2";else if("eot"==l||/(\.eot)($|\?)/i.test(b))d="application/vnd.ms-fontobject";else if("sfnt"==l||/(\.sfnt)($|\?)/i.test(b))d=
@@ -3256,9 +3256,9 @@ Editor.prototype.createGoogleFontCache=function(){var b={},d;for(d in Graph.font
0<g.indexOf("MathJax")&&b[0].appendChild(d[c].cloneNode(!0))}};Editor.prototype.addFontCss=function(b,d){d=null!=d?d:this.absoluteCssFonts(this.fontCss);if(null!=d){var c=b.getElementsByTagName("defs"),g=b.ownerDocument;0==c.length?(c=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"defs"):g.createElement("defs"),null!=b.firstChild?b.insertBefore(c,b.firstChild):b.appendChild(c)):c=c[0];g=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"style"):g.createElement("style");g.setAttribute("type",
"text/css");mxUtils.setTextContent(g,d);c.appendChild(g)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,d,c){var g=mxClient.IS_FF?8192:16384;return Math.min(c,Math.min(g/b,g/d))};Editor.prototype.exportToCanvas=function(b,d,c,g,e,k,f,l,m,p,u,n,t,v,y,z,q,B){try{k=null!=k?k:!0;f=null!=f?f:!0;n=null!=n?n:this.graph;t=null!=t?t:0;var x=m?null:n.background;x==mxConstants.NONE&&(x=null);null==x&&(x=g);null==
x&&0==m&&(x=z?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(n.getSvg(null,null,t,v,null,f,null,null,null,p,null,z,q,B),mxUtils.bind(this,function(c){try{var g=new Image;g.onload=mxUtils.bind(this,function(){try{var f=function(){mxClient.IS_SF?window.setTimeout(function(){v.drawImage(g,0,0);b(m,c)},0):(v.drawImage(g,0,0),b(m,c))},m=document.createElement("canvas"),p=parseInt(c.getAttribute("width")),u=parseInt(c.getAttribute("height"));l=null!=l?l:1;null!=d&&(l=k?Math.min(1,Math.min(3*
-d/(4*u),d/p)):d/p);l=this.getMaxCanvasScale(p,u,l);p=Math.ceil(l*p);u=Math.ceil(l*u);m.setAttribute("width",p);m.setAttribute("height",u);var v=m.getContext("2d");null!=x&&(v.beginPath(),v.rect(0,0,p,u),v.fillStyle=x,v.fill());1!=l&&v.scale(l,l);if(y){var z=n.view,q=z.scale;z.scale=1;var C=btoa(unescape(encodeURIComponent(z.createSvgGrid(z.gridColor))));z.scale=q;var C="data:image/svg+xml;base64,"+C,B=n.gridSize*z.gridSteps*l,K=n.getGraphBounds(),M=z.translate.x*q,J=z.translate.y*q,G=M+(K.x-M)/q-
-t,P=J+(K.y-J)/q-t,N=new Image;N.onload=function(){try{for(var b=-Math.round(B-mxUtils.mod((M-G)*l,B)),d=-Math.round(B-mxUtils.mod((J-P)*l,B));b<p;b+=B)for(var c=d;c<u;c+=B)v.drawImage(N,b/l,c/l);f()}catch(Ea){null!=e&&e(Ea)}};N.onerror=function(b){null!=e&&e(b)};N.src=C}else f()}catch(Ca){null!=e&&e(Ca)}});g.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(c);this.graph.mathEnabled&&this.addMathCss(c);var f=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,
-this.resolvedFontCss),g.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(Z){null!=e&&e(Z)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(f)}catch(la){null!=e&&e(la)}}))}catch(Z){null!=e&&e(Z)}}),c,u)}catch(S){null!=e&&e(S)}};Editor.crcTable=[];for(var n=0;256>n;n++)for(var l=n,q=0;8>q;q++)l=1==(l&1)?3988292384^l>>>1:l>>>1,Editor.crcTable[n]=l;Editor.updateCRC=function(b,d,c,g){for(var e=0;e<g;e++)b=Editor.crcTable[(b^d.charCodeAt(c+e))&255]^
+d/(4*u),d/p)):d/p);l=this.getMaxCanvasScale(p,u,l);p=Math.ceil(l*p);u=Math.ceil(l*u);m.setAttribute("width",p);m.setAttribute("height",u);var v=m.getContext("2d");null!=x&&(v.beginPath(),v.rect(0,0,p,u),v.fillStyle=x,v.fill());1!=l&&v.scale(l,l);if(y){var z=n.view,q=z.scale;z.scale=1;var C=btoa(unescape(encodeURIComponent(z.createSvgGrid(z.gridColor))));z.scale=q;var C="data:image/svg+xml;base64,"+C,B=n.gridSize*z.gridSteps*l,K=n.getGraphBounds(),M=z.translate.x*q,J=z.translate.y*q,E=M+(K.x-M)/q-
+t,R=J+(K.y-J)/q-t,N=new Image;N.onload=function(){try{for(var b=-Math.round(B-mxUtils.mod((M-E)*l,B)),d=-Math.round(B-mxUtils.mod((J-R)*l,B));b<p;b+=B)for(var c=d;c<u;c+=B)v.drawImage(N,b/l,c/l);f()}catch(Ea){null!=e&&e(Ea)}};N.onerror=function(b){null!=e&&e(b)};N.src=C}else f()}catch(Ca){null!=e&&e(Ca)}});g.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(c);this.graph.mathEnabled&&this.addMathCss(c);var f=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,
+this.resolvedFontCss),g.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(Z){null!=e&&e(Z)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(f)}catch(ka){null!=e&&e(ka)}}))}catch(Z){null!=e&&e(Z)}}),c,u)}catch(S){null!=e&&e(S)}};Editor.crcTable=[];for(var n=0;256>n;n++)for(var l=n,q=0;8>q;q++)l=1==(l&1)?3988292384^l>>>1:l>>>1,Editor.crcTable[n]=l;Editor.updateCRC=function(b,d,c,g){for(var e=0;e<g;e++)b=Editor.crcTable[(b^d.charCodeAt(c+e))&255]^
b>>>8;return b};Editor.crc32=function(b){for(var d=-1,c=0;c<b.length;c++)d=d>>>8^Editor.crcTable[(d^b.charCodeAt(c))&255];return(d^-1)>>>0};Editor.writeGraphModelToPng=function(b,d,c,g,e){function k(b,d){var c=m;m+=d;return b.substring(c,m)}function f(b){b=k(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function l(b){return String.fromCharCode(b>>24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,!0);
var m=0;if(k(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(k(b,4),"IHDR"!=k(b,4))null!=e&&e();else{k(b,17);e=b.substring(0,m);do{var p=f(b);if("IDAT"==k(b,4)){e=b.substring(0,m-8);"pHYs"==d&&"dpi"==c?(c=Math.round(g/.0254),c=l(c)+l(c)+String.fromCharCode(1)):c=c+String.fromCharCode(0)+("zTXt"==d?String.fromCharCode(0):"")+g;g=4294967295;g=Editor.updateCRC(g,d,0,4);g=Editor.updateCRC(g,c,0,c.length);e+=l(c.length)+d+c+l(g^4294967295);e+=b.substring(m-8,
b.length);break}e+=b.substring(m-8,m-4+p);k(b,p);k(b,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(b,c){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var k=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){k.apply(this,
@@ -3291,7 +3291,7 @@ stroke:"#3700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"
font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf",gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},
{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=
function(b,d,c){if(null!=d){var g=function(b){if(null!=b)if(c)for(var g=0;g<b.length;g++)d[b[g].name]=b[g];else for(var e in d){for(var k=!1,g=0;g<b.length;g++)if(b[g].name==e&&b[g].type==d[e].type){k=!0;break}k||delete d[e]}},e=this.editorUi.editor.graph.view.getState(b);null!=e&&null!=e.shape&&(e.shape.commonCustomPropAdded||(e.shape.commonCustomPropAdded=!0,e.shape.customProperties=e.shape.customProperties||[],e.cell.vertex?Array.prototype.push.apply(e.shape.customProperties,Editor.commonVertexProperties):
-Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),g(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{g(JSON.parse(b))}catch(ka){}}};var v=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.editorUi.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));v.apply(this,arguments);if(Editor.enableCustomProperties){for(var d=
+Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),g(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{g(JSON.parse(b))}catch(ja){}}};var v=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.editorUi.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));v.apply(this,arguments);if(Editor.enableCustomProperties){for(var d=
{},c=b.vertices,g=b.edges,e=0;e<c.length;e++)this.findCommonProperties(c[e],d,0==e);for(e=0;e<g.length;e++)this.findCommonProperties(g[e],d,0==c.length&&0==e);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(d).length&&this.container.appendChild(this.addProperties(this.createPanel(),d,b))}};var t=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(b){this.addActions(b,["copyStyle","pasteStyle"]);return t.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=
!0;StyleFormatPanel.prototype.addProperties=function(b,d,c){function g(b,d,c,g){n.getModel().beginUpdate();try{var e=[],k=[];if(null!=c.index){for(var f=[],l=c.parentRow.nextSibling;l&&l.getAttribute("data-pName")==b;)f.push(l.getAttribute("data-pValue")),l=l.nextSibling;c.index<f.length?null!=g?f.splice(g,1):f[c.index]=d:f.push(d);null!=c.size&&f.length>c.size&&(f=f.slice(0,c.size));d=f.join(",");null!=c.countProperty&&(n.setCellStyles(c.countProperty,f.length,n.getSelectionCells()),e.push(c.countProperty),
k.push(f.length))}n.setCellStyles(b,d,n.getSelectionCells());e.push(b);k.push(d);if(null!=c.dependentProps)for(b=0;b<c.dependentProps.length;b++){var m=c.dependentPropsDefVal[b],p=c.dependentPropsVals[b];if(p.length>d)p=p.slice(0,d);else for(var t=p.length;t<d;t++)p.push(m);p=p.join(",");n.setCellStyles(c.dependentProps[b],p,n.getSelectionCells());e.push(c.dependentProps[b]);k.push(p)}if("function"==typeof c.onChange)c.onChange(n,d);u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",
@@ -3306,8 +3306,8 @@ q[t],x.val==c){mxUtils.write(z,mxResources.get(x.dispName,null,x.dispName));brea
b.appendChild(f);mxEvent.addListener(f,"keypress",function(b){13==b.keyCode&&k()});f.focus();mxEvent.addListener(f,"blur",function(){k()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(u,function(b){g(d,"",p,p.index);mxEvent.consume(b)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",z.appendChild(t));y.appendChild(z);return y}var u=this,n=this.editorUi.editor.graph,t=[];b.style.position="relative";b.style.padding="0";var v=document.createElement("table");
v.className="geProperties";v.style.whiteSpace="nowrap";v.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;z.style.verticalAlign="middle";y.appendChild(z);mxUtils.write(y,mxResources.get("property"));x.style.cursor="pointer";var q=function(){var d=v.querySelectorAll(".gePropNonHeaderRow"),c;if(u.editorUi.propertiesCollapsed){z.src=
Sidebar.prototype.collapsedImage;c="none";for(var g=b.childNodes.length-1;0<=g;g--)try{var e=b.childNodes[g],k=e.nodeName.toUpperCase();"INPUT"!=k&&"SELECT"!=k||b.removeChild(e)}catch(Ga){}}else z.src=Sidebar.prototype.expandedImage,c="";for(g=0;g<d.length;g++)d[g].style.display=c};mxEvent.addListener(x,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;q()});x.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");
-x.appendChild(y);v.appendChild(x);var B=!1,C=!1,x=null;1==c.vertices.length&&0==c.edges.length?x=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(x=c.edges[0].id);null!=x&&v.appendChild(p("id",mxUtils.htmlEntities(x),{dispName:"ID",type:"readOnly"},!0,!1));for(var M in d)if(x=d[M],"function"!=typeof x.isVisible||x.isVisible(c,this)){var G=null!=c.style[M]?mxUtils.htmlEntities(c.style[M]+""):null!=x.getDefaultValue?x.getDefaultValue(c,this):x.defVal;if("separator"==x.type)C=!C;else{if("staticArr"==
-x.type)x.size=parseInt(c.style[x.sizeProperty]||d[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var P=x.dependentProps,J=[],N=[],y=0;y<P.length;y++){var H=c.style[P[y]];N.push(d[P[y]].subDefVal);J.push(null!=H?H.split(","):[])}x.dependentPropsDefVal=N;x.dependentPropsVals=J}v.appendChild(p(M,G,x,B,C));B=!B}}for(y=0;y<t.length;y++)for(x=t[y],d=x.parentRow,c=0;c<x.values.length;c++)M=p(x.name,x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:c,defVal:x.defVal,
+x.appendChild(y);v.appendChild(x);var B=!1,C=!1,x=null;1==c.vertices.length&&0==c.edges.length?x=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(x=c.edges[0].id);null!=x&&v.appendChild(p("id",mxUtils.htmlEntities(x),{dispName:"ID",type:"readOnly"},!0,!1));for(var M in d)if(x=d[M],"function"!=typeof x.isVisible||x.isVisible(c,this)){var E=null!=c.style[M]?mxUtils.htmlEntities(c.style[M]+""):null!=x.getDefaultValue?x.getDefaultValue(c,this):x.defVal;if("separator"==x.type)C=!C;else{if("staticArr"==
+x.type)x.size=parseInt(c.style[x.sizeProperty]||d[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var R=x.dependentProps,J=[],N=[],y=0;y<R.length;y++){var H=c.style[R[y]];N.push(d[R[y]].subDefVal);J.push(null!=H?H.split(","):[])}x.dependentPropsDefVal=N;x.dependentPropsVals=J}v.appendChild(p(M,E,x,B,C));B=!B}}for(y=0;y<t.length;y++)for(x=t[y],d=x.parentRow,c=0;c<x.values.length;c++)M=p(x.name,x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:c,defVal:x.defVal,
countProperty:x.countProperty,size:x.size},0==c%2,x.flipBkg),d.parentNode.insertBefore(M,d.nextSibling),d=M;b.appendChild(v);q();return b};StyleFormatPanel.prototype.addStyles=function(b){function d(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var c=this.editorUi,g=c.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft=
"16px";b.style.paddingBottom="6px";b.style.position="relative";b.appendChild(e);var 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(" "),f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.position="relative";f.style.textAlign="center";f.style.width="210px";for(var l=[],m=0;m<this.defaultColorSchemes.length;m++){var p=document.createElement("div");p.style.display=
"inline-block";p.style.width="6px";p.style.height="6px";p.style.marginLeft="4px";p.style.marginRight="3px";p.style.borderRadius="3px";p.style.cursor="pointer";p.style.background="transparent";p.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(p,"click",mxUtils.bind(this,function(){u(b)}))})(m);l.push(p);f.appendChild(p)}var u=mxUtils.bind(this,function(b){null!=l[b]&&(null!=this.format.currentScheme&&null!=l[this.format.currentScheme]&&(l[this.format.currentScheme].style.background=
@@ -3341,19 +3341,19 @@ u.style.overflow="hidden";u.style.whiteSpace="nowrap";u.style.textOverflow="elli
"100%";var p=document.createElement("div");p.style.boxSizing="border-box";p.style.borderRadius="4px";p.style.userSelect="none";p.style.overflow="auto";p.style.position="absolute";p.style.left="10px";p.style.right="10px";p.style.top="10px";p.style.border=f.isEnabled()?"1px solid #808080":"none";p.style.bottom=f.isEnabled()?"48px":"10px";m.appendChild(p);var u=mxUtils.button(mxResources.get("reset"),function(b){f.hiddenTags=[];mxEvent.isShiftDown(b)||(l=f.hiddenTags.slice());g();f.refresh()});u.setAttribute("title",
mxResources.get("reset"));u.className="geBtn";u.style.margin="0 4px 0 0";var n=mxUtils.button(mxResources.get("add"),function(){null!=c&&c(l,function(b){l=b;t()})});n.setAttribute("title",mxResources.get("add"));n.className="geBtn";n.style.margin="0";f.addListener(mxEvent.ROOT,function(){l=f.hiddenTags.slice()});var t=mxUtils.bind(this,function(d,c){if(b()){for(var g=f.getAllTags(),e=0;e<g.length;e++)0>mxUtils.indexOf(l,g[e])&&l.push(g[e]);l.sort();f.isSelectionEmpty()?k(l):k(l,f.getCommonTagsForCells(f.getSelectionCells()))}});
f.selectionModel.addListener(mxEvent.CHANGE,t);f.model.addListener(mxEvent.CHANGE,t);f.addListener(mxEvent.REFRESH,t);var v=document.createElement("div");v.style.boxSizing="border-box";v.style.whiteSpace="nowrap";v.style.position="absolute";v.style.overflow="hidden";v.style.bottom="0px";v.style.height="42px";v.style.right="10px";v.style.left="10px";f.isEnabled()&&(v.appendChild(u),v.appendChild(n),m.appendChild(v));return{div:m,refresh:t}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,
-b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");d=Graph.getFontUrl(b,d);for(var g=0;g<c.length;g++)c[g].getAttribute("face")==b&&c[g].getAttribute("data-font-src")!=d&&c[g].setAttribute("data-font-src",d)}};var F=Graph.prototype.isFastZoomEnabled;
-Graph.prototype.isFastZoomEnabled=function(){return F.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var d in b)this.globalVars[d]=b[d]}catch(J){null!=window.console&&console.log("Error in vars URL parameter: "+J)}};Graph.prototype.getExportVariables=
-function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var E=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var d=E.apply(this,arguments);null==d&&null!=this.globalVars&&(d=this.globalVars[b]);return d};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};
+b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");d=Graph.getFontUrl(b,d);for(var g=0;g<c.length;g++)c[g].getAttribute("face")==b&&c[g].getAttribute("data-font-src")!=d&&c[g].setAttribute("data-font-src",d)}};var G=Graph.prototype.isFastZoomEnabled;
+Graph.prototype.isFastZoomEnabled=function(){return G.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var d in b)this.globalVars[d]=b[d]}catch(J){null!=window.console&&console.log("Error in vars URL parameter: "+J)}};Graph.prototype.getExportVariables=
+function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var F=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var d=F.apply(this,arguments);null==d&&null!=this.globalVars&&(d=this.globalVars[b]);return d};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};
var O=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,d,c,g,e,k,f,l,m,p,u,n,t,v){var x=null,y=null,z=null;n||null==this.themes||"darkTheme"!=this.defaultThemeName||(x=this.stylesheet,y=this.shapeForegroundColor,z=this.shapeBackgroundColor,this.shapeForegroundColor="darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var q=O.apply(this,
-arguments),B=this.getCustomFonts();if(u&&0<B.length){var M=q.ownerDocument,C=null!=M.createElementNS?M.createElementNS(mxConstants.NS_SVG,"style"):M.createElement("style");null!=M.setAttributeNS?C.setAttributeNS("type","text/css"):C.setAttribute("type","text/css");for(var K="",G="",P=0;P<B.length;P++){var N=B[P].name,H=B[P].url;Graph.isCssFontUrl(H)?K+="@import url("+H+");\n":G+='@font-face {\nfont-family: "'+N+'";\nsrc: url("'+H+'");\n}\n'}C.appendChild(M.createTextNode(K+G));q.getElementsByTagName("defs")[0].appendChild(C)}null!=
+arguments),B=this.getCustomFonts();if(u&&0<B.length){var M=q.ownerDocument,C=null!=M.createElementNS?M.createElementNS(mxConstants.NS_SVG,"style"):M.createElement("style");null!=M.setAttributeNS?C.setAttributeNS("type","text/css"):C.setAttribute("type","text/css");for(var K="",E="",R=0;R<B.length;R++){var N=B[R].name,H=B[R].url;Graph.isCssFontUrl(H)?K+="@import url("+H+");\n":E+='@font-face {\nfont-family: "'+N+'";\nsrc: url("'+H+'");\n}\n'}C.appendChild(M.createTextNode(K+E));q.getElementsByTagName("defs")[0].appendChild(C)}null!=
x&&(this.shapeBackgroundColor=z,this.shapeForegroundColor=y,this.stylesheet=x,this.refresh());return q};var B=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=B.apply(this,arguments);if(this.mathEnabled){var d=b.drawText;b.drawText=function(b,c){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var g=b.text.getContentNode();if(null!=g){g=g.cloneNode(!0);if(g.getElementsByTagNameNS)for(var e=
-g.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=g.innerHTML&&(e=b.text.value,b.text.value=g.innerHTML,d.apply(this,arguments),b.text.value=e)}}else d.apply(this,arguments)}}return b};var G=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){G.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,
+g.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=g.innerHTML&&(e=b.text.value,b.text.value=g.innerHTML,d.apply(this,arguments),b.text.value=e)}}else d.apply(this,arguments)}}return b};var E=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){E.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,
b.text,b.secondLabel,b.control]};var H=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){H.apply(this,arguments);this.enumerationState=0};var L=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=function(b){null!=b.shape&&this.redrawEnumerationState(b);return L.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(b){b=decodeURIComponent(mxUtils.getValue(b.style,"enumerateValue",""));""==b&&(b=++this.enumerationState);
return'<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(b)+"</div>"};mxGraphView.prototype.redrawEnumerationState=function(b){var d="1"==mxUtils.getValue(b.style,"enumerate",0);d&&null==b.secondLabel?(b.secondLabel=new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),b.secondLabel.size=12,b.secondLabel.state=b,b.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,this.graph.cellRenderer.initializeLabel(b,b.secondLabel)):
d||null==b.secondLabel||(b.secondLabel.destroy(),b.secondLabel=null);d=b.secondLabel;if(null!=d){var c=b.view.scale,g=this.createEnumerationValue(b);b=this.graph.model.isVertex(b.cell)?new mxRectangle(b.x+b.width-4*c,b.y+4*c,0,0):mxRectangle.fromPoint(b.view.getPoint(b));d.bounds.equals(b)&&d.value==g&&d.scale==c||(d.bounds=b,d.value=g,d.scale=c,d.redraw())}};var N=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){N.apply(this,arguments);if(mxClient.IS_GC&&
null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),
this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};var M=Graph.prototype.refresh;Graph.prototype.refresh=function(){M.apply(this,arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),
-this.view.validateBackgroundImage())};var P=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){P.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),
+this.view.validateBackgroundImage())};var R=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){R.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),
null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var c=!1,g=0,e=0,k=mxUtils.bind(this,function(){c||(c=!0,this.model.beginUpdate())}),f=mxUtils.bind(this,function(){c&&(c=!1,this.model.endUpdate())}),l=mxUtils.bind(this,function(){0<g&&g--;0==g&&m()}),m=mxUtils.bind(this,function(){if(e<b.length){var c=this.stoppingCustomActions,p=b[e++],u=[];if(null!=p.open)if(f(),this.isCustomLink(p.open)){if(!this.customLinkClicked(p.open))return}else this.openLink(p.open);
null==p.wait||c||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;l()}),g++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=p.wait?parseInt(p.wait):1E3),f());null!=p.opacity&&null!=p.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(p.opacity,!0)),p.opacity.value);null!=p.fadeIn&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeIn,!0)),0,1,l,c?0:
p.fadeIn.delay));null!=p.fadeOut&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeOut,!0)),1,0,l,c?0:p.fadeOut.delay));null!=p.wipeIn&&(u=u.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeIn,!0),!0)));null!=p.wipeOut&&(u=u.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeOut,!0),!1)));null!=p.toggle&&(k(),this.toggleCells(this.getCellsForAction(p.toggle,!0)));if(null!=p.show){k();var n=this.getCellsForAction(p.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(n),
@@ -3361,9 +3361,9 @@ p.fadeIn.delay));null!=p.fadeOut&&(g++,Graph.fadeNodes(this.getNodesForCells(thi
this.isEnabled()&&(n=this.getCellsForAction(p.select),this.setSelectionCells(n));null!=p.highlight&&(n=this.getCellsForAction(p.highlight),this.highlightCells(n,p.highlight.color,p.highlight.duration,p.highlight.opacity));null!=p.scroll&&(n=this.getCellsForAction(p.scroll));null!=p.viewbox&&this.fitWindow(p.viewbox,p.viewbox.border);0<n.length&&this.scrollCellToVisible(n[0]);if(null!=p.tags){n=[];null!=p.tags.hidden&&(n=n.concat(p.tags.hidden));if(null!=p.tags.visible)for(var t=this.getAllTags(),
v=0;v<t.length;v++)0>mxUtils.indexOf(p.tags.visible,t[v])&&0>mxUtils.indexOf(n,t[v])&&n.push(t[v]);this.hiddenTags=n;this.refresh()}0<u.length&&(g++,this.executeAnimations(u,l,c?1:p.steps,c?0:p.delay));0==g?m():f()}else this.stoppingCustomActions=this.executingCustomActions=!1,f(),null!=d&&d()});m()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,d){var c=this.getLinkForCell(d);null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(d,this.updateCustomLink(b,c));if(this.isHtmlLabel(d)){var g=
document.createElement("div");g.innerHTML=this.sanitizeHtml(this.getLabel(d));for(var e=g.getElementsByTagName("a"),k=!1,f=0;f<e.length;f++)c=e[f].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(e[f].setAttribute("href",this.updateCustomLink(b,c)),k=!0);k&&this.labelChanged(d,g.innerHTML)}};Graph.prototype.updateCustomLink=function(b,d){if("data:action/json,"==d.substring(0,17))try{var c=JSON.parse(d.substring(17));null!=c.actions&&(this.updateCustomLinkActions(b,c.actions),
-d="data:action/json,"+JSON.stringify(c))}catch(X){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<d.length;c++){var g=d[c],e;for(e in g)this.updateCustomLinkAction(b,g[e],"cells"),this.updateCustomLinkAction(b,g[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,d,c){if(null!=d&&null!=d[c]){for(var g=[],e=0;e<d[c].length;e++)if("*"==d[c][e])g.push(d[c][e]);else{var k=b[d[c][e]];null!=k?""!=k&&g.push(k):g.push(d[c][e])}d[c]=g}};Graph.prototype.getCellsForAction=
-function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var g=[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&g.push(c[e]);c=g}return c};Graph.prototype.getCellsById=function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==b[c])var g=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=g},g));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var V=Graph.prototype.isCellVisible;
-Graph.prototype.isCellVisible=function(b){return V.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,g){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());
+d="data:action/json,"+JSON.stringify(c))}catch(ea){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<d.length;c++){var g=d[c],e;for(e in g)this.updateCustomLinkAction(b,g[e],"cells"),this.updateCustomLinkAction(b,g[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,d,c){if(null!=d&&null!=d[c]){for(var g=[],e=0;e<d[c].length;e++)if("*"==d[c][e])g.push(d[c][e]);else{var k=b[d[c][e]];null!=k?""!=k&&g.push(k):g.push(d[c][e])}d[c]=g}};Graph.prototype.getCellsForAction=
+function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var g=[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&g.push(c[e]);c=g}return c};Graph.prototype.getCellsById=function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==b[c])var g=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=g},g));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var W=Graph.prototype.isCellVisible;
+Graph.prototype.isCellVisible=function(b){return W.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,g){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());
for(var k=0,f={},l=0;l<b.length;l++)0<b[l].length&&(f[b[l]]=!0,k++);for(l=0;l<d.length;l++)if(c&&this.model.getParent(d[l])==this.model.root||this.model.isVertex(d[l])||this.model.isEdge(d[l])){var m=this.getTagsForCell(d[l]),p=!1;if(0<m.length&&(m=m.split(" "),m.length>=b.length)){for(var u=p=0;u<m.length&&p<k;u++)null!=f[m[u]]&&p++;p=p==k}p&&(1!=g||this.isCellVisible(d[l]))&&e.push(d[l])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};
Graph.prototype.getCommonTagsForCells=function(b){for(var d=null,c=[],g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]),c=[];if(0<e.length){for(var e=e.split(" "),k={},f=0;f<e.length;f++)if(null==d||null!=d[e[f]])k[e[f]]=!0,c.push(e[f]);d=k}else return[]}return c};Graph.prototype.getTagsForCells=function(b){for(var d=[],c={},g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]);if(0<e.length)for(var e=e.split(" "),k=0;k<e.length;k++)null==c[e[k]]&&(c[e[k]]=!0,d.push(e[k]))}return d};Graph.prototype.getTagsForCell=
function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){for(var g=this.getTagsForCell(b[c]),e=g.split(" "),k=!1,f=0;f<d.length;f++){var l=mxUtils.trim(d[f]);""!=l&&0>mxUtils.indexOf(e,l)&&(g=0<g.length?g+" "+l:l,k=!0)}k&&this.setAttributeForCell(b[c],"tags",g)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();
@@ -3385,32 +3385,32 @@ STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[S
STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.ibm=[SHAPES_PATH+"/mxIBM.js",STENCIL_PATH+"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];
mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=
[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+
-"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var W=mxMarker.createMarker;mxMarker.createMarker=
-function(b,d,c,g,e,k,f,l,m,p){if(null!=c&&null==mxMarker.markers[c]){var u=this.getPackageForType(c);null!=u&&mxStencilRegistry.getStencil(u)}return W.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){v.value=Math.max(1,Math.min(l,Math.max(parseInt(v.value),parseInt(t.value))));t.value=Math.max(1,Math.min(l,Math.min(parseInt(v.value),parseInt(t.value))))}function g(d){function c(d,c,k){var f=d.useCssTransforms,l=d.currentTranslate,m=d.currentScale,p=d.view.translate,u=
-d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=1,d.view.translate=new mxPoint(0,0),d.view.scale=1);var n=d.getGraphBounds(),t=0,v=0,y=E.get(),z=1/d.pageScale,B=x.checked;if(B)var z=parseInt(D.value),M=parseInt(ga.value),z=Math.min(y.height*M/(n.height/d.view.scale),y.width*z/(n.width/d.view.scale));else z=parseInt(q.value)/(100*d.pageScale),isNaN(z)&&(g=1/d.pageScale,q.value="100 %");y=mxRectangle.fromRectangle(y);y.width=Math.ceil(y.width*
-g);y.height=Math.ceil(y.height*g);z*=g;!B&&d.pageVisible?(n=d.getPageLayout(),t-=n.x*y.width,v-=n.y*y.height):B=!0;if(null==c){c=PrintDialog.createPrintPreview(d,z,y,0,t,v,B);c.pageSelector=!1;c.mathEnabled=!1;t=b.getCurrentFile();null!=t&&(c.title=t.getTitle());var P=c.writeHead;c.writeHead=function(c){P.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),
+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var X=mxMarker.createMarker;mxMarker.createMarker=
+function(b,d,c,g,e,k,f,l,m,p){if(null!=c&&null==mxMarker.markers[c]){var u=this.getPackageForType(c);null!=u&&mxStencilRegistry.getStencil(u)}return X.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){v.value=Math.max(1,Math.min(l,Math.max(parseInt(v.value),parseInt(t.value))));t.value=Math.max(1,Math.min(l,Math.min(parseInt(v.value),parseInt(t.value))))}function g(d){function c(d,c,k){var f=d.useCssTransforms,l=d.currentTranslate,m=d.currentScale,p=d.view.translate,u=
+d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=1,d.view.translate=new mxPoint(0,0),d.view.scale=1);var n=d.getGraphBounds(),t=0,v=0,y=F.get(),z=1/d.pageScale,B=x.checked;if(B)var z=parseInt(D.value),M=parseInt(fa.value),z=Math.min(y.height*M/(n.height/d.view.scale),y.width*z/(n.width/d.view.scale));else z=parseInt(q.value)/(100*d.pageScale),isNaN(z)&&(g=1/d.pageScale,q.value="100 %");y=mxRectangle.fromRectangle(y);y.width=Math.ceil(y.width*
+g);y.height=Math.ceil(y.height*g);z*=g;!B&&d.pageVisible?(n=d.getPageLayout(),t-=n.x*y.width,v-=n.y*y.height):B=!0;if(null==c){c=PrintDialog.createPrintPreview(d,z,y,0,t,v,B);c.pageSelector=!1;c.mathEnabled=!1;t=b.getCurrentFile();null!=t&&(c.title=t.getTitle());var E=c.writeHead;c.writeHead=function(c){E.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),
c.writeln("@media print {"),c.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),c.writeln("}"),c.writeln("</style>"));null!=b.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(b.editor.fontCss),c.writeln("</style>"));for(var g=d.getCustomFonts(),e=0;e<g.length;e++){var k=g[e].name,f=g[e].url;Graph.isCssFontUrl(f)?c.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(f)+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\nfont-family: "'+
-mxUtils.htmlEntities(k)+'";\nsrc: url("'+mxUtils.htmlEntities(f)+'");\n}'),c.writeln("</style>"))}};if("undefined"!==typeof MathJax){var G=c.renderPage;c.renderPage=function(d,c,g,e,k,f){var l=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var m=G.apply(this,arguments);mxClient.NO_FO=l;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:m.className="geDisableMathJax";return m}}t=null;v=e.enableFlowAnimation;e.enableFlowAnimation=
+mxUtils.htmlEntities(k)+'";\nsrc: url("'+mxUtils.htmlEntities(f)+'");\n}'),c.writeln("</style>"))}};if("undefined"!==typeof MathJax){var R=c.renderPage;c.renderPage=function(d,c,g,e,k,f){var l=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var m=R.apply(this,arguments);mxClient.NO_FO=l;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:m.className="geDisableMathJax";return m}}t=null;v=e.enableFlowAnimation;e.enableFlowAnimation=
!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(t=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());c.open(null,null,k,!0);e.enableFlowAnimation=v;null!=t&&(e.stylesheet=t,e.refresh())}else{y=d.background;if(null==y||""==y||y==mxConstants.NONE)y="#ffffff";c.backgroundColor=y;c.autoOrigin=B;c.appendGraph(d,z,t,v,k,!0);k=d.getCustomFonts();if(null!=c.wnd)for(t=0;t<k.length;t++)v=k[t].name,B=k[t].url,Graph.isCssFontUrl(B)?c.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(B)+
'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),c.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(v)+'";\nsrc: url("'+mxUtils.htmlEntities(B)+'");\n}'),c.wnd.document.writeln("</style>"))}f&&(d.useCssTransforms=f,d.currentTranslate=l,d.currentScale=m,d.view.translate=p,d.view.scale=u);return c}var g=parseInt(C.value)/100;isNaN(g)&&(g=1,C.value="100 %");var g=.75*g,k=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(k=e.stylesheet,
-e.stylesheet=e.getDefaultStylesheet(),e.refresh());var f=t.value,l=v.value,p=!u.checked,n=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,u.checked,f,l,x.checked,D.value,ga.value,parseInt(q.value)/100,parseInt(C.value)/100,E.get());else{p&&(p=f==m&&l==m);if(!p&&null!=b.pages&&b.pages.length){var y=0,p=b.pages.length-1;u.checked||(y=parseInt(f)-1,p=parseInt(l)-1);for(var z=y;z<=p;z++){var B=b.pages[z],f=B==b.currentPage?e:null;if(null==f){var f=b.createTemporaryGraph(e.stylesheet),l=!0,
-y=!1,M=null,P=null;null==B.viewState&&null==B.root&&b.updatePageRoot(B);null!=B.viewState&&(l=B.viewState.pageVisible,y=B.viewState.mathEnabled,M=B.viewState.background,P=B.viewState.backgroundImage,f.extFonts=B.viewState.extFonts);f.background=M;f.backgroundImage=null!=P?new mxImage(P.src,P.width,P.height):null;f.pageVisible=l;f.mathEnabled=y;var G=f.getGlobalVariable;f.getGlobalVariable=function(d){return"page"==d?B.getName():"pagenumber"==d?z+1:"pagecount"==d?null!=b.pages?b.pages.length:1:G.apply(this,
+e.stylesheet=e.getDefaultStylesheet(),e.refresh());var f=t.value,l=v.value,p=!u.checked,n=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,u.checked,f,l,x.checked,D.value,fa.value,parseInt(q.value)/100,parseInt(C.value)/100,F.get());else{p&&(p=f==m&&l==m);if(!p&&null!=b.pages&&b.pages.length){var y=0,p=b.pages.length-1;u.checked||(y=parseInt(f)-1,p=parseInt(l)-1);for(var z=y;z<=p;z++){var B=b.pages[z],f=B==b.currentPage?e:null;if(null==f){var f=b.createTemporaryGraph(e.stylesheet),l=!0,
+y=!1,M=null,E=null;null==B.viewState&&null==B.root&&b.updatePageRoot(B);null!=B.viewState&&(l=B.viewState.pageVisible,y=B.viewState.mathEnabled,M=B.viewState.background,E=B.viewState.backgroundImage,f.extFonts=B.viewState.extFonts);f.background=M;f.backgroundImage=null!=E?new mxImage(E.src,E.width,E.height):null;f.pageVisible=l;f.mathEnabled=y;var R=f.getGlobalVariable;f.getGlobalVariable=function(d){return"page"==d?B.getName():"pagenumber"==d?z+1:"pagecount"==d?null!=b.pages?b.pages.length:1:R.apply(this,
arguments)};document.body.appendChild(f.container);b.updatePageRoot(B);f.model.setRoot(B.root)}n=c(f,n,z!=p);f!=e&&f.container.parentNode.removeChild(f.container)}}else n=c(e);null==n?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(n.mathEnabled&&(p=n.wnd.document,d&&(n.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),n.closeDocument(),!n.mathEnabled&&d&&PrintDialog.printPreview(n));null!=k&&(e.stylesheet=
k,e.refresh())}}var e=b.editor.graph,k=document.createElement("div"),f=document.createElement("h3");f.style.width="100%";f.style.textAlign="center";f.style.marginTop="0px";mxUtils.write(f,d||mxResources.get("print"));k.appendChild(f);var l=1,m=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var u=document.createElement("input");u.style.cssText="margin-right:8px;margin-bottom:8px;";u.setAttribute("value","all");u.setAttribute("type",
"radio");u.setAttribute("name","pages-printdialog");p.appendChild(u);f=document.createElement("span");mxUtils.write(f,mxResources.get("printAllPages"));p.appendChild(f);mxUtils.br(p);var n=u.cloneNode(!0);u.setAttribute("checked","checked");n.setAttribute("value","range");p.appendChild(n);f=document.createElement("span");mxUtils.write(f,mxResources.get("pages")+":");p.appendChild(f);var t=document.createElement("input");t.style.cssText="margin:0 8px 0 8px;";t.setAttribute("value","1");t.setAttribute("type",
"number");t.setAttribute("min","1");t.style.width="50px";p.appendChild(t);f=document.createElement("span");mxUtils.write(f,mxResources.get("to"));p.appendChild(f);var v=t.cloneNode(!0);p.appendChild(v);mxEvent.addListener(t,"focus",function(){n.checked=!0});mxEvent.addListener(v,"focus",function(){n.checked=!0});mxEvent.addListener(t,"change",c);mxEvent.addListener(v,"change",c);if(null!=b.pages&&(l=b.pages.length,null!=b.currentPage))for(f=0;f<b.pages.length;f++)if(b.currentPage==b.pages[f]){m=f+
1;t.value=m;v.value=m;break}t.setAttribute("max",l);v.setAttribute("max",l);b.isPagesEnabled()?1<l&&(k.appendChild(p),n.checked=!0):n.checked=!0;var y=document.createElement("div");y.style.marginBottom="10px";var z=document.createElement("input");z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");y.appendChild(z);f=document.createElement("span");mxUtils.write(f,mxResources.get("adjustTo"));y.appendChild(f);var q=document.createElement("input");
q.style.cssText="margin:0 8px 0 8px;";q.setAttribute("value","100 %");q.style.width="50px";y.appendChild(q);mxEvent.addListener(q,"focus",function(){z.checked=!0});k.appendChild(y);var p=p.cloneNode(!1),x=z.cloneNode(!0);x.setAttribute("value","fit");z.setAttribute("checked","checked");f=document.createElement("div");f.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";f.appendChild(x);p.appendChild(f);y=document.createElement("table");y.style.display="inline-block";
-var B=document.createElement("tbody"),M=document.createElement("tr"),G=M.cloneNode(!0),P=document.createElement("td"),N=P.cloneNode(!0),H=P.cloneNode(!0),I=P.cloneNode(!0),F=P.cloneNode(!0),L=P.cloneNode(!0);P.style.textAlign="right";I.style.textAlign="right";mxUtils.write(P,mxResources.get("fitTo"));var D=document.createElement("input");D.style.cssText="margin:0 8px 0 8px;";D.setAttribute("value","1");D.setAttribute("min","1");D.setAttribute("type","number");D.style.width="40px";N.appendChild(D);
-f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsAcross"));H.appendChild(f);mxUtils.write(I,mxResources.get("fitToBy"));var ga=D.cloneNode(!0);F.appendChild(ga);mxEvent.addListener(D,"focus",function(){x.checked=!0});mxEvent.addListener(ga,"focus",function(){x.checked=!0});f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsDown"));L.appendChild(f);M.appendChild(P);M.appendChild(N);M.appendChild(H);G.appendChild(I);G.appendChild(F);G.appendChild(L);
-B.appendChild(M);B.appendChild(G);y.appendChild(B);p.appendChild(y);k.appendChild(p);p=document.createElement("div");f=document.createElement("div");f.style.fontWeight="bold";f.style.marginBottom="12px";mxUtils.write(f,mxResources.get("paperSize"));p.appendChild(f);f=document.createElement("div");f.style.marginBottom="12px";var E=PageSetupDialog.addPageFormatPanel(f,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(f);f=document.createElement("span");mxUtils.write(f,
+var B=document.createElement("tbody"),M=document.createElement("tr"),R=M.cloneNode(!0),E=document.createElement("td"),N=E.cloneNode(!0),H=E.cloneNode(!0),I=E.cloneNode(!0),G=E.cloneNode(!0),L=E.cloneNode(!0);E.style.textAlign="right";I.style.textAlign="right";mxUtils.write(E,mxResources.get("fitTo"));var D=document.createElement("input");D.style.cssText="margin:0 8px 0 8px;";D.setAttribute("value","1");D.setAttribute("min","1");D.setAttribute("type","number");D.style.width="40px";N.appendChild(D);
+f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsAcross"));H.appendChild(f);mxUtils.write(I,mxResources.get("fitToBy"));var fa=D.cloneNode(!0);G.appendChild(fa);mxEvent.addListener(D,"focus",function(){x.checked=!0});mxEvent.addListener(fa,"focus",function(){x.checked=!0});f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsDown"));L.appendChild(f);M.appendChild(E);M.appendChild(N);M.appendChild(H);R.appendChild(I);R.appendChild(G);R.appendChild(L);
+B.appendChild(M);B.appendChild(R);y.appendChild(B);p.appendChild(y);k.appendChild(p);p=document.createElement("div");f=document.createElement("div");f.style.fontWeight="bold";f.style.marginBottom="12px";mxUtils.write(f,mxResources.get("paperSize"));p.appendChild(f);f=document.createElement("div");f.style.marginBottom="12px";var F=PageSetupDialog.addPageFormatPanel(f,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(f);f=document.createElement("span");mxUtils.write(f,
mxResources.get("pageScale"));p.appendChild(f);var C=document.createElement("input");C.style.cssText="margin:0 8px 0 8px;";C.setAttribute("value","100 %");C.style.width="60px";p.appendChild(C);k.appendChild(p);f=document.createElement("div");f.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";b.editor.cancelFirst&&f.appendChild(p);b.isOffline()||(y=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),
-y.className="geBtn",f.appendChild(y));PrintDialog.previewEnabled&&(y=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();g(!1)}),y.className="geBtn",f.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();g(!0)});y.className="geBtn gePrimaryBtn";f.appendChild(y);b.editor.cancelFirst||f.appendChild(p);k.appendChild(f);this.container=k};var ga=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
+y.className="geBtn",f.appendChild(y));PrintDialog.previewEnabled&&(y=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();g(!1)}),y.className="geBtn",f.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();g(!0)});y.className="geBtn gePrimaryBtn";f.appendChild(y);b.editor.cancelFirst||f.appendChild(p);k.appendChild(f);this.container=k};var fa=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=
-this.shadowVisible)}}else ga.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 ea=document.createElement("canvas"),ba=new Image;ba.onload=function(){try{ea.getContext("2d").drawImage(ba,
-0,0);var b=ea.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=b&&6<b.length}catch(C){}};ba.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(x){}})();
+this.shadowVisible)}}else fa.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 da=document.createElement("canvas"),ba=new Image;ba.onload=function(){try{da.getContext("2d").drawImage(ba,
+0,0);var b=da.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=b&&6<b.length}catch(C){}};ba.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(x){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,e,f){f.ui=b.ui;return e};b.afterDecode=function(b,e,f){f.previousColor=f.color;f.previousImage=f.image;f.previousFormat=f.format;null!=f.foldingEnabled&&(f.foldingEnabled=!f.foldingEnabled);null!=f.mathEnabled&&(f.mathEnabled=!f.mathEnabled);null!=f.shadowVisible&&(f.shadowVisible=!f.shadowVisible);return f};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,e,f){f.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.4.5";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,e,f){f.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.4.7";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=
!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,
messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(b,c,g,e,f,l,n){l=null!=l?l:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -3461,16 +3461,16 @@ null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[e+1])),this.pages
this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));/(\.drawio)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(b,c,e,f,l,n,v,t,z,y,q,D){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();
var d=this.getBaseFilename("remoteSvg"==b?!1:!l),g=d+("xml"==b||"pdf"==b&&q?".drawio":"")+"."+b;if("xml"==b){var k=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,f,l,null,null,null,c);this.saveData(g,b,k,"text/xml")}else if("html"==b)k=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g,b,k,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export"))){var m,p;if("xmlpng"==b)g=d+".png";else if("jpeg"==b)g=d+".jpg";else if("remoteSvg"==
b){g=d+".svg";b="svg";var u=parseInt(z);"string"===typeof t&&0<t.indexOf("%")&&(t=parseInt(t)/100);if(0<u){var L=this.editor.graph,N=L.getGraphBounds();m=Math.ceil(N.width*t/L.view.scale+2*u);p=Math.ceil(N.height*t/L.view.scale+2*u)}}this.saveRequest(g,b,mxUtils.bind(this,function(d,c){try{var e=this.editor.graph.pageVisible;null!=n&&(this.editor.graph.pageVisible=n);var g=this.createDownloadRequest(d,b,f,c,v,l,t,z,y,q,D,m,p);this.editor.graph.pageVisible=e;return g}catch(C){this.handleError(C)}}))}else{var M=
-null,P=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(M)}))});if("svg"==b){var I=this.editor.graph.background;if(v||I==mxConstants.NONE)I=null;var W=this.editor.graph.getSvg(I,null,null,null,null,f);e&&this.editor.graph.addSvgShadow(W);this.editor.convertImages(W,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();
-P(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else g=d+".svg",M=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();P(b)}),f)}}catch(ga){this.handleError(ga)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,f,l,n,v,t,z,y,q,D,F){var d=this.editor.graph,g=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==n?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var k="",m="";if(g.width*g.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};
+null,R=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(M)}))});if("svg"==b){var I=this.editor.graph.background;if(v||I==mxConstants.NONE)I=null;var X=this.editor.graph.getSvg(I,null,null,null,null,f);e&&this.editor.graph.addSvgShadow(X);this.editor.convertImages(X,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();
+R(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else g=d+".svg",M=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();R(b)}),f)}}catch(fa){this.handleError(fa)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,f,l,n,v,t,z,y,q,D,G){var d=this.editor.graph,g=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==n?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var k="",m="";if(g.width*g.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};
y=y?"1":"0";"pdf"==c&&(null!=q?m="&from="+q.from+"&to="+q.to:0==n&&(m="&allPages=1"));"xmlpng"==c&&(y="1",c="png");if(("xmlpng"==c||"svg"==c)&&null!=this.pages&&null!=this.currentPage)for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){k="&from="+n;break}n=d.background;"png"!=c&&"pdf"!=c&&"svg"!=c||!l?l||null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;l={globalVars:d.getExportVariables()};z&&(l.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});Graph.translateDiagram&&
-(l.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+k+m+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+f+"&embedXml="+y+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(l))+(null!=v?"&scale="+v:"")+(null!=t?"&border="+t:"")+(D&&isFinite(D)?"&w="+D:"")+(F&&isFinite(F)?"&h="+F:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=
+(l.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+k+m+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+f+"&embedXml="+y+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(l))+(null!=v?"&scale="+v:"")+(null!=t?"&border="+t:"")+(D&&isFinite(D)?"&w="+D:"")+(G&&isFinite(G)?"&h="+G:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=
window.location.hash,g=mxUtils.bind(this,function(e){var g=null!=b.data?b.data:"";null!=e&&0<e.length&&(0<g.length&&(g+="\n"),g+=e);e=new LocalFile(this,"csv"!=b.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);e.getHash=function(){return d};this.fileLoaded(e);"csv"==b.format&&this.importCsv(g,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var k=
null!=b.interval?parseInt(b.interval):6E4,f=null,l=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(b){d===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),m()):this.handleError({message:mxResources.get("error")+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),m=mxUtils.bind(this,function(){window.clearTimeout(f);
f=window.setTimeout(l,k)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){m();l()}));m();l()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){g(b)}),mxUtils.bind(this,function(b){null!=e&&e(b)})):g("")};EditorUi.prototype.updateDiagram=function(b){function d(b){var d=new mxCellOverlay(b.image||f.warningImage,b.tooltip,b.align,b.valign,b.offset);d.addListener(mxEvent.CLICK,function(d,c){e.alert(b.tooltip)});return d}var c=null,
e=this;if(null!=b&&0<b.length&&(c=mxUtils.parseXml(b),b=null!=c?c.documentElement:null,null!=b&&"updates"==b.nodeName)){var f=this.editor.graph,l=f.getModel();l.beginUpdate();var n=null;try{for(b=b.firstChild;null!=b;){if("update"==b.nodeName){var t=l.getCell(b.getAttribute("id"));if(null!=t){try{var z=b.getAttribute("value");if(null!=z){var y=mxUtils.parseXml(z).documentElement;if(null!=y)if("1"==y.getAttribute("replace-value"))l.setValue(t,y);else for(var q=y.attributes,D=0;D<q.length;D++)f.setAttributeForCell(t,
-q[D].nodeName,0<q[D].nodeValue.length?q[D].nodeValue:null)}}catch(N){null!=window.console&&console.log("Error in value for "+t.id+": "+N)}try{var F=b.getAttribute("style");null!=F&&f.model.setStyle(t,F)}catch(N){null!=window.console&&console.log("Error in style for "+t.id+": "+N)}try{var E=b.getAttribute("icon");if(null!=E){var O=0<E.length?JSON.parse(E):null;null!=O&&O.append||f.removeCellOverlays(t);null!=O&&f.addCellOverlay(t,d(O))}}catch(N){null!=window.console&&console.log("Error in icon for "+
-t.id+": "+N)}try{var B=b.getAttribute("geometry");if(null!=B){var B=JSON.parse(B),G=f.getCellGeometry(t);if(null!=G){G=G.clone();for(key in B){var H=parseFloat(B[key]);"dx"==key?G.x+=H:"dy"==key?G.y+=H:"dw"==key?G.width+=H:"dh"==key?G.height+=H:G[key]=parseFloat(B[key])}f.model.setGeometry(t,G)}}}catch(N){null!=window.console&&console.log("Error in icon for "+t.id+": "+N)}}}else if("model"==b.nodeName){for(var L=b.firstChild;null!=L&&L.nodeType!=mxConstants.NODETYPE_ELEMENT;)L=L.nextSibling;null!=
+q[D].nodeName,0<q[D].nodeValue.length?q[D].nodeValue:null)}}catch(N){null!=window.console&&console.log("Error in value for "+t.id+": "+N)}try{var G=b.getAttribute("style");null!=G&&f.model.setStyle(t,G)}catch(N){null!=window.console&&console.log("Error in style for "+t.id+": "+N)}try{var F=b.getAttribute("icon");if(null!=F){var O=0<F.length?JSON.parse(F):null;null!=O&&O.append||f.removeCellOverlays(t);null!=O&&f.addCellOverlay(t,d(O))}}catch(N){null!=window.console&&console.log("Error in icon for "+
+t.id+": "+N)}try{var B=b.getAttribute("geometry");if(null!=B){var B=JSON.parse(B),E=f.getCellGeometry(t);if(null!=E){E=E.clone();for(key in B){var H=parseFloat(B[key]);"dx"==key?E.x+=H:"dy"==key?E.y+=H:"dw"==key?E.width+=H:"dh"==key?E.height+=H:E[key]=parseFloat(B[key])}f.model.setGeometry(t,E)}}}catch(N){null!=window.console&&console.log("Error in icon for "+t.id+": "+N)}}}else if("model"==b.nodeName){for(var L=b.firstChild;null!=L&&L.nodeType!=mxConstants.NODETYPE_ELEMENT;)L=L.nextSibling;null!=
L&&(new mxCodec(b.firstChild)).decode(L,l)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(f.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(n=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):1);b=b.nextSibling}}finally{l.endUpdate()}null!=n&&this.chromelessResize&&this.chromelessResize(!0,n)}return c};
EditorUi.prototype.getCopyFilename=function(b,c){var d=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,e="",k=d.lastIndexOf(".");0<=k&&(e=d.substring(k),d=d.substring(0,k));if(c)var f=new Date,k=f.getFullYear(),l=f.getMonth()+1,n=f.getDate(),z=f.getHours(),y=f.getMinutes(),f=f.getSeconds(),d=d+(" "+(k+"-"+l+"-"+n+"-"+z+"-"+y+"-"+f));return d=mxResources.get("copyOf",[d])+e};EditorUi.prototype.fileLoaded=function(b,c){var d=this.getCurrentFile();this.fileEditable=this.fileLoadedError=
null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=d&&(EditorUi.debug("File.closed",[d]),d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var f=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&
@@ -3489,16 +3489,16 @@ mxUtils.parseXml(b.getData());if("mxlibrary"==d.documentElement.nodeName){var e=
b);var d=this.sidebar.palettes[b.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(b.getHash());var g=null,k=mxUtils.bind(this,function(d,c){0==d.length&&b.isEditable()?(null==g&&(g=document.createElement("div"),g.className="geDropTarget",mxUtils.write(g,mxResources.get("dragElementsHere"))),c.appendChild(g)):this.addLibraryEntries(d,c)});null!=this.sidebar&&null!=c&&this.sidebar.addEntries(c);null==e&&(e=b.getTitle(),null!=e&&/(\.xml)$/i.test(e)&&(e=e.substring(0,e.lastIndexOf("."))));
var l=this.sidebar.addPalette(b.getHash(),e,null!=f?f:!0,mxUtils.bind(this,function(b){k(c,b)}));this.repositionLibrary(d);var p=l.parentNode.previousSibling;f=p.getAttribute("title");null!=f&&0<f.length&&".scratchpad"!=b.title&&p.setAttribute("title",this.getLibraryStorageHint(b)+"\n"+f);var n=document.createElement("div");n.style.position="absolute";n.style.right="0px";n.style.top="0px";n.style.padding="8px";n.style.backgroundColor="inherit";p.style.position="relative";var q=document.createElement("img");
q.setAttribute("src",Editor.crossImage);q.setAttribute("title",mxResources.get("close"));q.setAttribute("valign","absmiddle");q.setAttribute("border","0");q.style.position="relative";q.style.top="2px";q.style.width="14px";q.style.cursor="pointer";q.style.margin="0 3px";Editor.isDarkMode()&&(q.style.filter="invert(100%)");var D=null;if(".scratchpad"!=b.title||this.closableScratchpad)n.appendChild(q),mxEvent.addListener(q,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var c=mxUtils.bind(this,
-function(){this.closeLibrary(b)});null!=D?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(d)}}));if(b.isEditable()){var F=this.editor.graph,E=null,O=mxUtils.bind(this,function(d){this.showLibraryDialog(b.getTitle(),l,c,b,b.getMode());mxEvent.consume(d)}),B=mxUtils.bind(this,function(d){b.setModified(!0);b.isAutosave()?(null!=E&&null!=E.parentNode&&E.parentNode.removeChild(E),E=q.cloneNode(!1),E.setAttribute("src",
-Editor.spinImage),E.setAttribute("title",mxResources.get("saving")),E.style.cursor="default",E.style.marginRight="2px",E.style.marginTop="-2px",n.insertBefore(E,n.firstChild),p.style.paddingRight=18*n.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=E&&null!=E.parentNode&&(E.parentNode.removeChild(E),p.style.paddingRight=18*n.childNodes.length+"px")})):null==D&&(D=q.cloneNode(!1),D.setAttribute("src",Editor.saveImage),D.setAttribute("title",mxResources.get("save")),
-n.insertBefore(D,n.firstChild),mxEvent.addListener(D,"click",mxUtils.bind(this,function(d){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==D||b.isModified()||(p.style.paddingRight=18*n.childNodes.length+"px",D.parentNode.removeChild(D),D=null)});mxEvent.consume(d)})),p.style.paddingRight=18*n.childNodes.length+"px")}),G=mxUtils.bind(this,function(b,d,e,f){b=F.cloneCells(mxUtils.sortCells(F.model.getTopmostCells(b)));for(var k=0;k<b.length;k++){var m=F.getCellGeometry(b[k]);
-null!=m&&m.translate(-d.x,-d.y)}l.appendChild(this.sidebar.createVertexTemplateFromCells(b,d.width,d.height,f||"",!0,null,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:d.width,h:d.height};null!=f&&(b.title=f);c.push(b);B(e);null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)}),H=mxUtils.bind(this,function(b){if(F.isSelectionEmpty())F.getRubberband().isActive()?(F.getRubberband().execute(b),F.getRubberband().reset()):this.showError(mxResources.get("error"),
-mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=F.getSelectionCells(),c=F.view.getBounds(d),e=F.view.scale;c.x/=e;c.y/=e;c.width/=e;c.height/=e;c.x-=F.view.translate.x;c.y-=F.view.translate.y;G(d,c)}mxEvent.consume(b)});mxEvent.addGestureListeners(l,function(){},mxUtils.bind(this,function(b){F.isMouseDown&&null!=F.panningManager&&null!=F.graphHandler.first&&(F.graphHandler.suspend(),null!=F.graphHandler.hint&&(F.graphHandler.hint.style.visibility="hidden"),l.style.backgroundColor=
-"#f1f3f4",l.style.cursor="copy",F.panningManager.stop(),F.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){F.isMouseDown&&null!=F.panningManager&&null!=F.graphHandler&&(l.style.backgroundColor="",l.style.cursor="default",this.sidebar.showTooltips=!0,F.panningManager.stop(),F.graphHandler.reset(),F.isMouseDown=!1,F.autoScroll=!0,H(b),mxEvent.consume(b))}));mxEvent.addListener(l,"mouseleave",mxUtils.bind(this,function(b){F.isMouseDown&&null!=F.graphHandler.first&&(F.graphHandler.resume(),
-null!=F.graphHandler.hint&&(F.graphHandler.hint.style.visibility="visible"),l.style.backgroundColor="",l.style.cursor="",F.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(l,"dragover",mxUtils.bind(this,function(b){l.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";l.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(l,"drop",mxUtils.bind(this,function(b){l.style.cursor="";l.style.backgroundColor="";0<b.dataTransfer.files.length&&
-this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,e,f,m,p,n,u,t,v){if(null!=d&&"image/"==e.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,p,n),d)],d[0].vertex=!0,G(d,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:u.substring(0,u.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),
-g=null);else{var y=!1,z=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var f=Editor.extractGraphModelFromPdf(d);null!=f&&0<f.length&&(d=f)}if(null!=d)if(f=mxUtils.parseXml(d),"mxlibrary"==f.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(f.documentElement));k(m,l);c=c.concat(m);B(b);this.spinner.stop();y=!0}catch(ha){}else if("mxfile"==f.documentElement.nodeName)try{for(var p=f.documentElement.getElementsByTagName("diagram"),m=0;m<p.length;m++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[m])),
-u=this.editor.graph.getBoundingBoxFromGeometry(n);G(n,new mxRectangle(0,0,u.width,u.height),b)}y=!0}catch(ha){null!=window.console&&console.log("error in drop handler:",ha)}y||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)});null!=v&&null!=u&&(/(\.v(dx|sdx?))($|\?)/i.test(u)||/(\.vs(x|sx?))($|\?)/i.test(u))?this.importVisio(v,function(b){z(b,"text/xml")},null,u):!this.isOffline()&&
+function(){this.closeLibrary(b)});null!=D?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(d)}}));if(b.isEditable()){var G=this.editor.graph,F=null,O=mxUtils.bind(this,function(d){this.showLibraryDialog(b.getTitle(),l,c,b,b.getMode());mxEvent.consume(d)}),B=mxUtils.bind(this,function(d){b.setModified(!0);b.isAutosave()?(null!=F&&null!=F.parentNode&&F.parentNode.removeChild(F),F=q.cloneNode(!1),F.setAttribute("src",
+Editor.spinImage),F.setAttribute("title",mxResources.get("saving")),F.style.cursor="default",F.style.marginRight="2px",F.style.marginTop="-2px",n.insertBefore(F,n.firstChild),p.style.paddingRight=18*n.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=F&&null!=F.parentNode&&(F.parentNode.removeChild(F),p.style.paddingRight=18*n.childNodes.length+"px")})):null==D&&(D=q.cloneNode(!1),D.setAttribute("src",Editor.saveImage),D.setAttribute("title",mxResources.get("save")),
+n.insertBefore(D,n.firstChild),mxEvent.addListener(D,"click",mxUtils.bind(this,function(d){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==D||b.isModified()||(p.style.paddingRight=18*n.childNodes.length+"px",D.parentNode.removeChild(D),D=null)});mxEvent.consume(d)})),p.style.paddingRight=18*n.childNodes.length+"px")}),E=mxUtils.bind(this,function(b,d,e,f){b=G.cloneCells(mxUtils.sortCells(G.model.getTopmostCells(b)));for(var k=0;k<b.length;k++){var m=G.getCellGeometry(b[k]);
+null!=m&&m.translate(-d.x,-d.y)}l.appendChild(this.sidebar.createVertexTemplateFromCells(b,d.width,d.height,f||"",!0,null,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:d.width,h:d.height};null!=f&&(b.title=f);c.push(b);B(e);null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)}),H=mxUtils.bind(this,function(b){if(G.isSelectionEmpty())G.getRubberband().isActive()?(G.getRubberband().execute(b),G.getRubberband().reset()):this.showError(mxResources.get("error"),
+mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=G.getSelectionCells(),c=G.view.getBounds(d),e=G.view.scale;c.x/=e;c.y/=e;c.width/=e;c.height/=e;c.x-=G.view.translate.x;c.y-=G.view.translate.y;E(d,c)}mxEvent.consume(b)});mxEvent.addGestureListeners(l,function(){},mxUtils.bind(this,function(b){G.isMouseDown&&null!=G.panningManager&&null!=G.graphHandler.first&&(G.graphHandler.suspend(),null!=G.graphHandler.hint&&(G.graphHandler.hint.style.visibility="hidden"),l.style.backgroundColor=
+"#f1f3f4",l.style.cursor="copy",G.panningManager.stop(),G.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){G.isMouseDown&&null!=G.panningManager&&null!=G.graphHandler&&(l.style.backgroundColor="",l.style.cursor="default",this.sidebar.showTooltips=!0,G.panningManager.stop(),G.graphHandler.reset(),G.isMouseDown=!1,G.autoScroll=!0,H(b),mxEvent.consume(b))}));mxEvent.addListener(l,"mouseleave",mxUtils.bind(this,function(b){G.isMouseDown&&null!=G.graphHandler.first&&(G.graphHandler.resume(),
+null!=G.graphHandler.hint&&(G.graphHandler.hint.style.visibility="visible"),l.style.backgroundColor="",l.style.cursor="",G.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(l,"dragover",mxUtils.bind(this,function(b){l.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";l.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(l,"drop",mxUtils.bind(this,function(b){l.style.cursor="";l.style.backgroundColor="";0<b.dataTransfer.files.length&&
+this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,e,f,m,p,n,u,t,v){if(null!=d&&"image/"==e.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,p,n),d)],d[0].vertex=!0,E(d,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:u.substring(0,u.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),
+g=null);else{var y=!1,z=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var f=Editor.extractGraphModelFromPdf(d);null!=f&&0<f.length&&(d=f)}if(null!=d)if(f=mxUtils.parseXml(d),"mxlibrary"==f.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(f.documentElement));k(m,l);c=c.concat(m);B(b);this.spinner.stop();y=!0}catch(ga){}else if("mxfile"==f.documentElement.nodeName)try{for(var p=f.documentElement.getElementsByTagName("diagram"),m=0;m<p.length;m++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[m])),
+u=this.editor.graph.getBoundingBoxFromGeometry(n);E(n,new mxRectangle(0,0,u.width,u.height),b)}y=!0}catch(ga){null!=window.console&&console.log("error in drop handler:",ga)}y||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)});null!=v&&null!=u&&(/(\.v(dx|sdx?))($|\?)/i.test(u)||/(\.vs(x|sx?))($|\?)/i.test(u))?this.importVisio(v,function(b){z(b,"text/xml")},null,u):!this.isOffline()&&
(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,u)&&null!=v?this.parseFile(v,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?z(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):z(d,e)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(l,"dragleave",function(b){l.style.cursor="";l.style.backgroundColor="";b.stopPropagation();
b.preventDefault()}));q=q.cloneNode(!1);q.setAttribute("src",Editor.editImage);q.setAttribute("title",mxResources.get("edit"));n.insertBefore(q,n.firstChild);mxEvent.addListener(q,"click",O);mxEvent.addListener(l,"dblclick",function(b){mxEvent.getSource(b)==l&&O(b)});f=q.cloneNode(!1);f.setAttribute("src",Editor.plusImage);f.setAttribute("title",mxResources.get("add"));n.insertBefore(f,n.firstChild);mxEvent.addListener(f,"click",H);this.isOffline()||".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||
(f=document.createElement("span"),f.setAttribute("title",mxResources.get("help")),f.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(f,"?"),mxEvent.addGestureListeners(f,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),n.insertBefore(f,n.firstChild))}p.appendChild(n);p.style.paddingRight=18*n.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(b,c){for(var d=0;d<b.length;d++){var e=b[d],
@@ -3511,7 +3511,7 @@ new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImage
360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(b,c,e,f,l){b=new LibraryDialog(this,b,c,e,f,l);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var d=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&
d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var e=c.getElementsByTagName("span")[0];e.style.fontSize="18px";e.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+
"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,e,f,l,n,v){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{v?null!=
-window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(E){}if(null!=g||null!=c){v=mxUtils.htmlEntities(mxResources.get("unknownError"));var k=mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=g){null!=g.retry&&(k=mxResources.get("cancel"),m=function(){d();g.retry()});if(404==g.code||404==g.status||403==g.code){v=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):
+window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(F){}if(null!=g||null!=c){v=mxUtils.htmlEntities(mxResources.get("unknownError"));var k=mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=g){null!=g.retry&&(k=mxResources.get("cancel"),m=function(){d();g.retry()});if(404==g.code||404==g.status||403==g.code){v=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):
mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=l?l:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var p=null!=l?null:null!=n?n:window.location.hash;if(null!=p&&("#G"==p.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==p.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||
null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==g.code||404==g.status)){p="#U"==p.substring(0,2)?p.substring(45,p.lastIndexOf("%26ex")):p.substring(2);this.showError(c,v,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+p);this.handleError(b,c,e,f,l)}),m,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){g.innerHTML="";for(var b=0;b<d.length;b++){var c=document.createElement("option");
mxUtils.write(c,d[b].displayName);c.value=b;g.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(c,"<"+d[b].email+">");c.setAttribute("disabled","disabled");g.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=d.length;g.appendChild(c)}var d=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+
@@ -3531,7 +3531,7 @@ e):new Blob([b],{type:e}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE
"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);n=65==(g?parseInt(g[2],10):!1)?!1:n}if(n||this.isOffline()){d.href=URL.createObjectURL(f?this.base64ToBlob(b,e):new Blob([b],{type:e}));n?d.download=c:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(z){}}else this.createEchoRequest(b,c,e,
f,l).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,e,f,l,n){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,b+(null!=e?"&mime="+e:"")+(null!=l?"&format="+l:"")+(null!=n?"&base64="+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var d=atob(b),e=d.length,f=Math.ceil(e/1024),k=Array(f),l=0;l<f;++l){for(var n=1024*l,q=Math.min(n+1024,e),y=Array(q-n),I=0;n<q;++I,++n)y[I]=
d[n].charCodeAt(0);k[l]=new Uint8Array(y)}return new Blob(k,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,e,f,l,n,v,t){n=null!=n?n:!1;v=null!=v?v:"vsdx"!=l&&(!mxClient.IS_IOS||!navigator.standalone);l=this.getServiceCount(n);isLocalStorage&&l++;var d=4>=l?2:6<l?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(d,c){try{if("_blank"==c)if(null!=e&&"image/"==e.substring(0,6))this.openInNewWindow(b,e,f);else if(null!=e&&"text/html"==e.substring(0,9)){var g=new EmbedDialog(this,b);this.showDialog(g.container,
-450,240,!0,!0);g.init()}else{var k=window.open("about:blank");null==k?mxUtils.popup(b,!0):(k.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),k.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,f,null,t):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(g){try{this.exportFile(b,d,e,f,c,g)}catch(O){this.handleError(O)}}))}catch(E){this.handleError(E)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
+450,240,!0,!0);g.init()}else{var k=window.open("about:blank");null==k?mxUtils.popup(b,!0):(k.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),k.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,f,null,t):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(g){try{this.exportFile(b,d,e,f,c,g)}catch(O){this.handleError(O)}}))}catch(F){this.handleError(F)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
!1,n,v,null,1<l,d,b,e,f);n=this.isServices(l)?l>d?390:280:160;this.showDialog(c.container,420,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(b,c,e){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?d.document.write("<html>"+b+"</html>"):(b=e?b:btoa(unescape(encodeURIComponent(b))),d.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):d.document.write("<html><pre>"+
mxUtils.htmlEntities(b,!1)+"</pre></html>"),d.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var d=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&
(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height=
@@ -3545,11 +3545,11 @@ this.layersDialog=null)}));this.editor.addListener("layersDialogShown",mxUtils.b
speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(b){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(b,null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));
b.setAttribute("border","0");b.setAttribute("src",c);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),
Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,e,f,l){this.isLocalFileSave()?this.saveLocalFile(e,b,f,l,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,d){return this.createEchoRequest(e,b,f,l,c,d)}),e,l,f)};EditorUi.prototype.saveRequest=function(b,c,e,f,l,n,v){v=null!=v?v:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);isLocalStorage&&d++;var g=4>=d?2:6<d?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){if("_blank"==
-d||null!=b&&0<b.length){var g=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=f)try{this.exportFile(f,b,n,!0,d,e)}catch(E){this.handleError(E)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=
-g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),b,n,!0,d,e)}catch(E){this.handleError(E)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,v,null,1<d,g,f,n,l);d=this.isServices(d)?4<d?390:280:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=
-b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,f,l,n){};EditorUi.prototype.pickFolder=function(b,c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,f,l,n,v,t,q,y,I,D,F,E){if(this.spinner.spin(document.body,mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var g=c?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==c&&(g=I?this.editor.graph.defaultPageBackgroundColor:
-"#ffffff");var k=this.editor.graph.getSvg(g,b,v,t,null,e,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,I,D);f&&this.editor.graph.addSvgShadow(k);var m=this.getBaseFilename()+(l?".drawio":"")+".svg";E=null!=E?E:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var p=mxUtils.bind(this,
-function(b){this.spinner.stop();l&&b.setAttribute("content",this.getFileData(!0,null,null,null,e,q,null,null,null,!1));E(Graph.xmlDeclaration+"\n"+(l?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(k);var u=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,p,this.thumbImageCache)):p(b)});F?this.embedFonts(k,u):(this.editor.addFontCss(k),u(k))}catch(M){this.handleError(M)}};
+d||null!=b&&0<b.length){var g=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=f)try{this.exportFile(f,b,n,!0,d,e)}catch(F){this.handleError(F)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=
+g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),b,n,!0,d,e)}catch(F){this.handleError(F)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,v,null,1<d,g,f,n,l);d=this.isServices(d)?4<d?390:280:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=
+b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,f,l,n){};EditorUi.prototype.pickFolder=function(b,c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,f,l,n,v,t,q,y,I,D,G,F){if(this.spinner.spin(document.body,mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var g=c?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==c&&(g=I?this.editor.graph.defaultPageBackgroundColor:
+"#ffffff");var k=this.editor.graph.getSvg(g,b,v,t,null,e,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,I,D);f&&this.editor.graph.addSvgShadow(k);var m=this.getBaseFilename()+(l?".drawio":"")+".svg";F=null!=F?F:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var p=mxUtils.bind(this,
+function(b){this.spinner.stop();l&&b.setAttribute("content",this.getFileData(!0,null,null,null,e,q,null,null,null,!1));F(Graph.xmlDeclaration+"\n"+(l?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(k);var u=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,p,this.thumbImageCache)):p(b)});G?this.embedFonts(k,u):(this.editor.addFontCss(k),u(k))}catch(M){this.handleError(M)}};
EditorUi.prototype.addRadiobox=function(b,c,e,f,l,n,v){return this.addCheckbox(b,e,f,l,n,v,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,e,f,l,n,v,t){n=null!=n?n:!0;var d=document.createElement("input");d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",v?"radio":"checkbox");v="geCheckbox-"+Editor.guid();d.id=v;null!=t&&d.setAttribute("name",t);e&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);f&&d.setAttribute("disabled","disabled");n&&(b.appendChild(d),e=document.createElement("label"),
mxUtils.write(e,c),e.setAttribute("for",v),b.appendChild(e),l||mxUtils.br(b));return d};EditorUi.prototype.addEditButton=function(b,c){var d=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);d.style.marginLeft="24px";var e=this.getCurrentFile(),f="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var k=document.createElement("select");k.style.maxWidth="200px";k.style.width="auto";k.style.marginLeft="8px";k.style.marginRight="10px";k.className=
"geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("makeCopy"));k.appendChild(e);e=document.createElement("option");e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");k.appendChild(e);b.appendChild(k);mxEvent.addListener(k,"change",mxUtils.bind(this,function(){if("custom"==k.value){var b=new FilenameDialog(this,f,mxResources.get("ok"),function(b){null!=b?f=b:k.value="blank"},mxResources.get("url"),null,null,null,
@@ -3565,32 +3565,32 @@ this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxU
"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,c,e,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var 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");g=l.cloneNode(!0);g.setAttribute("value","copy");k.appendChild(g);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));k.appendChild(p);mxUtils.br(k);k.appendChild(l);
p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));k.appendChild(p);var n=this.getCurrentFile();null==e&&null!=n&&n.constructor==window.DriveFile&&(p=document.createElement("a"),p.style.paddingLeft="12px",p.style.color="gray",p.style.cursor="pointer",mxUtils.write(p,mxResources.get("share")),k.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(n.getId())})));g.setAttribute("checked","checked");null==
-e&&l.setAttribute("disabled","disabled");d.appendChild(k);var q=this.addLinkSection(d),D=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var F=document.createElement("input");F.setAttribute("type","text");F.style.marginRight="16px";F.style.width="60px";F.style.marginLeft="4px";F.style.marginRight="12px";F.value="100%";d.appendChild(F);var E=this.addCheckbox(d,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,O=O=this.addCheckbox(d,mxResources.get("allPages"),
-k,!k),B=this.addCheckbox(d,mxResources.get("layers"),!0),G=this.addCheckbox(d,mxResources.get("tags"),!0),H=this.addCheckbox(d,mxResources.get("lightbox"),!0),L=this.addEditButton(d,H),N=L.getEditInput();N.style.marginBottom="16px";mxEvent.addListener(H,"change",function(){H.checked?N.removeAttribute("disabled"):N.setAttribute("disabled","disabled");N.checked&&H.checked?L.getEditSelect().removeAttribute("disabled"):L.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,
-mxUtils.bind(this,function(){f(l.checked?e:null,D.checked,F.value,q.getTarget(),q.getColor(),E.checked,O.checked,B.checked,G.checked,H.checked,L.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,e,f,l,n,v,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,b||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
+e&&l.setAttribute("disabled","disabled");d.appendChild(k);var q=this.addLinkSection(d),D=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");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="100%";d.appendChild(G);var F=this.addCheckbox(d,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,O=O=this.addCheckbox(d,mxResources.get("allPages"),
+k,!k),B=this.addCheckbox(d,mxResources.get("layers"),!0),E=this.addCheckbox(d,mxResources.get("tags"),!0),H=this.addCheckbox(d,mxResources.get("lightbox"),!0),L=this.addEditButton(d,H),N=L.getEditInput();N.style.marginBottom="16px";mxEvent.addListener(H,"change",function(){H.checked?N.removeAttribute("disabled"):N.setAttribute("disabled","disabled");N.checked&&H.checked?L.getEditSelect().removeAttribute("disabled"):L.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,
+mxUtils.bind(this,function(){f(l.checked?e:null,D.checked,G.value,q.getTarget(),q.getColor(),F.checked,O.checked,B.checked,E.checked,H.checked,L.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,e,f,l,n,v,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,b||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
d.appendChild(g);var k=this.getCurrentFile();b=0;if(null==k||k.constructor!=window.DriveFile||c)v=null!=v?v:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;v=null!=v?v:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));
g.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(k.getId())}));m.style.marginTop="12px";m.className="geBtn";g.appendChild(m);d.appendChild(g);m=document.createElement("a");m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.style.cursor="pointer";mxUtils.write(m,mxResources.get("check"));g.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&
this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,300,80,!0,!1);b.init()}))}))}var p=null,u=null;if(null!=e||null!=f)b+=30,mxUtils.write(d,mxResources.get("width")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.marginRight="16px",p.style.width="50px",p.style.marginLeft="6px",p.style.marginRight=
-"16px",p.style.marginBottom="10px",p.value="100%",d.appendChild(p),mxUtils.write(d,mxResources.get("height")+":"),u=document.createElement("input"),u.setAttribute("type","text"),u.style.width="50px",u.style.marginLeft="6px",u.style.marginBottom="10px",u.value=f+"px",d.appendChild(u),mxUtils.br(d);var q=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var B=null;if(null==k||k.constructor!=window.DriveFile||c)B=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var G=this.addCheckbox(d,
-mxResources.get("lightbox"),!0,null,null,!n),H=this.addEditButton(d,G),L=H.getEditInput();n&&(L.style.marginLeft=G.style.marginLeft,G.style.display="none",b-=20);var N=this.addCheckbox(d,mxResources.get("layers"),!0);N.style.marginLeft=L.style.marginLeft;N.style.marginTop="8px";var M=this.addCheckbox(d,mxResources.get("tags"),!0);M.style.marginLeft=L.style.marginLeft;M.style.marginBottom="16px";M.style.marginTop="16px";mxEvent.addListener(G,"change",function(){G.checked?(N.removeAttribute("disabled"),
-L.removeAttribute("disabled")):(N.setAttribute("disabled","disabled"),L.setAttribute("disabled","disabled"));L.checked&&G.checked?H.getEditSelect().removeAttribute("disabled"):H.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){l(q.getTarget(),q.getColor(),null==B?!0:B.checked,G.checked,H.getLink(),N.checked,null!=p?p.value:null,null!=u?u.value:null,M.checked)}),null,mxResources.get("create"),v,t);this.showDialog(c.container,340,300+b,!0,
+"16px",p.style.marginBottom="10px",p.value="100%",d.appendChild(p),mxUtils.write(d,mxResources.get("height")+":"),u=document.createElement("input"),u.setAttribute("type","text"),u.style.width="50px",u.style.marginLeft="6px",u.style.marginBottom="10px",u.value=f+"px",d.appendChild(u),mxUtils.br(d);var q=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var B=null;if(null==k||k.constructor!=window.DriveFile||c)B=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var E=this.addCheckbox(d,
+mxResources.get("lightbox"),!0,null,null,!n),H=this.addEditButton(d,E),L=H.getEditInput();n&&(L.style.marginLeft=E.style.marginLeft,E.style.display="none",b-=20);var N=this.addCheckbox(d,mxResources.get("layers"),!0);N.style.marginLeft=L.style.marginLeft;N.style.marginTop="8px";var M=this.addCheckbox(d,mxResources.get("tags"),!0);M.style.marginLeft=L.style.marginLeft;M.style.marginBottom="16px";M.style.marginTop="16px";mxEvent.addListener(E,"change",function(){E.checked?(N.removeAttribute("disabled"),
+L.removeAttribute("disabled")):(N.setAttribute("disabled","disabled"),L.setAttribute("disabled","disabled"));L.checked&&E.checked?H.getEditSelect().removeAttribute("disabled"):H.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){l(q.getTarget(),q.getColor(),null==B?!0:B.checked,E.checked,H.getLink(),N.checked,null!=p?p.value:null,null!=u?u.value:null,M.checked)}),null,mxResources.get("create"),v,t);this.showDialog(c.container,340,300+b,!0,
!0);null!=p?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)):q.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(l?"10":"4")+"px";d.appendChild(g);if(l){mxUtils.write(d,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%";d.appendChild(k);mxUtils.write(d,mxResources.get("borderWidth")+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.value=this.lastExportBorder||"0";d.appendChild(m);mxUtils.br(d)}var p=this.addCheckbox(d,
mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=f?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),g=this.editor.graph,q=f?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==mxConstants.NONE||null==g.background);null!=q&&(q.style.marginBottom="16px");b=new CustomDialog(this,d,mxUtils.bind(this,function(){var b=parseInt(k.value)/100||1,d=parseInt(m.value)||0;e(!p.checked,null!=n?n.checked:!1,null!=
q?q.checked:!1,b,d)}),null,b,c);this.showDialog(b.container,300,(l?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,e,f,l,n,v,t,q){v=null!=v?v:Editor.defaultIncludeDiagram;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph,k="jpeg"==t?220:300,m=document.createElement("h3");mxUtils.write(m,b);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(m);mxUtils.write(d,mxResources.get("zoom")+":");var p=
document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="12px";p.value=this.lastExportZoom||"100%";d.appendChild(p);mxUtils.write(d,mxResources.get("borderWidth")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.value=this.lastExportBorder||"0";d.appendChild(u);mxUtils.br(d);var z=this.addCheckbox(d,mxResources.get("selectionOnly"),
-!1,g.isSelectionEmpty()),G=document.createElement("input");G.style.marginTop="16px";G.style.marginRight="8px";G.style.marginLeft="24px";G.setAttribute("disabled","disabled");G.setAttribute("type","checkbox");var H=document.createElement("select");H.style.marginTop="16px";H.style.marginLeft="8px";b=["selectionOnly","diagram","page"];for(var L={},m=0;m<b.length;m++)if(!g.isSelectionEmpty()||"selectionOnly"!=b[m]){var N=document.createElement("option");mxUtils.write(N,mxResources.get(b[m]));N.setAttribute("value",
-b[m]);H.appendChild(N);L[b[m]]=N}q?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(H),mxUtils.br(d),k+=26,mxEvent.addListener(H,"change",function(){"selectionOnly"==H.value&&(z.checked=!0)})):n&&(d.appendChild(G),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),k+=30,mxEvent.addListener(z,"change",function(){z.checked?G.removeAttribute("disabled"):G.setAttribute("disabled","disabled")}));g.isSelectionEmpty()?q&&(z.style.display="none",z.nextSibling.style.display="none",z.nextSibling.nextSibling.style.display=
-"none",k-=30):(H.value="diagram",G.setAttribute("checked","checked"),G.defaultChecked=!0,mxEvent.addListener(z,"change",function(){H.value=z.checked?"selectionOnly":"diagram"}));var M=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=t),P=null;Editor.isDarkMode()&&(P=this.addCheckbox(d,mxResources.get("dark"),!0),k+=26);var V=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),W=null;if("png"==t||"jpeg"==t)W=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||
-!this.canvasSupported,!1,!0),k+=30;var ga=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),v,null,null,"jpeg"!=t);ga.style.marginBottom="16px";var ea=document.createElement("input");ea.style.marginBottom="16px";ea.style.marginRight="8px";ea.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ea.setAttribute("disabled","disabled");var ba=document.createElement("select");ba.style.maxWidth="260px";ba.style.marginLeft="8px";ba.style.marginRight="10px";ba.style.marginBottom=
+!1,g.isSelectionEmpty()),E=document.createElement("input");E.style.marginTop="16px";E.style.marginRight="8px";E.style.marginLeft="24px";E.setAttribute("disabled","disabled");E.setAttribute("type","checkbox");var H=document.createElement("select");H.style.marginTop="16px";H.style.marginLeft="8px";b=["selectionOnly","diagram","page"];for(var L={},m=0;m<b.length;m++)if(!g.isSelectionEmpty()||"selectionOnly"!=b[m]){var N=document.createElement("option");mxUtils.write(N,mxResources.get(b[m]));N.setAttribute("value",
+b[m]);H.appendChild(N);L[b[m]]=N}q?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(H),mxUtils.br(d),k+=26,mxEvent.addListener(H,"change",function(){"selectionOnly"==H.value&&(z.checked=!0)})):n&&(d.appendChild(E),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),k+=30,mxEvent.addListener(z,"change",function(){z.checked?E.removeAttribute("disabled"):E.setAttribute("disabled","disabled")}));g.isSelectionEmpty()?q&&(z.style.display="none",z.nextSibling.style.display="none",z.nextSibling.nextSibling.style.display=
+"none",k-=30):(H.value="diagram",E.setAttribute("checked","checked"),E.defaultChecked=!0,mxEvent.addListener(z,"change",function(){H.value=z.checked?"selectionOnly":"diagram"}));var M=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=t),R=null;Editor.isDarkMode()&&(R=this.addCheckbox(d,mxResources.get("dark"),!0),k+=26);var W=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),X=null;if("png"==t||"jpeg"==t)X=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||
+!this.canvasSupported,!1,!0),k+=30;var fa=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),v,null,null,"jpeg"!=t);fa.style.marginBottom="16px";var da=document.createElement("input");da.style.marginBottom="16px";da.style.marginRight="8px";da.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||da.setAttribute("disabled","disabled");var ba=document.createElement("select");ba.style.maxWidth="260px";ba.style.marginLeft="8px";ba.style.marginRight="10px";ba.style.marginBottom=
"16px";ba.className="geBtn";n=document.createElement("option");n.setAttribute("value","none");mxUtils.write(n,mxResources.get("noChange"));ba.appendChild(n);n=document.createElement("option");n.setAttribute("value","embedFonts");mxUtils.write(n,mxResources.get("embedFonts"));ba.appendChild(n);n=document.createElement("option");n.setAttribute("value","lblToSvg");mxUtils.write(n,mxResources.get("lblToSvg"));ba.appendChild(n);this.isOffline()&&n.setAttribute("disabled","disabled");mxEvent.addListener(ba,
-"change",mxUtils.bind(this,function(){"lblToSvg"==ba.value?(ea.checked=!0,ea.setAttribute("disabled","disabled"),L.page.style.display="none","page"==H.value&&(H.value="diagram"),V.checked=!1,V.setAttribute("disabled","disabled"),C.style.display="inline-block",x.style.display="none"):"disabled"==ea.getAttribute("disabled")&&(ea.checked=!1,ea.removeAttribute("disabled"),V.removeAttribute("disabled"),L.page.style.display="",C.style.display="none",x.style.display="")}));c&&(d.appendChild(ea),mxUtils.write(d,
+"change",mxUtils.bind(this,function(){"lblToSvg"==ba.value?(da.checked=!0,da.setAttribute("disabled","disabled"),L.page.style.display="none","page"==H.value&&(H.value="diagram"),W.checked=!1,W.setAttribute("disabled","disabled"),C.style.display="inline-block",x.style.display="none"):"disabled"==da.getAttribute("disabled")&&(da.checked=!1,da.removeAttribute("disabled"),W.removeAttribute("disabled"),L.page.style.display="",C.style.display="none",x.style.display="")}));c&&(d.appendChild(da),mxUtils.write(d,
mxResources.get("embedImages")),mxUtils.br(d),mxUtils.write(d,mxResources.get("txtSettings")+":"),d.appendChild(ba),mxUtils.br(d),k+=60);var x=document.createElement("select");x.style.maxWidth="260px";x.style.marginLeft="8px";x.style.marginRight="10px";x.className="geBtn";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));x.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));
x.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));x.appendChild(c);var C=document.createElement("div");mxUtils.write(C,mxResources.get("LinksLost"));C.style.margin="7px";C.style.display="none";"svg"==t&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(x),d.appendChild(C),mxUtils.br(d),mxUtils.br(d),k+=50);e=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=u.value;this.lastExportZoom=
-p.value;l(p.value,M.checked,!z.checked,V.checked,ga.checked,ea.checked,u.value,G.checked,!1,x.value,null!=W?W.checked:null,null!=P?P.checked:null,H.value,"embedFonts"==ba.value,"lblToSvg"==ba.value)}),null,e,f);this.showDialog(e.container,340,k,!0,!0,null,null,null,null,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace=
-"nowrap";var g=this.editor.graph;if(null!=c){var k=document.createElement("h3");mxUtils.write(k,c);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(k)}var m=this.addCheckbox(d,mxResources.get("fit"),!0),p=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),n=this.addCheckbox(d,e),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),F=this.addEditButton(d,q),E=F.getEditInput(),O=1<g.model.getChildCount(g.model.getRoot()),B=this.addCheckbox(d,
-mxResources.get("layers"),O,!O);B.style.marginLeft=E.style.marginLeft;B.style.marginBottom="12px";B.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(O&&B.removeAttribute("disabled"),E.removeAttribute("disabled")):(B.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"));E.checked&&q.checked?F.getEditSelect().removeAttribute("disabled"):F.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){b(m.checked,
-p.checked,n.checked,q.checked,F.getLink(),B.checked)}),null,mxResources.get("embed"),l);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,f,l,n,v,t){function d(d){var c=" ",m="";f&&(c=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
+p.value;l(p.value,M.checked,!z.checked,W.checked,fa.checked,da.checked,u.value,E.checked,!1,x.value,null!=X?X.checked:null,null!=R?R.checked:null,H.value,"embedFonts"==ba.value,"lblToSvg"==ba.value)}),null,e,f);this.showDialog(e.container,340,k,!0,!0,null,null,null,null,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace=
+"nowrap";var g=this.editor.graph;if(null!=c){var k=document.createElement("h3");mxUtils.write(k,c);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(k)}var m=this.addCheckbox(d,mxResources.get("fit"),!0),p=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),n=this.addCheckbox(d,e),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),G=this.addEditButton(d,q),F=G.getEditInput(),O=1<g.model.getChildCount(g.model.getRoot()),B=this.addCheckbox(d,
+mxResources.get("layers"),O,!O);B.style.marginLeft=F.style.marginLeft;B.style.marginBottom="12px";B.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(O&&B.removeAttribute("disabled"),F.removeAttribute("disabled")):(B.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"));F.checked&&q.checked?G.getEditSelect().removeAttribute("disabled"):G.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){b(m.checked,
+p.checked,n.checked,q.checked,G.getLink(),B.checked)}),null,mxResources.get("embed"),l);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,f,l,n,v,t){function d(d){var c=" ",m="";f&&(c=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
EditorUi.lightboxHost+"/?client=1"+(null!=k?"&page="+k:"")+(l?"&edit=_blank":"")+(n?"&layers=1":"")+"');}})(this);\"",m+="cursor:pointer;");b&&(m+="max-width:100%;");var p="";e&&(p=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');v('<img src="'+d+'"'+p+(""!=m?' style="'+m+'"':"")+c+"/>")}var g=this.editor.graph.getGraphBounds(),k=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=f?this.getFileData(!0):null;b=
this.createImageDataUri(b,c,"png");d(b)}),null,null,null,mxUtils.bind(this,function(b){t({message:mxResources.get("unknownError")})}),null,!0,e?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),g.width*g.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var m="";e&&(m="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var p=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+m+"&xml="+encodeURIComponent(c));p.send(mxUtils.bind(this,function(){200<=p.getStatus()&&
299>=p.getStatus()?d("data:image/png;base64,"+p.getText()):t({message:mxResources.get("unknownError")})}))}else t({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,e,f,l,n,v){var d=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!e),g=d.getElementsByTagName("a");if(null!=g)for(var k=0;k<g.length;k++){var m=g[k].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==g[k].getAttribute("target")&&g[k].removeAttribute("target")}f&&
@@ -3601,21 +3601,21 @@ Math.floor((new Date-b)/1E3);var d=Math.floor(b/31536E3);if(1<d)return d+" "+mxR
b;else if("mxfile"==b.nodeName){var e=b.getElementsByTagName("diagram");if(0<e.length){var d=e[0],f=c.getGlobalVariable;c.getGlobalVariable=function(b){return"page"==b?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==b?1:f.apply(this,arguments)}}}null!=d&&(b=Editor.parseDiagramNode(d))}e=this.editor.graph;try{this.editor.graph=c,this.editor.setGraphXml(b)}catch(u){}finally{this.editor.graph=e}return b};EditorUi.prototype.getPngFileProperties=function(b){var d=1,c=0;if(null!=
b){if(b.hasAttribute("scale")){var e=parseFloat(b.getAttribute("scale"));!isNaN(e)&&0<e&&(d=e)}b.hasAttribute("border")&&(e=parseInt(b.getAttribute("border")),!isNaN(e)&&0<e&&(c=e))}return{scale:d,border:c}};EditorUi.prototype.getEmbeddedPng=function(b,c,e,f,l){try{var d=this.editor.graph,g=null!=d.themes&&"darkTheme"==d.defaultThemeName,k=null;if(null!=e&&0<e.length)d=this.createTemporaryGraph(g?d.getDefaultStylesheet():d.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(e).documentElement,
!0),d),k=e;else if(g||null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(g?d.getDefaultStylesheet():d.getStylesheet()),m=d.getGlobalVariable;d.setBackgroundImage=this.editor.graph.setBackgroundImage;var p=this.pages[0];this.currentPage==p?d.setBackgroundImage(this.editor.graph.backgroundImage):null!=p.viewState&&null!=p.viewState&&d.setBackgroundImage(p.viewState.backgroundImage);d.getGlobalVariable=function(b){return"page"==b?p.getName():"pagenumber"==b?1:m.apply(this,
-arguments)};document.body.appendChild(d.container);d.model.setRoot(p.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(e){try{null==k&&(k=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var g=e.toDataURL("image/png"),g=Editor.writeGraphModelToPng(g,"tEXt","mxfile",encodeURIComponent(k));b(g.substring(g.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(F){null!=c&&c(F)}}),null,null,null,mxUtils.bind(this,function(b){null!=c&&
-c(b)}),null,null,f,null,d.shadowVisible,null,d,l,null,null,null,"diagram",null)}catch(I){null!=c&&c(I)}};EditorUi.prototype.getEmbeddedSvg=function(b,c,e,f,l,n,v,t,q,y,I,D,F){t=null!=t?t:!0;I=null!=I?I:0;v=null!=q?q:c.background;v==mxConstants.NONE&&(v=null);n=c.getSvg(v,y,I,null,null,n,null,null,null,c.shadowVisible||D,null,F,"diagram");(c.shadowVisible||D)&&c.addSvgShadow(n,null,null,0==I);null!=b&&n.setAttribute("content",b);null!=e&&n.setAttribute("resource",e);var d=mxUtils.bind(this,function(b){b=
+arguments)};document.body.appendChild(d.container);d.model.setRoot(p.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(e){try{null==k&&(k=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var g=e.toDataURL("image/png"),g=Editor.writeGraphModelToPng(g,"tEXt","mxfile",encodeURIComponent(k));b(g.substring(g.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(G){null!=c&&c(G)}}),null,null,null,mxUtils.bind(this,function(b){null!=c&&
+c(b)}),null,null,f,null,d.shadowVisible,null,d,l,null,null,null,"diagram",null)}catch(I){null!=c&&c(I)}};EditorUi.prototype.getEmbeddedSvg=function(b,c,e,f,l,n,v,t,q,y,I,D,G){t=null!=t?t:!0;I=null!=I?I:0;v=null!=q?q:c.background;v==mxConstants.NONE&&(v=null);n=c.getSvg(v,y,I,null,null,n,null,null,null,c.shadowVisible||D,null,G,"diagram");(c.shadowVisible||D)&&c.addSvgShadow(n,null,null,0==I);null!=b&&n.setAttribute("content",b);null!=e&&n.setAttribute("resource",e);var d=mxUtils.bind(this,function(b){b=
(f?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(b);null!=l&&l(b);return b});c.mathEnabled&&this.editor.addMathCss(n);if(null!=l)this.embedFonts(n,mxUtils.bind(this,function(b){t?this.editor.convertImages(b,mxUtils.bind(this,function(b){d(b)})):d(b)}));else return d(n)};EditorUi.prototype.embedFonts=function(b,c){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(b,this.editor.resolvedFontCss),
-this.editor.embedExtFonts(mxUtils.bind(this,function(d){try{null!=d&&this.editor.addFontCss(b,d),c(b)}catch(p){c(b)}}))}catch(g){c(b)}}))};EditorUi.prototype.exportImage=function(b,c,e,f,l,n,v,t,q,y,I,D,F){q=null!=q?q:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(b){this.spinner.stop();try{this.saveCanvas(b,
-l?this.getFileData(!0,null,null,null,e,t):null,q,null==this.pages||0==this.pages.length,I)}catch(B){this.handleError(B)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,e,b||1,c,f,null,null,n,v,y,D,F)}catch(O){this.spinner.stop(),this.handleError(O)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,e,f,l,n,v){c=null!=c?c:0;e=null!=e?e:0;var d=[];try{var g=
+this.editor.embedExtFonts(mxUtils.bind(this,function(d){try{null!=d&&this.editor.addFontCss(b,d),c(b)}catch(p){c(b)}}))}catch(g){c(b)}}))};EditorUi.prototype.exportImage=function(b,c,e,f,l,n,v,t,q,y,I,D,G){q=null!=q?q:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(b){this.spinner.stop();try{this.saveCanvas(b,
+l?this.getFileData(!0,null,null,null,e,t):null,q,null==this.pages||0==this.pages.length,I)}catch(B){this.handleError(B)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,e,b||1,c,f,null,null,n,v,y,D,G)}catch(O){this.spinner.stop(),this.handleError(O)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,e,f,l,n,v){c=null!=c?c:0;e=null!=e?e:0;var d=[];try{var g=
this.editor.graph;if(null!=b&&0<b.length){g.model.beginUpdate();try{var k=mxUtils.parseXml(b);b={};var m=this.editor.extractGraphModel(k.documentElement,null!=this.pages);if(null!=m&&"mxfile"==m.nodeName&&null!=this.pages){var p=m.getElementsByTagName("diagram");if(1==p.length&&!n){if(m=Editor.parseDiagramNode(p[0]),null!=this.currentPage&&(b[p[0].getAttribute("id")]=this.currentPage.getId(),null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",
-[1]))){var u=p[0].getAttribute("name");null!=u&&""!=u&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,u))}}else if(0<p.length){n=[];var q=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[p[0].getAttribute("id")]=this.pages[0].getId(),m=Editor.parseDiagramNode(p[0]),f=!1,q=1);for(;q<p.length;q++){var O=p[q].getAttribute("id");p[q].removeAttribute("id");var B=this.updatePageRoot(new DiagramPage(p[q]));b[O]=p[q].getAttribute("id");var G=this.pages.length;null==
-B.getName()&&B.setName(mxResources.get("pageWithNumber",[G+1]));g.model.execute(new ChangePage(this,B,B,G,!0));n.push(B)}this.updatePageLinks(b,n)}}if(null!=m&&"mxGraphModel"===m.nodeName){d=g.importGraphModel(m,c,e,f);if(null!=d)for(q=0;q<d.length;q++)this.updatePageLinksForCell(b,d[q]);var H=g.parseBackgroundImage(m.getAttribute("backgroundImage"));if(null!=H&&null!=H.originalSrc){this.updateBackgroundPageLink(b,H);var L=new ChangePageSetup(this,null,H);L.ignoreColor=!0;g.model.execute(L)}}v&&this.insertHandler(d,
+[1]))){var u=p[0].getAttribute("name");null!=u&&""!=u&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,u))}}else if(0<p.length){n=[];var q=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[p[0].getAttribute("id")]=this.pages[0].getId(),m=Editor.parseDiagramNode(p[0]),f=!1,q=1);for(;q<p.length;q++){var O=p[q].getAttribute("id");p[q].removeAttribute("id");var B=this.updatePageRoot(new DiagramPage(p[q]));b[O]=p[q].getAttribute("id");var E=this.pages.length;null==
+B.getName()&&B.setName(mxResources.get("pageWithNumber",[E+1]));g.model.execute(new ChangePage(this,B,B,E,!0));n.push(B)}this.updatePageLinks(b,n)}}if(null!=m&&"mxGraphModel"===m.nodeName){d=g.importGraphModel(m,c,e,f);if(null!=d)for(q=0;q<d.length;q++)this.updatePageLinksForCell(b,d[q]);var H=g.parseBackgroundImage(m.getAttribute("backgroundImage"));if(null!=H&&null!=H.originalSrc){this.updateBackgroundPageLink(b,H);var L=new ChangePageSetup(this,null,H);L.ignoreColor=!0;g.model.execute(L)}}v&&this.insertHandler(d,
null,null,g.defaultVertexStyle,g.defaultEdgeStyle,!1,!0)}finally{g.model.endUpdate()}}}catch(N){if(l)throw N;this.handleError(N)}return d};EditorUi.prototype.updatePageLinks=function(b,c){for(var d=0;d<c.length;d++)this.updatePageLinksForCell(b,c[d].root),null!=c[d].viewState&&this.updateBackgroundPageLink(b,c[d].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(b,c){try{if(null!=c&&Graph.isPageLink(c.originalSrc)){var d=b[c.originalSrc.substring(c.originalSrc.indexOf(",")+
1)];null!=d&&(c.originalSrc="data:page/id,"+d)}}catch(p){}};EditorUi.prototype.updatePageLinksForCell=function(b,c){var d=document.createElement("div"),e=this.editor.graph,f=e.getLinkForCell(c);null!=f&&e.setLinkForCell(c,this.updatePageLink(b,f));if(e.isHtmlLabel(c)){d.innerHTML=e.sanitizeHtml(e.getLabel(c));for(var k=d.getElementsByTagName("a"),l=!1,n=0;n<k.length;n++)f=k[n].getAttribute("href"),null!=f&&(k[n].setAttribute("href",this.updatePageLink(b,f)),l=!0);l&&e.labelChanged(c,d.innerHTML)}for(n=
0;n<e.model.getChildCount(c);n++)this.updatePageLinksForCell(b,e.model.getChildAt(c,n))};EditorUi.prototype.updatePageLink=function(b,c){if(Graph.isPageLink(c)){var d=b[c.substring(c.indexOf(",")+1)];c=null!=d?"data:page/id,"+d:null}else if("data:action/json,"==c.substring(0,17))try{var e=JSON.parse(c.substring(17));if(null!=e.actions){for(var f=0;f<e.actions.length;f++){var k=e.actions[f];if(null!=k.open&&Graph.isPageLink(k.open)){var l=k.open.substring(k.open.indexOf(",")+1),d=b[l];null!=d?k.open=
"data:page/id,"+d:null==this.getPageById(l)&&delete k.open}}c="data:action/json,"+JSON.stringify(e)}}catch(t){}return c};EditorUi.prototype.isRemoteVisioFormat=function(b){return/(\.v(sd|dx))($|\?)/i.test(b)||/(\.vs(s|x))($|\?)/i.test(b)};EditorUi.prototype.importVisio=function(b,c,e,f,l){f=null!=f?f:b.name;e=null!=e?e:mxUtils.bind(this,function(b){this.handleError(b)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var d=this.isRemoteVisioFormat(f);try{var g=
"UNKNOWN-VISIO",k=f.lastIndexOf(".");if(0<=k&&k<f.length)g=f.substring(k+1).toUpperCase();else{var m=f.lastIndexOf("/");0<=m&&m<f.length&&(f=f.substring(m+1))}EditorUi.logEvent({category:g+"-MS-IMPORT-FILE",action:"filename_"+f,label:d?"remote":"local"})}catch(D){}if(d)if(null==VSD_CONVERT_URL||this.isOffline())e({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{d=new FormData;d.append("file1",b,f);var n=new XMLHttpRequest;
n.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(f)?"?stencil=1":""));n.responseType="blob";this.addRemoteServiceSecurityCheck(n);null!=l&&n.setRequestHeader("x-convert-custom",l);n.onreadystatechange=mxUtils.bind(this,function(){if(4==n.readyState)if(200<=n.status&&299>=n.status)try{var b=n.response;if("text/xml"==b.type){var d=new FileReader;d.onload=mxUtils.bind(this,function(b){try{c(b.target.result)}catch(O){e({message:mxResources.get("errorLoadingFile")})}});d.readAsText(b)}else this.doImportVisio(b,
-c,e,f)}catch(E){e(E)}else try{""==n.responseType||"text"==n.responseType?e({message:n.responseText}):(d=new FileReader,d.onload=function(){e({message:JSON.parse(d.result).Message})},d.readAsText(n.response))}catch(E){e({})}});n.send(d)}else try{this.doImportVisio(b,c,e,f)}catch(D){e(D)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
+c,e,f)}catch(F){e(F)}else try{""==n.responseType||"text"==n.responseType?e({message:n.responseText}):(d=new FileReader,d.onload=function(){e({message:JSON.parse(d.result).Message})},d.readAsText(n.response))}catch(F){e({})}});n.send(d)}else try{this.doImportVisio(b,c,e,f)}catch(D){e(D)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
d))};EditorUi.prototype.importGraphML=function(b,c,e){e=null!=e?e:mxUtils.bind(this,function(b){this.handleError(b)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(b,c,e)}catch(m){e(m)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.exportVisio=
function(b){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(b)||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.convertLucidChart=
function(b,c,e){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var d=JSON.parse(b);c(LucidImporter.importState(d));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+b.length}),null!=window.console&&"1"==urlParams.test){var g=[(new Date).toISOString(),"convertLucidChart",d];null!=d.state&&g.push(JSON.parse(d.state));if(null!=d.svgThumbs)for(var f=0;f<d.svgThumbs.length;f++)g.push(Editor.createSvgDataUri(d.svgThumbs[f]));
@@ -3627,7 +3627,7 @@ b);b-=26;return 0==b?"-":1==b?"_":"?"}var k=new XMLHttpRequest;k.open("GET",("tx
c)e(this.response);else{var d=new FileReader;d.readAsDataURL(this.response);d.onloadend=function(b){var c=new Image;c.onload=function(){try{var b=c.width,g=c.height;if(0==b&&0==g){var k=d.result,l=k.indexOf(","),m=decodeURIComponent(escape(atob(k.substring(l+1)))),n=mxUtils.parseXml(m).getElementsByTagName("svg");0<n.length&&(b=parseFloat(n[0].getAttribute("width")),g=parseFloat(n[0].getAttribute("height")))}e(d.result,b,g)}catch(H){f(H)}};c.src=d.result};d.onerror=function(b){f(b)}}else f(b)};k.onerror=
function(b){f(b)};k.send()};EditorUi.prototype.insertAsPreText=function(b,c,e){var d=this.editor.graph,g=null;d.getModel().beginUpdate();try{g=d.insertVertex(null,null,"<pre>"+b+"</pre>",c,e,1,1,"text;html=1;align=left;verticalAlign=top;"),d.updateCellSize(g,!0)}finally{d.getModel().endUpdate()}return g};EditorUi.prototype.insertTextAt=function(b,c,e,f,l,n,q,t){n=null!=n?n:!0;q=null!=q?q:!0;if(null!=b)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b))this.parseFileData(b.replace(/\s+/g,
" "),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&this.editor.graph.setSelectionCells(this.insertTextAt(b.responseText,c,e,!0))}));else if("data:"==b.substring(0,5)||!this.isOffline()&&(l||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b))){var d=this.editor.graph;if("data:application/pdf;base64,"==b.substring(0,28)){var g=Editor.extractGraphModelFromPdf(b);if(null!=g&&0<g.length)return this.importXml(g,c,e,n,!0,t)}if(Editor.isPngDataUrl(b)&&(g=Editor.extractGraphModelFromPng(b),
-null!=g&&0<g.length))return this.importXml(g,c,e,n,!0,t);if("data:image/svg+xml;"==b.substring(0,19))try{g=null;"data:image/svg+xml;base64,"==b.substring(0,26)?(g=b.substring(b.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(b.substring(b.indexOf(",")+1));var k=this.importXml(g,c,e,n,!0,t);if(0<k.length)return k}catch(F){}this.loadImage(b,mxUtils.bind(this,function(g){if("data:"==b.substring(0,5))this.resizeImage(g,b,mxUtils.bind(this,function(b,g,
+null!=g&&0<g.length))return this.importXml(g,c,e,n,!0,t);if("data:image/svg+xml;"==b.substring(0,19))try{g=null;"data:image/svg+xml;base64,"==b.substring(0,26)?(g=b.substring(b.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(b.substring(b.indexOf(",")+1));var k=this.importXml(g,c,e,n,!0,t);if(0<k.length)return k}catch(G){}this.loadImage(b,mxUtils.bind(this,function(g){if("data:"==b.substring(0,5))this.resizeImage(g,b,mxUtils.bind(this,function(b,g,
f){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),g,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(b)+";"))}),q,this.maxImageSize);else{var f=Math.min(1,Math.min(this.maxImageSize/g.width,this.maxImageSize/g.height)),k=Math.round(g.width*f);g=Math.round(g.height*f);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),k,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
b+";"))}}),mxUtils.bind(this,function(){var g=null;d.getModel().beginUpdate();try{g=d.insertVertex(d.getDefaultParent(),null,b,d.snap(c),d.snap(e),1,1,"text;"+(f?"html=1;":"")),d.updateCellSize(g),d.fireEvent(new mxEventObject("textInserted","cells",[g]))}finally{d.getModel().endUpdate()}d.setSelectionCell(g)}))}else{b=Graph.zapGremlins(mxUtils.trim(b));if(this.isCompatibleString(b))return this.importXml(b,c,e,n,null,t);if(0<b.length)if(this.isLucidChartData(b))this.convertLucidChart(b,mxUtils.bind(this,
function(b){this.editor.graph.setSelectionCells(this.importXml(b,c,e,n,null,t))}),mxUtils.bind(this,function(b){this.handleError(b)}));else{d=this.editor.graph;l=null;d.getModel().beginUpdate();try{l=d.insertVertex(d.getDefaultParent(),null,"",d.snap(c),d.snap(e),1,1,"text;whiteSpace=wrap;"+(f?"html=1;":""));d.fireEvent(new mxEventObject("textInserted","cells",[l]));"<"==b.charAt(0)&&b.indexOf(">")==b.length-1&&(b=mxUtils.htmlEntities(b));b.length>this.maxTextBytes&&(b=b.substring(0,this.maxTextBytes)+
@@ -3641,8 +3641,8 @@ EditorUi.prototype.importZipFile=function(b,c,e){var d=this,g=mxUtils.bind(this,
null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,q)):d=this.importXml(b,e,f,y,null,null!=D?mxEvent.isControlDown(D):null);null!=t&&t(d)});"image"==c.substring(0,5)?(z=!1,"image/png"==c.substring(0,9)&&(c=I?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(g=this.importXml(c,e,f,y,null,null!=D?mxEvent.isControlDown(D):null),z=!0)),z||(c=this.editor.graph,z=b.indexOf(";"),0<z&&(b=b.substring(0,z)+b.substring(b.indexOf(",",z+1))),y&&c.isGridEnabled()&&(e=c.snap(e),
f=c.snap(f)),g=[c.insertVertex(null,null,"",e,f,l,n,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b+";")])):/(\.*<graphml )/.test(b)?(d=!0,this.importGraphML(b,k)):null!=z&&null!=q&&(/(\.v(dx|sdx?))($|\?)/i.test(q)||/(\.vs(x|sx?))($|\?)/i.test(q))?(d=!0,this.importVisio(z,k)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,q)?(d=!0,l=mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&
299>=b.status?k(b.responseText):null!=t&&t(null))}),null!=b?this.parseFileData(b,l,q):this.parseFile(z,l,q)):0==b.indexOf("PK")&&null!=z?(d=!0,this.importZipFile(z,k,mxUtils.bind(this,function(){g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,y);t(g)}))):/(\.v(sd|dx))($|\?)/i.test(q)||/(\.vs(s|x))($|\?)/i.test(q)||(g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,y,null,null!=D?mxEvent.isControlDown(D):null));d||null==t||t(g);return g};EditorUi.prototype.importFiles=function(b,c,
-e,f,l,n,q,t,z,y,I,D,F){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var d=null!=c&&null!=e,g=!0;c=null!=c?c:0;e=null!=e?e:0;var k=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=I||this.resampleThreshold,p=0;p<b.length;p++)if("image/"==b[p].type.substring(0,6)&&b[p].size>m){k=!0;break}var u=mxUtils.bind(this,function(){var k=this.editor.graph,m=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(b,c,e,g,f,k,l,m,n){try{return null!=b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),
-this.loadLibrary(new LocalLibrary(this,b,l)),null):this.importFile(b,c,e,g,f,k,l,m,n,d,D,F)}catch(qa){return this.handleError(qa),null}});n=null!=n?n:mxUtils.bind(this,function(b){k.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=b.length,u=p,v=[],z=mxUtils.bind(this,function(b,d){v[b]=d;if(0==--u){this.spinner.stop();if(null!=t)t(v);else{var c=[];k.getModel().beginUpdate();try{for(var e=0;e<v.length;e++){var g=v[e]();null!=g&&(c=c.concat(g))}}finally{k.getModel().endUpdate()}}n(c)}}),
+e,f,l,n,q,t,z,y,I,D,G){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var d=null!=c&&null!=e,g=!0;c=null!=c?c:0;e=null!=e?e:0;var k=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=I||this.resampleThreshold,p=0;p<b.length;p++)if("image/"==b[p].type.substring(0,6)&&b[p].size>m){k=!0;break}var u=mxUtils.bind(this,function(){var k=this.editor.graph,m=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(b,c,e,g,f,k,l,m,n){try{return null!=b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),
+this.loadLibrary(new LocalLibrary(this,b,l)),null):this.importFile(b,c,e,g,f,k,l,m,n,d,D,G)}catch(pa){return this.handleError(pa),null}});n=null!=n?n:mxUtils.bind(this,function(b){k.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=b.length,u=p,v=[],z=mxUtils.bind(this,function(b,d){v[b]=d;if(0==--u){this.spinner.stop();if(null!=t)t(v);else{var c=[];k.getModel().beginUpdate();try{for(var e=0;e<v.length;e++){var g=v[e]();null!=g&&(c=c.concat(g))}}finally{k.getModel().endUpdate()}}n(c)}}),
B=0;B<p;B++)mxUtils.bind(this,function(d){var n=b[d];if(null!=n){var p=new FileReader;p.onload=mxUtils.bind(this,function(b){if(null==q||q(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var p=Graph.clipSvgDataUri(b.target.result),t=p.indexOf(","),u=decodeURIComponent(escape(atob(p.substring(t+1)))),v=mxUtils.parseXml(u),u=v.getElementsByTagName("svg");if(0<u.length){var u=u[0],x=D?null:u.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?
atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?z(d,mxUtils.bind(this,function(){try{if(p.substring(0,t+1),null!=v){var b=v.getElementsByTagName("svg");if(0<b.length){var g=b[0],q=g.getAttribute("width"),u=g.getAttribute("height"),q=null!=q&&"%"!=q.charAt(q.length-1)?parseFloat(q):NaN,u=null!=u&&"%"!=u.charAt(u.length-1)?parseFloat(u):NaN,y=g.getAttribute("viewBox");if(null==y||0==y.length)g.setAttribute("viewBox",
"0 0 "+q+" "+u);else if(isNaN(q)||isNaN(u)){var x=y.split(" ");3<x.length&&(q=parseFloat(x[2]),u=parseFloat(x[3]))}p=Editor.createSvgDataUri(mxUtils.getXml(g));var z=Math.min(1,Math.min(f/Math.max(1,q)),f/Math.max(1,u)),B=l(p,n.type,c+d*m,e+d*m,Math.max(1,Math.round(q*z)),Math.max(1,Math.round(u*z)),n.name);if(isNaN(q)||isNaN(u)){var M=new Image;M.onload=mxUtils.bind(this,function(){q=Math.max(1,M.width);u=Math.max(1,M.height);B[0].geometry.width=q;B[0].geometry.height=u;g.setAttribute("viewBox",
@@ -3653,7 +3653,7 @@ function(b){z(d,function(){return b})},n)});/(\.v(dx|sdx?))($|\?)/i.test(n.name)
null!=this.spinner.pause?this.spinner.pause():function(){},e=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,f=function(e,g){if(e||c)mxSettings.setResizeImages(e?g:null),mxSettings.save();d();b(g)};null==e||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){f(b,!0)},function(b){f(b,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+
Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):f(!1,e)};EditorUi.prototype.parseFile=function(b,c,e){e=null!=e?e:b.name;var d=new FileReader;d.onload=mxUtils.bind(this,function(){this.parseFileData(d.result,c,e)});d.readAsText(b)};EditorUi.prototype.parseFileData=function(b,c,e){var d=new XMLHttpRequest;d.open("POST",OPEN_URL);d.setRequestHeader("Content-Type","application/x-www-form-urlencoded");d.onreadystatechange=
function(){c(d)};d.send("format=xml&filename="+encodeURIComponent(e)+"&data="+encodeURIComponent(b));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(m){}};EditorUi.prototype.isResampleImageSize=function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,e,f,l,n,q){l=null!=l?l:this.maxImageSize;var d=Math.max(1,b.width),g=Math.max(1,b.height);if(f&&this.isResampleImageSize(null!=q?q:c.length,n))try{var k=Math.max(d/
-l,g/l);if(1<k){var m=Math.round(d/k),p=Math.round(g/k),u=document.createElement("canvas");u.width=m;u.height=p;u.getContext("2d").drawImage(b,0,0,m,p);var v=u.toDataURL();if(v.length<c.length){var O=document.createElement("canvas");O.width=m;O.height=p;var B=O.toDataURL();v!==B&&(c=v,d=m,g=p)}}}catch(G){}e(c,d,g)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,e){try{var d=new Image;d.onload=function(){d.width=
+l,g/l);if(1<k){var m=Math.round(d/k),p=Math.round(g/k),u=document.createElement("canvas");u.width=m;u.height=p;u.getContext("2d").drawImage(b,0,0,m,p);var v=u.toDataURL();if(v.length<c.length){var O=document.createElement("canvas");O.width=m;O.height=p;var B=O.toDataURL();v!==B&&(c=v,d=m,g=p)}}}catch(E){}e(c,d,g)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,e){try{var d=new Image;d.onload=function(){d.width=
0<d.width?d.width:120;d.height=0<d.height?d.height:120;c(d)};null!=e&&(d.onerror=e);d.src=b}catch(m){if(null!=e)e(m);else throw m;}};EditorUi.prototype.getDefaultSketchMode=function(){var b="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?urlParams.rough:b)};var n=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=
mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:this.getDefaultSketchMode()),null!=mxSettings.settings.sidebarTitles&&(Sidebar.prototype.sidebarTitles=mxSettings.settings.sidebarTitles),this.formatWidth=mxSettings.getFormatWidth());var b=this,c=this.editor.graph;Editor.isDarkMode()&&(c.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);Graph.touchStyle&&(c.panningHandler.isPanningTrigger=function(b){var d=b.getEvent();return null==b.getState()&&
!mxEvent.isMouseEvent(d)&&!c.freehand.isDrawing()||mxEvent.isPopupTrigger(d)&&(null==b.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))});c.cellEditor.editPlantUmlData=function(d,e,g){var f=JSON.parse(g);e=new TextareaDialog(b,mxResources.get("plantUml")+":",f.data,function(e){null!=e&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generatePlantUmlImage(e,f.format,function(g,k,l){b.spinner.stop();c.getModel().beginUpdate();try{if("txt"==f.format)c.labelChanged(d,"<pre>"+
@@ -3667,15 +3667,15 @@ f;this.stylesheet=g}return e};var v=this.clearDefaultStyle;this.clearDefaultStyl
function(b){b=null!=b?b:"";"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1");return t.apply(this,arguments)};var z=c.addClickHandler;c.addClickHandler=function(b,d,e){var g=d;d=function(b,d){if(null==d){var e=mxEvent.getSource(b);"a"==e.nodeName.toLowerCase()&&(d=e.getAttribute("href"))}null!=d&&c.isCustomLink(d)&&(mxEvent.isTouchEvent(b)||!mxEvent.isPopupTrigger(b))&&c.customLinkClicked(d)&&mxEvent.consume(b);null!=g&&g(b,d)};z.call(this,b,d,e)};n.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(c.view.canvas.ownerSVGElement,
null,!0);if(null!=this.menus){var y=Menus.prototype.addPopupMenuEditItems;this.menus.addPopupMenuEditItems=function(d,c,e){b.editor.graph.isSelectionEmpty()?y.apply(this,arguments):b.menus.addMenuItems(d,"delete - cut copy copyAsImage - duplicate".split(" "),null,e)}}b.actions.get("print").funct=function(){b.showDialog((new PrintDialog(b)).container,360,null!=b.pages&&1<b.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var I=c.getExportVariables;c.getExportVariables=
function(){var d=I.apply(this,arguments),c=b.getCurrentFile();null!=c&&(d.filename=c.getTitle());d.pagecount=null!=b.pages?b.pages.length:1;d.page=null!=b.currentPage?b.currentPage.getName():"";d.pagenumber=null!=b.pages&&null!=b.currentPage?mxUtils.indexOf(b.pages,b.currentPage)+1:1;return d};var D=c.getGlobalVariable;c.getGlobalVariable=function(d){var c=b.getCurrentFile();return"filename"==d&&null!=c?c.getTitle():"page"==d&&null!=b.currentPage?b.currentPage.getName():"pagenumber"==d?null!=b.currentPage&&
-null!=b.pages?mxUtils.indexOf(b.pages,b.currentPage)+1:1:"pagecount"==d?null!=b.pages?b.pages.length:1:D.apply(this,arguments)};var F=c.labelLinkClicked;c.labelLinkClicked=function(b,d,e){var g=d.getAttribute("href");if(null==g||!c.isCustomLink(g)||!mxEvent.isTouchEvent(e)&&mxEvent.isPopupTrigger(e))F.apply(this,arguments);else{if(!c.isEnabled()||null!=b&&c.isCellLocked(b.cell))c.customLinkClicked(g),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=function(){var d=b.defaultFilename,
-c=b.getCurrentFile();null!=c&&(d=null!=c.getTitle()?c.getTitle():d);return d};var E=this.actions.get("print");E.setEnabled(!mxClient.IS_IOS||!navigator.standalone);E.visible=E.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,
+null!=b.pages?mxUtils.indexOf(b.pages,b.currentPage)+1:1:"pagecount"==d?null!=b.pages?b.pages.length:1:D.apply(this,arguments)};var G=c.labelLinkClicked;c.labelLinkClicked=function(b,d,e){var g=d.getAttribute("href");if(null==g||!c.isCustomLink(g)||!mxEvent.isTouchEvent(e)&&mxEvent.isPopupTrigger(e))G.apply(this,arguments);else{if(!c.isEnabled()||null!=b&&c.isCellLocked(b.cell))c.customLinkClicked(g),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=function(){var d=b.defaultFilename,
+c=b.getCurrentFile();null!=c&&(d=null!=c.getTitle()?c.getTitle():d);return d};var F=this.actions.get("print");F.setEnabled(!mxClient.IS_IOS||!navigator.standalone);F.visible=F.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,
!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.spinner=this.createSpinner(null,null,24);Graph.fileSupport&&c.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(b){var d=c.cellEditor.text2,e=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(b){null!=e&&(e.parentNode.removeChild(e),e=null);b.stopPropagation();b.preventDefault()}),mxEvent.addListener(d,
"dragover",mxUtils.bind(this,function(b){null==e&&(!mxClient.IS_IE||10<document.documentMode)&&(e=this.highlightElement(d));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(d,"drop",mxUtils.bind(this,function(b){null!=e&&(e.parentNode.removeChild(e),e=null);if(0<b.dataTransfer.files.length)this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,function(b,d,e,g,f,k){c.insertImage(b,f,k)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()},
mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(b){var e=Math.max(1,b.width);b=Math.max(1,b.height);var g=this.maxImageSize,g=Math.min(1,Math.min(g/Math.max(1,e)),g/Math.max(1,b));c.insertImage(decodeURIComponent(d),e*g,b*g)})):document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"))}else 0<=
-mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"));b.stopPropagation();b.preventDefault()})))}));this.isSettingsEnabled()&&(E=this.editor.graph.view,E.setUnit(mxSettings.getUnit()),E.addListener("unitChanged",function(b,d){mxSettings.setUnit(d.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||
-9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,E.unit),this.refresh());if("1"==urlParams.styledev){E=document.getElementById("geFooter");null!=E&&(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)})),E.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,d){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||
-"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var O=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:O.apply(this,arguments)}}E=document.getElementById("geInfo");null!=E&&E.parentNode.removeChild(E);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var B=null;mxEvent.addListener(c.container,"dragleave",function(b){c.isEnabled()&&(null!=B&&(B.parentNode.removeChild(B),
+mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"));b.stopPropagation();b.preventDefault()})))}));this.isSettingsEnabled()&&(F=this.editor.graph.view,F.setUnit(mxSettings.getUnit()),F.addListener("unitChanged",function(b,d){mxSettings.setUnit(d.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||
+9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,F.unit),this.refresh());if("1"==urlParams.styledev){F=document.getElementById("geFooter");null!=F&&(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)})),F.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,d){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||
+"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var O=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:O.apply(this,arguments)}}F=document.getElementById("geInfo");null!=F&&F.parentNode.removeChild(F);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var B=null;mxEvent.addListener(c.container,"dragleave",function(b){c.isEnabled()&&(null!=B&&(B.parentNode.removeChild(B),
B=null),b.stopPropagation(),b.preventDefault())});mxEvent.addListener(c.container,"dragover",mxUtils.bind(this,function(b){null==B&&(!mxClient.IS_IE||10<document.documentMode)&&(B=this.highlightElement(c.container));null!=this.sidebar&&this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(b){null!=B&&(B.parentNode.removeChild(B),B=null);if(c.isEnabled()){var d=mxUtils.convertPoint(c.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),
e=c.view.translate,g=c.view.scale,f=d.x/g-e.x,k=d.y/g-e.y;if(0<b.dataTransfer.files.length)mxEvent.isShiftDown(b)?this.openFiles(b.dataTransfer.files,!0):(mxEvent.isAltDown(b)&&(k=f=null),this.importFiles(b.dataTransfer.files,f,k,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(b),null,null,mxEvent.isShiftDown(b),b));else{mxEvent.isAltDown(b)&&(k=f=0);var l=0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(b,
null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,f,k,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var n=null,e=d.getElementsByTagName("img");null!=e&&1==e.length?(m=e[0].getAttribute("src"),null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(n=!0)):(e=d.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):
@@ -3731,7 +3731,7 @@ this.editor.modified=null!=e?e:!1;this.updateUi();window.self!==window.top&&wind
function(b){var d=this.editor.graph;return{event:b,pageVisible:d.pageVisible,translate:d.view.translate,bounds:d.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:d.view.scale,page:d.view.getBackgroundPageBounds()}};EditorUi.prototype.sendEmbeddedSvgExport=function(b){var d=this.editor.graph;d.isEditing()&&d.stopEditing(!d.isInvokesStopCellEditing());var c=window.opener||window.parent;if(this.editor.modified){var e=d.background;if(null==e||e==mxConstants.NONE)e=this.embedExportBackground;
this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),d,null,!0,mxUtils.bind(this,function(d){c.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=b?!b:!0,data:Editor.createSvgDataUri(d)}),"*")}),null,null,!0,e,1,this.embedExportBorder)}else b||c.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");b||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,d.model.clear(),this.editor.undoManager.clear(),
this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(b){var d=null,c=!1,e=!1,f=null,l=mxUtils.bind(this,function(b,d){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE,l);mxEvent.addListener(window,"message",mxUtils.bind(this,
-function(g){if(g.source==(window.opener||window.parent)){var k=g.data,l=null,m=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):"data:image/svg+xml;utf8,"==b.substring(0,24)&&(b=b.substring(24)),null!=b&&("%"==b.charAt(0)?b=decodeURIComponent(b):"<"!=b.charAt(0)&&(b=Graph.decompress(b)))}catch(na){}return b});if("json"==urlParams.proto){var p=
+function(g){if(g.source==(window.opener||window.parent)){var k=g.data,l=null,m=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):"data:image/svg+xml;utf8,"==b.substring(0,24)&&(b=b.substring(24)),null!=b&&("%"==b.charAt(0)?b=decodeURIComponent(b):"<"!=b.charAt(0)&&(b=Graph.decompress(b)))}catch(ma){}return b});if("json"==urlParams.proto){var p=
!1;try{k=JSON.parse(k)}catch(K){k=null}try{if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("layout"==k.action){this.executeLayoutList(k.layouts);return}if("prompt"==k.action){this.spinner.stop();var q=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):
k.ok,function(b){null!=b?n.postMessage(JSON.stringify({event:"prompt",value:b,message:k}),"*"):n.postMessage(JSON.stringify({event:"prompt-cancel",message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(q.container,300,80,!0,!1);q.init();return}if("draft"==k.action){var t=m(k.xml);this.spinner.stop();q=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),t,mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",
result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(q.container,640,480,!0,!1,mxUtils.bind(this,function(b){b&&this.actions.get("exit").funct()}));
@@ -3740,45 +3740,45 @@ builtIn:null!=c.info&&null!=c.info.custContentId,message:k}),"*")},mxUtils.bind(
null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(N.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,k.templatesOnly?!1:null!=k.callback,mxUtils.bind(this,function(d,c,e,f){d=d||this.emptyDiagramXml;null!=k.callback?n.postMessage(JSON.stringify({event:"template",xml:d,blank:d==this.emptyDiagramXml,name:c,tempUrl:e,libs:f,builtIn:!0,message:k}),"*"):(b(d,g,d!=this.emptyDiagramXml,k.toSketch),this.editor.modified||this.editor.setStatus(""))}),
null,null,null,null,null,null,null,u?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,v?mxUtils.bind(this,function(b,d){this.remoteInvoke("searchDiagrams",[b,null],null,d,function(){d(null,"Network Error!")})}):null,mxUtils.bind(this,function(b,d,c){n.postMessage(JSON.stringify({event:"template",docUrl:b,info:d,name:c}),"*")}),null,null,z?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},
0)})}):null,1==k.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==k.action){var M=this.getDiagramTextContent();n.postMessage(JSON.stringify({event:"textContent",data:M,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));
-null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var P=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,P):this.spinner.stop();return}if("exit"==k.action){this.actions.get("exit").funct();return}if("viewport"==k.action){null!=k.viewport&&(this.embedViewport=k.viewport);return}if("snapshot"==k.action){this.sendEmbeddedSvgExport(!0);return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==
-k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var V=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var W=this.editor.graph,ga=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var d=this.createLoadMessage("export");d.format=k.format;d.message=k;d.data=b;d.xml=V;n.postMessage(JSON.stringify(d),"*")}),ea=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&
-(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(V)));W!=this.editor.graph&&W.container.parentNode.removeChild(W.container);ga(b)}),ba=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var x=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=ba){var b=W.getGlobalVariable;W=this.createTemporaryGraph(W.getStylesheet());for(var d,c=0;c<this.pages.length;c++)if(this.pages[c].getId()==ba){d=
-this.updatePageRoot(this.pages[c]);break}null==d&&(d=this.currentPage);W.getGlobalVariable=function(c){return"page"==c?d.getName():"pagenumber"==c?1:b.apply(this,arguments)};document.body.appendChild(W.container);W.model.setRoot(d.root)}if(null!=k.layerIds){for(var e=W.model,g=e.getChildCells(e.getRoot()),f={},c=0;c<k.layerIds.length;c++)f[k.layerIds[c]]=!0;for(c=0;c<g.length;c++)e.setVisible(g[c],f[g[c].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){ea(b.toDataURL("image/png"))}),
-k.width,null,k.background,mxUtils.bind(this,function(){ea(null)}),null,null,k.scale,k.transparent,k.shadow,null,W,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(V),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},0):x()):x()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=ba?"&pageId="+ba:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):
-"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(V))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?ga("data:image/png;base64,"+b.getText()):ea(null)}),mxUtils.bind(this,function(){ea(null)}))}}else x=mxUtils.bind(this,function(){var b=this.createLoadMessage("export");b.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var d=this.getXmlFileData();b.xml=mxUtils.getXml(d);b.data=this.getFileData(null,
+null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var R=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,R):this.spinner.stop();return}if("exit"==k.action){this.actions.get("exit").funct();return}if("viewport"==k.action){null!=k.viewport&&(this.embedViewport=k.viewport);return}if("snapshot"==k.action){this.sendEmbeddedSvgExport(!0);return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==
+k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var W=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var X=this.editor.graph,fa=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var d=this.createLoadMessage("export");d.format=k.format;d.message=k;d.data=b;d.xml=W;n.postMessage(JSON.stringify(d),"*")}),da=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&
+(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(W)));X!=this.editor.graph&&X.container.parentNode.removeChild(X.container);fa(b)}),ba=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var x=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=ba){var b=X.getGlobalVariable;X=this.createTemporaryGraph(X.getStylesheet());for(var d,c=0;c<this.pages.length;c++)if(this.pages[c].getId()==ba){d=
+this.updatePageRoot(this.pages[c]);break}null==d&&(d=this.currentPage);X.getGlobalVariable=function(c){return"page"==c?d.getName():"pagenumber"==c?1:b.apply(this,arguments)};document.body.appendChild(X.container);X.model.setRoot(d.root)}if(null!=k.layerIds){for(var e=X.model,g=e.getChildCells(e.getRoot()),f={},c=0;c<k.layerIds.length;c++)f[k.layerIds[c]]=!0;for(c=0;c<g.length;c++)e.setVisible(g[c],f[g[c].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){da(b.toDataURL("image/png"))}),
+k.width,null,k.background,mxUtils.bind(this,function(){da(null)}),null,null,k.scale,k.transparent,k.shadow,null,X,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(W),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},0):x()):x()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=ba?"&pageId="+ba:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):
+"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(W))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?fa("data:image/png;base64,"+b.getText()):da(null)}),mxUtils.bind(this,function(){da(null)}))}}else x=mxUtils.bind(this,function(){var b=this.createLoadMessage("export");b.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var d=this.getXmlFileData();b.xml=mxUtils.getXml(d);b.data=this.getFileData(null,
null,!0,null,null,null,d);b.format=k.format}else if("html"==k.format)d=this.editor.getGraphXml(),b.data=this.getHtml(d,this.editor.graph),b.xml=mxUtils.getXml(d),b.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;d=null!=k.background?k.background:this.editor.graph.background;d==mxConstants.NONE&&(d=null);b.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);b.format="svg";var c=mxUtils.bind(this,function(d){this.editor.graph.setEnabled(!0);this.spinner.stop();b.data=Editor.createSvgDataUri(d);
n.postMessage(JSON.stringify(b),"*")});if("xmlsvg"==k.format)(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))&&this.getEmbeddedSvg(b.xml,this.editor.graph,null,!0,c,null,null,k.embedImages,d,k.scale,k.border,k.shadow,k.keepTheme);else if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))this.editor.graph.setEnabled(!1),d=this.editor.graph.getSvg(d,k.scale,k.border,null,
null,null,null,null,null,this.editor.graph.shadowVisible||k.shadow,null,k.keepTheme),(this.editor.graph.shadowVisible||k.shadow)&&this.editor.graph.addSvgShadow(d),this.embedFonts(d,mxUtils.bind(this,function(b){k.embedImages||null==k.embedImages?this.editor.convertImages(b,mxUtils.bind(this,function(b){c(mxUtils.getXml(b))})):c(mxUtils.getXml(b))}));return}n.postMessage(JSON.stringify(b),"*")}),null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(k.xml),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},
0):x()):x();return}if("load"==k.action){p=k.toSketch;e=1==k.autosave;this.hideDialog();null!=k.modified&&null==urlParams.modified&&(urlParams.modified=k.modified);null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=k.saveAndExit);null!=k.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=k.noSaveBtn);if(null!=k.rough){var C=Editor.sketchMode;this.doSetSketchMode(k.rough);C!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=k.dark&&(C=Editor.darkMode,
this.doSetDarkMode(k.dark),C!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=k.border&&(this.embedExportBorder=k.border);null!=k.background&&(this.embedExportBackground=k.background);null!=k.viewport&&(this.embedViewport=k.viewport);this.embedExitPoint=null;if(null!=k.rect){var J=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=k.rect.top+"px";this.diagramContainer.style.left=k.rect.left+"px";this.diagramContainer.style.height=
k.rect.height+"px";this.diagramContainer.style.width=k.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";l=mxUtils.bind(this,function(){var b=this.editor.graph,d=b.maxFitScale;b.maxFitScale=k.maxFitScale;b.fit(2*J);b.maxFitScale=d;b.container.scrollTop-=2*J;b.container.scrollLeft-=2*J;this.fireEvent(new mxEventObject("editInlineStart","data",[k]))})}null!=k.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=k.noExitBtn);null!=k.title&&null!=this.buttonContainer&&
-(t=document.createElement("span"),mxUtils.write(t,k.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=t);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(K){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var X=this.getCurrentFile();null!=X&&(t=m(k.xml),null!=t&&""!=t&&X.mergeFile(new LocalFile(this,t),function(){n.postMessage(JSON.stringify({event:"merge",
-message:k}),"*")},function(b){n.postMessage(JSON.stringify({event:"merge",message:k,error:b}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(n):"remoteInvoke"==k.action?this.handleRemoteInvoke(k,g.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):n.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(K){this.handleError(K)}}var ca=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<
-this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),ka=mxUtils.bind(this,function(g,k){c=!0;try{b(g,k,null,p)}catch(pa){this.handleError(pa)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");f=ca();e&&null==d&&(d=mxUtils.bind(this,function(b,d){var e=ca();if(e!=f&&!c){var g=this.createLoadMessage("autosave");g.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}f=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,d),this.editor.graph.addListener("gridSizeChanged",
+(t=document.createElement("span"),mxUtils.write(t,k.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=t);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(K){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var ea=this.getCurrentFile();null!=ea&&(t=m(k.xml),null!=t&&""!=t&&ea.mergeFile(new LocalFile(this,t),function(){n.postMessage(JSON.stringify({event:"merge",
+message:k}),"*")},function(b){n.postMessage(JSON.stringify({event:"merge",message:k,error:b}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(n):"remoteInvoke"==k.action?this.handleRemoteInvoke(k,g.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):n.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(K){this.handleError(K)}}var V=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<
+this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),ja=mxUtils.bind(this,function(g,k){c=!0;try{b(g,k,null,p)}catch(oa){this.handleError(oa)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");f=V();e&&null==d&&(d=mxUtils.bind(this,function(b,d){var e=V();if(e!=f&&!c){var g=this.createLoadMessage("autosave");g.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}f=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,d),this.editor.graph.addListener("gridSizeChanged",
d),this.editor.graph.addListener("shadowVisibleChanged",d),this.addListener("pageFormatChanged",d),this.addListener("pageScaleChanged",d),this.addListener("backgroundColorChanged",d),this.addListener("backgroundImageChanged",d),this.addListener("foldingEnabledChanged",d),this.addListener("mathEnabledChanged",d),this.addListener("gridEnabledChanged",d),this.addListener("guidesEnabledChanged",d),this.addListener("pageViewChanged",d));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var m=this.createLoadMessage("load");
-m.xml=g;n.postMessage(JSON.stringify(m),"*")}null!=l&&l()});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(m="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(b){ka(b,g)},mxUtils.bind(this,function(b){this.handleError(b)}),m)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFileData(k,mxUtils.bind(this,
-function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&ka(b.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){ka(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),ka(k,g)):this.loadDescriptor(k,mxUtils.bind(this,function(b){ka(ca(),g)}),mxUtils.bind(this,function(b){this.handleError(b,
+m.xml=g;n.postMessage(JSON.stringify(m),"*")}null!=l&&l()});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(m="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(b){ja(b,g)},mxUtils.bind(this,function(b){this.handleError(b)}),m)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFileData(k,mxUtils.bind(this,
+function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&ja(b.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){ja(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),ja(k,g)):this.loadDescriptor(k,mxUtils.bind(this,function(b){ja(V(),g)}),mxUtils.bind(this,function(b){this.handleError(b,
mxResources.get("errorLoadingFile"))}))}}));var n=window.opener||window.parent,l="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";n.postMessage(l,"*");if("json"==urlParams.proto){var q=this.editor.graph.openLink;this.editor.graph.openLink=function(b,d,c){q.apply(this,arguments);n.postMessage(JSON.stringify({event:"openLink",href:b,target:d,allowOpener:c}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var b=document.createElement("div");
b.style.display="inline-block";b.style.position="absolute";b.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";b.style.paddingLeft="8px";b.style.paddingBottom="2px";var c=document.createElement("button");c.className="geBigButton";var e=c;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var f="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,f);c.setAttribute("title",f);mxEvent.addListener(c,"click",mxUtils.bind(this,
function(){this.actions.get("saveAndExit").funct()}));b.appendChild(c)}}else mxUtils.write(c,mxResources.get("save")),c.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),b.appendChild(c),"1"==urlParams.saveAndExit&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("saveAndExit")),c.setAttribute("title",mxResources.get("saveAndExit")),c.className="geBigButton geBigStandardButton",
c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),b.appendChild(c),e=c);"1"!=urlParams.noExitBtn&&(c=document.createElement("a"),e="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(c,e),c.setAttribute("title",e),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),b.appendChild(c),
e=c);e.style.marginRight="20px";this.toolbar.container.appendChild(b);this.toolbar.staticElements.push(b);b.style.right="atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(b){this.importCsv(b)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));
this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=function(b,c){for(var d=this.editor.graph,e=d.getSelectionCells(),f=0;f<b.length;f++){var k=new window[b[f].layout](d);if(null!=b[f].config)for(var l in b[f].config)k[l]=b[f].config[l];this.executeLayout(function(){k.execute(d.getDefaultParent(),0==e.length?null:e)},f==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),
-e=[],f=[],k=[],l={};if(0<d.length){for(var n={},q=this.editor.graph,y=null,I=null,D=null,F=null,E=null,O=null,B=null,G="whiteSpace=wrap;html=1;",H=null,L=null,N="",M="auto",P="auto",V=null,W=null,ga=40,ea=40,ba=100,x=0,C=function(){null!=c?c(R):(q.setSelectionCells(R),q.scrollCellToVisible(q.getSelectionCell()))},J=q.getFreeInsertPoint(),X=J.x,ca=J.y,J=ca,ka=null,K="auto",L=null,na=[],qa=null,pa=null,ha=0;ha<d.length&&"#"==d[ha].charAt(0);){b=d[ha];for(ha++;ha<d.length&&"\\"==b.charAt(b.length-1)&&
-"#"==d[ha].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[ha].substring(1)),ha++;if("#"!=b.charAt(1)){var sa=b.indexOf(":");if(0<sa){var Y=mxUtils.trim(b.substring(1,sa)),Q=mxUtils.trim(b.substring(sa+1));"label"==Y?ka=q.sanitizeHtml(Q):"labelname"==Y&&0<Q.length&&"-"!=Q?E=Q:"labels"==Y&&0<Q.length&&"-"!=Q?B=JSON.parse(Q):"style"==Y?I=Q:"parentstyle"==Y?G=Q:"unknownStyle"==Y&&"-"!=Q?O=Q:"stylename"==Y&&0<Q.length&&"-"!=Q?F=Q:"styles"==Y&&0<Q.length&&"-"!=Q?D=JSON.parse(Q):"vars"==Y&&0<Q.length&&
-"-"!=Q?y=JSON.parse(Q):"identity"==Y&&0<Q.length&&"-"!=Q?H=Q:"parent"==Y&&0<Q.length&&"-"!=Q?L=Q:"namespace"==Y&&0<Q.length&&"-"!=Q?N=Q:"width"==Y?M=Q:"height"==Y?P=Q:"left"==Y&&0<Q.length?V=Q:"top"==Y&&0<Q.length?W=Q:"ignore"==Y?pa=Q.split(","):"connect"==Y?na.push(JSON.parse(Q)):"link"==Y?qa=Q:"padding"==Y?x=parseFloat(Q):"edgespacing"==Y?ga=parseFloat(Q):"nodespacing"==Y?ea=parseFloat(Q):"levelspacing"==Y?ba=parseFloat(Q):"layout"==Y&&(K=Q)}}}if(null==d[ha])throw Error(mxResources.get("invalidOrMissingFile"));
-for(var ta=this.editor.csvToArray(d[ha]),Y=sa=null,Q=[],T=0;T<ta.length;T++)H==ta[T]&&(sa=T),L==ta[T]&&(Y=T),Q.push(mxUtils.trim(ta[T]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==ka&&(ka="%"+Q[0]+"%");if(null!=na)for(var ja=0;ja<na.length;ja++)null==n[na[ja].to]&&(n[na[ja].to]={});H=[];for(T=ha+1;T<d.length;T++){var ma=this.editor.csvToArray(d[T]);if(null==ma){var ra=40<d[T].length?d[T].substring(0,40)+"...":d[T];throw Error(ra+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));
-}0<ma.length&&H.push(ma)}q.model.beginUpdate();try{for(T=0;T<H.length;T++){var ma=H[T],S=null,oa=null!=sa?N+ma[sa]:null;null!=oa&&(S=q.model.getCell(oa));var d=null!=S,da=new mxCell(ka,new mxGeometry(X,J,0,0),I||"whiteSpace=wrap;html=1;");da.vertex=!0;da.id=oa;for(var Z=0;Z<ma.length;Z++)q.setAttributeForCell(da,Q[Z],ma[Z]);if(null!=E&&null!=B){var la=B[da.getAttribute(E)];null!=la&&q.labelChanged(da,la)}if(null!=F&&null!=D){var ya=D[da.getAttribute(F)];null!=ya&&(da.style=ya)}q.setAttributeForCell(da,
-"placeholders","1");da.style=q.replacePlaceholders(da,da.style,y);d?(0>mxUtils.indexOf(k,S)&&k.push(S),q.fireEvent(new mxEventObject("cellsInserted","cells",[S]))):q.fireEvent(new mxEventObject("cellsInserted","cells",[da]));S=da;if(!d)for(ja=0;ja<na.length;ja++)n[na[ja].to][S.getAttribute(na[ja].to)]=S;null!=qa&&"link"!=qa&&(q.setLinkForCell(S,S.getAttribute(qa)),q.setAttributeForCell(S,qa,null));var za=this.editor.graph.getPreferredSizeForCell(S),L=null!=Y?q.model.getCell(N+ma[Y]):null;if(S.vertex){ra=
-null!=L?0:X;ha=null!=L?0:ca;null!=V&&null!=S.getAttribute(V)&&(S.geometry.x=ra+parseFloat(S.getAttribute(V)));null!=W&&null!=S.getAttribute(W)&&(S.geometry.y=ha+parseFloat(S.getAttribute(W)));var ua="@"==M.charAt(0)?S.getAttribute(M.substring(1)):null;S.geometry.width=null!=ua&&"auto"!=ua?parseFloat(S.getAttribute(M.substring(1))):"auto"==M||"auto"==ua?za.width+x:parseFloat(M);var fa="@"==P.charAt(0)?S.getAttribute(P.substring(1)):null;S.geometry.height=null!=fa&&"auto"!=fa?parseFloat(fa):"auto"==
-P||"auto"==fa?za.height+x:parseFloat(P);J+=S.geometry.height+ea}d?(null==l[oa]&&(l[oa]=[]),l[oa].push(S)):(e.push(S),null!=L?(L.style=q.replacePlaceholders(L,G,y),q.addCell(S,L),f.push(L)):k.push(q.addCell(S)))}for(T=0;T<f.length;T++)ua="@"==M.charAt(0)?f[T].getAttribute(M.substring(1)):null,fa="@"==P.charAt(0)?f[T].getAttribute(P.substring(1)):null,"auto"!=M&&"auto"!=ua||"auto"!=P&&"auto"!=fa||q.updateGroupBounds([f[T]],x,!0);for(var aa=k.slice(),R=k.slice(),ja=0;ja<na.length;ja++)for(var Fa=na[ja],
-T=0;T<e.length;T++){var S=e[T],Ga=mxUtils.bind(this,function(b,c,d){var e=c.getAttribute(d.from);if(null!=e&&""!=e)for(var e=e.split(","),g=0;g<e.length;g++){var f=n[d.to][e[g]];if(null==f&&null!=O){f=new mxCell(e[g],new mxGeometry(X,ca,0,0),O);f.style=q.replacePlaceholders(c,f.style,y);var l=this.editor.graph.getPreferredSizeForCell(f);f.geometry.width=l.width+x;f.geometry.height=l.height+x;n[d.to][e[g]]=f;f.vertex=!0;f.id=e[g];k.push(q.addCell(f))}if(null!=f){l=d.label;null!=d.fromlabel&&(l=(c.getAttribute(d.fromlabel)||
+e=[],f=[],k=[],l={};if(0<d.length){for(var n={},q=this.editor.graph,y=null,I=null,D=null,G=null,F=null,O=null,B=null,E="whiteSpace=wrap;html=1;",H=null,L=null,N="",M="auto",R="auto",W=null,X=null,fa=40,da=40,ba=100,x=0,C=function(){null!=c?c(Q):(q.setSelectionCells(Q),q.scrollCellToVisible(q.getSelectionCell()))},J=q.getFreeInsertPoint(),ea=J.x,V=J.y,J=V,ja=null,K="auto",L=null,ma=[],pa=null,oa=null,ga=0;ga<d.length&&"#"==d[ga].charAt(0);){b=d[ga];for(ga++;ga<d.length&&"\\"==b.charAt(b.length-1)&&
+"#"==d[ga].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[ga].substring(1)),ga++;if("#"!=b.charAt(1)){var ra=b.indexOf(":");if(0<ra){var Y=mxUtils.trim(b.substring(1,ra)),P=mxUtils.trim(b.substring(ra+1));"label"==Y?ja=q.sanitizeHtml(P):"labelname"==Y&&0<P.length&&"-"!=P?F=P:"labels"==Y&&0<P.length&&"-"!=P?B=JSON.parse(P):"style"==Y?I=P:"parentstyle"==Y?E=P:"unknownStyle"==Y&&"-"!=P?O=P:"stylename"==Y&&0<P.length&&"-"!=P?G=P:"styles"==Y&&0<P.length&&"-"!=P?D=JSON.parse(P):"vars"==Y&&0<P.length&&
+"-"!=P?y=JSON.parse(P):"identity"==Y&&0<P.length&&"-"!=P?H=P:"parent"==Y&&0<P.length&&"-"!=P?L=P:"namespace"==Y&&0<P.length&&"-"!=P?N=P:"width"==Y?M=P:"height"==Y?R=P:"left"==Y&&0<P.length?W=P:"top"==Y&&0<P.length?X=P:"ignore"==Y?oa=P.split(","):"connect"==Y?ma.push(JSON.parse(P)):"link"==Y?pa=P:"padding"==Y?x=parseFloat(P):"edgespacing"==Y?fa=parseFloat(P):"nodespacing"==Y?da=parseFloat(P):"levelspacing"==Y?ba=parseFloat(P):"layout"==Y&&(K=P)}}}if(null==d[ga])throw Error(mxResources.get("invalidOrMissingFile"));
+for(var sa=this.editor.csvToArray(d[ga]),Y=ra=null,P=[],T=0;T<sa.length;T++)H==sa[T]&&(ra=T),L==sa[T]&&(Y=T),P.push(mxUtils.trim(sa[T]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==ja&&(ja="%"+P[0]+"%");if(null!=ma)for(var ia=0;ia<ma.length;ia++)null==n[ma[ia].to]&&(n[ma[ia].to]={});H=[];for(T=ga+1;T<d.length;T++){var la=this.editor.csvToArray(d[T]);if(null==la){var qa=40<d[T].length?d[T].substring(0,40)+"...":d[T];throw Error(qa+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));
+}0<la.length&&H.push(la)}q.model.beginUpdate();try{for(T=0;T<H.length;T++){var la=H[T],S=null,na=null!=ra?N+la[ra]:null;null!=na&&(S=q.model.getCell(na));var d=null!=S,ca=new mxCell(ja,new mxGeometry(ea,J,0,0),I||"whiteSpace=wrap;html=1;");ca.vertex=!0;ca.id=na;for(var Z=0;Z<la.length;Z++)q.setAttributeForCell(ca,P[Z],la[Z]);if(null!=F&&null!=B){var ka=B[ca.getAttribute(F)];null!=ka&&q.labelChanged(ca,ka)}if(null!=G&&null!=D){var ya=D[ca.getAttribute(G)];null!=ya&&(ca.style=ya)}q.setAttributeForCell(ca,
+"placeholders","1");ca.style=q.replacePlaceholders(ca,ca.style,y);d?(0>mxUtils.indexOf(k,S)&&k.push(S),q.fireEvent(new mxEventObject("cellsInserted","cells",[S]))):q.fireEvent(new mxEventObject("cellsInserted","cells",[ca]));S=ca;if(!d)for(ia=0;ia<ma.length;ia++)n[ma[ia].to][S.getAttribute(ma[ia].to)]=S;null!=pa&&"link"!=pa&&(q.setLinkForCell(S,S.getAttribute(pa)),q.setAttributeForCell(S,pa,null));var za=this.editor.graph.getPreferredSizeForCell(S),L=null!=Y?q.model.getCell(N+la[Y]):null;if(S.vertex){qa=
+null!=L?0:ea;ga=null!=L?0:V;null!=W&&null!=S.getAttribute(W)&&(S.geometry.x=qa+parseFloat(S.getAttribute(W)));null!=X&&null!=S.getAttribute(X)&&(S.geometry.y=ga+parseFloat(S.getAttribute(X)));var ta="@"==M.charAt(0)?S.getAttribute(M.substring(1)):null;S.geometry.width=null!=ta&&"auto"!=ta?parseFloat(S.getAttribute(M.substring(1))):"auto"==M||"auto"==ta?za.width+x:parseFloat(M);var ua="@"==R.charAt(0)?S.getAttribute(R.substring(1)):null;S.geometry.height=null!=ua&&"auto"!=ua?parseFloat(ua):"auto"==
+R||"auto"==ua?za.height+x:parseFloat(R);J+=S.geometry.height+da}d?(null==l[na]&&(l[na]=[]),l[na].push(S)):(e.push(S),null!=L?(L.style=q.replacePlaceholders(L,E,y),q.addCell(S,L),f.push(L)):k.push(q.addCell(S)))}for(T=0;T<f.length;T++)ta="@"==M.charAt(0)?f[T].getAttribute(M.substring(1)):null,ua="@"==R.charAt(0)?f[T].getAttribute(R.substring(1)):null,"auto"!=M&&"auto"!=ta||"auto"!=R&&"auto"!=ua||q.updateGroupBounds([f[T]],x,!0);for(var aa=k.slice(),Q=k.slice(),ia=0;ia<ma.length;ia++)for(var Fa=ma[ia],
+T=0;T<e.length;T++){var S=e[T],Ga=mxUtils.bind(this,function(b,c,d){var e=c.getAttribute(d.from);if(null!=e&&""!=e)for(var e=e.split(","),g=0;g<e.length;g++){var f=n[d.to][e[g]];if(null==f&&null!=O){f=new mxCell(e[g],new mxGeometry(ea,V,0,0),O);f.style=q.replacePlaceholders(c,f.style,y);var l=this.editor.graph.getPreferredSizeForCell(f);f.geometry.width=l.width+x;f.geometry.height=l.height+x;n[d.to][e[g]]=f;f.vertex=!0;f.id=e[g];k.push(q.addCell(f))}if(null!=f){l=d.label;null!=d.fromlabel&&(l=(c.getAttribute(d.fromlabel)||
"")+(l||""));null!=d.sourcelabel&&(l=q.replacePlaceholders(c,d.sourcelabel,y)+(l||""));null!=d.tolabel&&(l=(l||"")+(f.getAttribute(d.tolabel)||""));null!=d.targetlabel&&(l=(l||"")+q.replacePlaceholders(f,d.targetlabel,y));var m="target"==d.placeholders==!d.invert?f:b,m=null!=d.style?q.replacePlaceholders(m,d.style,y):q.createCurrentEdgeStyle(),l=q.insertEdge(null,null,l||"",d.invert?f:b,d.invert?b:f,m);if(null!=d.labels)for(m=0;m<d.labels.length;m++){var p=d.labels[m],t=new mxCell(p.label||m,new mxGeometry(null!=
-p.x?p.x:0,null!=p.y?p.y:0,0,0),"resizable=0;html=1;");t.vertex=!0;t.connectable=!1;t.geometry.relative=!0;null!=p.placeholders&&(t.value=q.replacePlaceholders("target"==p.placeholders==!d.invert?f:b,t.value,y));if(null!=p.dx||null!=p.dy)t.geometry.offset=new mxPoint(null!=p.dx?p.dx:0,null!=p.dy?p.dy:0);l.insert(t)}R.push(l);mxUtils.remove(d.invert?b:f,aa)}}});Ga(S,S,Fa);if(null!=l[S.id])for(Z=0;Z<l[S.id].length;Z++)Ga(S,l[S.id][Z],Fa)}if(null!=pa)for(T=0;T<e.length;T++)for(S=e[T],Z=0;Z<pa.length;Z++)q.setAttributeForCell(S,
-mxUtils.trim(pa[Z]),null);if(0<k.length){var wa=new mxParallelEdgeLayout(q);wa.spacing=ga;wa.checkOverlap=!0;var Aa=function(){0<wa.spacing&&wa.execute(q.getDefaultParent());for(var b=0;b<k.length;b++){var d=q.getCellGeometry(k[b]);d.x=Math.round(q.snap(d.x));d.y=Math.round(q.snap(d.y));"auto"==M&&(d.width=Math.round(q.snap(d.width)));"auto"==P&&(d.height=Math.round(q.snap(d.height)))}};if("["==K.charAt(0)){var xa=C;q.view.validate();this.executeLayoutList(JSON.parse(K),function(){Aa();xa()});C=null}else if("circle"==
-K){var Ba=new mxCircleLayout(q);Ba.disableEdgeStyle=!1;Ba.resetEdges=!1;var Ha=Ba.isVertexIgnored;Ba.isVertexIgnored=function(b){return Ha.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){Ba.execute(q.getDefaultParent());Aa()},!0,C);C=null}else if("horizontaltree"==K||"verticaltree"==K||"auto"==K&&R.length==2*k.length-1&&1==aa.length){q.view.validate();var Ca=new mxCompactTreeLayout(q,"horizontaltree"==K);Ca.levelDistance=ea;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(q.getDefaultParent(),
-0<aa.length?aa[0]:null)},!0,C);C=null}else if("horizontalflow"==K||"verticalflow"==K||"auto"==K&&1==aa.length){q.view.validate();var Da=new mxHierarchicalLayout(q,"horizontalflow"==K?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);Da.intraCellSpacing=ea;Da.parallelEdgeSpacing=ga;Da.interRankCellSpacing=ba;Da.disableEdgeStyle=!1;this.executeLayout(function(){Da.execute(q.getDefaultParent(),R);q.moveCells(R,X,ca)},!0,C);C=null}else if("organic"==K||"auto"==K&&R.length>k.length){q.view.validate();
-var U=new mxFastOrganicLayout(q);U.forceConstant=3*ea;U.disableEdgeStyle=!1;U.resetEdges=!1;var Ea=U.isVertexIgnored;U.isVertexIgnored=function(b){return Ea.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){U.execute(q.getDefaultParent());Aa()},!0,C);C=null}}this.hideDialog()}finally{q.model.endUpdate()}null!=C&&C()}}catch(Na){this.handleError(Na)}};EditorUi.prototype.getSearch=function(b){var d="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var c=
+p.x?p.x:0,null!=p.y?p.y:0,0,0),"resizable=0;html=1;");t.vertex=!0;t.connectable=!1;t.geometry.relative=!0;null!=p.placeholders&&(t.value=q.replacePlaceholders("target"==p.placeholders==!d.invert?f:b,t.value,y));if(null!=p.dx||null!=p.dy)t.geometry.offset=new mxPoint(null!=p.dx?p.dx:0,null!=p.dy?p.dy:0);l.insert(t)}Q.push(l);mxUtils.remove(d.invert?b:f,aa)}}});Ga(S,S,Fa);if(null!=l[S.id])for(Z=0;Z<l[S.id].length;Z++)Ga(S,l[S.id][Z],Fa)}if(null!=oa)for(T=0;T<e.length;T++)for(S=e[T],Z=0;Z<oa.length;Z++)q.setAttributeForCell(S,
+mxUtils.trim(oa[Z]),null);if(0<k.length){var wa=new mxParallelEdgeLayout(q);wa.spacing=fa;wa.checkOverlap=!0;var Aa=function(){0<wa.spacing&&wa.execute(q.getDefaultParent());for(var b=0;b<k.length;b++){var d=q.getCellGeometry(k[b]);d.x=Math.round(q.snap(d.x));d.y=Math.round(q.snap(d.y));"auto"==M&&(d.width=Math.round(q.snap(d.width)));"auto"==R&&(d.height=Math.round(q.snap(d.height)))}};if("["==K.charAt(0)){var xa=C;q.view.validate();this.executeLayoutList(JSON.parse(K),function(){Aa();xa()});C=null}else if("circle"==
+K){var Ba=new mxCircleLayout(q);Ba.disableEdgeStyle=!1;Ba.resetEdges=!1;var Ha=Ba.isVertexIgnored;Ba.isVertexIgnored=function(b){return Ha.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){Ba.execute(q.getDefaultParent());Aa()},!0,C);C=null}else if("horizontaltree"==K||"verticaltree"==K||"auto"==K&&Q.length==2*k.length-1&&1==aa.length){q.view.validate();var Ca=new mxCompactTreeLayout(q,"horizontaltree"==K);Ca.levelDistance=da;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(q.getDefaultParent(),
+0<aa.length?aa[0]:null)},!0,C);C=null}else if("horizontalflow"==K||"verticalflow"==K||"auto"==K&&1==aa.length){q.view.validate();var Da=new mxHierarchicalLayout(q,"horizontalflow"==K?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);Da.intraCellSpacing=da;Da.parallelEdgeSpacing=fa;Da.interRankCellSpacing=ba;Da.disableEdgeStyle=!1;this.executeLayout(function(){Da.execute(q.getDefaultParent(),Q);q.moveCells(Q,ea,V)},!0,C);C=null}else if("organic"==K||"auto"==K&&Q.length>k.length){q.view.validate();
+var U=new mxFastOrganicLayout(q);U.forceConstant=3*da;U.disableEdgeStyle=!1;U.resetEdges=!1;var Ea=U.isVertexIgnored;U.isVertexIgnored=function(b){return Ea.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){U.execute(q.getDefaultParent());Aa()},!0,C);C=null}}this.hideDialog()}finally{q.model.endUpdate()}null!=C&&C()}}catch(Na){this.handleError(Na)}};EditorUi.prototype.getSearch=function(b){var d="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var c=
"?",e;for(e in urlParams)0>mxUtils.indexOf(b,e)&&null!=urlParams[e]&&(d+=c+e+"="+urlParams[e],c="&")}else d=window.location.search;return d};EditorUi.prototype.getUrl=function(b){b=null!=b?b:window.location.pathname;var d=0<b.indexOf("?")?1:0;if("1"==urlParams.offline)b+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),e;for(e in urlParams)0>mxUtils.indexOf(c,e)&&(b=0==d?b+"?":b+"&",null!=urlParams[e]&&(b+=e+"="+
urlParams[e],d++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,e,f,l){b=new LinkDialog(this,b,c,e,!0,f,l);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=function(b){var d=1;null==this.drive&&"function"!==typeof window.DriveClient||d++;null==this.dropbox&&"function"!==typeof window.DropboxClient||d++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||d++;null!=this.gitHub&&d++;null!=this.gitLab&&d++;null!=this.notion&&d++;b&&isLocalStorage&&
"1"==urlParams.browser&&d++;return d};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var b=this.getCurrentFile(),c=null!=b||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(c);this.menus.get("viewZoom").setEnabled(c);var e=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==b||b.isRestricted());this.actions.get("makeCopy").setEnabled(!e);this.actions.get("print").setEnabled(!e);this.menus.get("exportAs").setEnabled(!e);
@@ -3795,7 +3795,7 @@ function(b,c,e,f,l,n,q,t){var d=b.editor.graph;if("xml"==e)b.hideDialog(),b.save
this.editor.graph.setEnabled(!0);return c};EditorUi.prototype.showRemotelyStoredLibrary=function(b){var c={},d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxUtils.htmlEntities(b));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(e);var f=document.createElement("div");f.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";f.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+
IMAGE_PATH+'/spin.gif"></div>';var l={};try{var n=mxSettings.getCustomLibraries();for(b=0;b<n.length;b++){var q=n[b];if("R"==q.substring(0,1)){var z=JSON.parse(decodeURIComponent(q.substring(1)));l[z[0]]={id:z[0],title:z[1],downloadUrl:z[2]}}}}catch(y){}this.remoteInvoke("getCustomLibraries",null,null,function(b){f.innerHTML="";if(0==b.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var d=0;d<
b.length;d++){var e=b[d];l[e.id]&&(c[e.id]=e);var g=this.addCheckbox(f,e.title,l[e.id]);(function(b,d){mxEvent.addListener(d,"change",function(){this.checked?c[b.id]=b:delete c[b.id]})})(e,g)}},mxUtils.bind(this,function(b){f.innerHTML="";var c=document.createElement("div");c.style.padding="8px";c.style.textAlign="center";mxUtils.write(c,mxResources.get("error")+": ");mxUtils.write(c,null!=b&&null!=b.message?b.message:mxResources.get("unknownError"));f.appendChild(c)}));d.appendChild(f);d=new CustomDialog(this,
-d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==l[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,d,c))}catch(E){this.handleError(E,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));
+d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==l[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,d,c))}catch(F){this.handleError(F,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));
for(d in l)c[d]||this.closeLibrary(new RemoteLibrary(this,null,l[d]));0==b&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(d.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};
EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(b){this.remoteWin=b;for(var c=0;c<this.remoteInvokeQueue.length;c++)b.postMessage(this.remoteInvokeQueue[c],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(b){var c=b.msgMarkers,d=this.remoteInvokeCallbacks[c.callbackId];if(null==d)throw Error("No callback for "+(null!=c?c.callbackId:"null"));b.error?d.error&&d.error(b.error.errResp):
d.callback&&d.callback.apply(this,b.resp);this.remoteInvokeCallbacks[c.callbackId]=null};EditorUi.prototype.remoteInvoke=function(b,c,e,f,l){var d=!0,g=window.setTimeout(mxUtils.bind(this,function(){d=!1;l({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),k=mxUtils.bind(this,function(){window.clearTimeout(g);d&&f.apply(this,arguments)}),m=mxUtils.bind(this,function(){window.clearTimeout(g);d&&l.apply(this,arguments)});e=e||{};e.callbackId=this.remoteInvokeCallbacks.length;
@@ -3813,31 +3813,31 @@ function(){var b=this.getCurrentFile();return null!=b?b.commentsSupported():!1};
null!=d?d.addComment(b,c,e):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var b=this.getCurrentFile();return null!=b?b.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var b=this.getCurrentFile();return null!=b?b.canComment():!0};EditorUi.prototype.newComment=function(b,c){var d=this.getCurrentFile();return null!=d?d.newComment(b,c):new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var b=this.getCurrentFile();
return null!=b&&b.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(b,c){var d=this.getCurrentFile();null!=d&&d.getRevisions?d.getRevisions(b,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var b=this.getCurrentFile();return null!=b&&(b.constructor==DriveFile&&b.isEditable()||b.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(b){b.setRequestHeader("Content-Language",
"da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(b,c,e,f,l,n,q,t){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(b,c,e,f,l,n,q,t)};EditorUi.prototype.loadFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(b)};EditorUi.prototype.createSvgDataUri=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(b)};EditorUi.prototype.embedCssFonts=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");
-return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,c,e,f,l,n,q,t,z,y,I,D,F,E,O,B){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,e,f,l,n,q,t,z,y,I,D,F,E,O,B)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
+return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,c,e,f,l,n,q,t,z,y,I,D,G,F,O,B){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,e,f,l,n,q,t,z,y,I,D,G,F,O,B)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(b,c,e,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(b,c,e,f)};EditorUi.prototype.convertImageToDataUri=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(b,c)};EditorUi.prototype.base64Encode=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(b)};EditorUi.prototype.updateCRC=
function(b,c,e,f){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(b,c,e,f)};EditorUi.prototype.crc32=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(b)};EditorUi.prototype.writeGraphModelToPng=function(b,c,e,f,l){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(b,c,e,f,l)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=
urlParams.forceMigration)return null;for(var b=[],c=0;c<localStorage.length;c++){var e=localStorage.key(c),f=localStorage.getItem(e);if(0<e.length&&(".scratchpad"==e||"."!=e.charAt(0))&&0<f.length){var l="<mxfile "===f.substring(0,8)||"<?xml"===f.substring(0,5)||"\x3c!--[if IE]>"===f.substring(0,12),f="<mxlibrary>"===f.substring(0,11);(l||f)&&b.push(e)}}return b};EditorUi.prototype.getLocalStorageFile=function(b){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;
var c=localStorage.getItem(b);return{title:b,data:c,isLib:"<mxlibrary>"===c.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
-var CommentsWindow=function(b,c,e,f,n,l){function q(){for(var b=D.getElementsByTagName("div"),c=0,d=0;d<b.length;d++)"none"!=b[d].style.display&&b[d].parentNode==D&&c++;F.style.display=0==c?"block":"none"}function d(b,c,d,e){function f(){c.removeChild(l);c.removeChild(m);k.style.display="block";g.style.display="block"}z={div:c,comment:b,saveCallback:d,deleteOnCancel:e};var g=c.querySelector(".geCommentTxt"),k=c.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
+var CommentsWindow=function(b,c,e,f,n,l){function q(){for(var b=D.getElementsByTagName("div"),c=0,d=0;d<b.length;d++)"none"!=b[d].style.display&&b[d].parentNode==D&&c++;G.style.display=0==c?"block":"none"}function d(b,c,d,e){function f(){c.removeChild(l);c.removeChild(m);k.style.display="block";g.style.display="block"}z={div:c,comment:b,saveCallback:d,deleteOnCancel:e};var g=c.querySelector(".geCommentTxt"),k=c.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
"geCommentEditTxtArea";l.style.minHeight=g.offsetHeight+"px";l.value=b.content;c.insertBefore(l,g);var m=document.createElement("div");m.className="geCommentEditBtns";var n=mxUtils.button(mxResources.get("cancel"),function(){e?(c.parentNode.removeChild(c),q()):f();z=null});n.className="geCommentEditBtn";m.appendChild(n);var p=mxUtils.button(mxResources.get("save"),function(){g.innerHTML="";b.content=l.value;mxUtils.write(g,b.content);f();d(b);z=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
function(b){mxEvent.isConsumed(b)||((mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b))&&13==b.keyCode?(p.click(),mxEvent.consume(b)):27==b.keyCode&&(n.click(),mxEvent.consume(b)))}));p.focus();p.className="geCommentEditBtn gePrimaryBtn";m.appendChild(p);c.insertBefore(m,g);k.style.display="none";g.style.display="none";l.focus()}function k(c,d){d.innerHTML="";var e=new Date(c.modifiedDate),f=b.timeSince(e);null==f&&(f=mxResources.get("lessThanAMinute"));mxUtils.write(d,mxResources.get("timeAgo",
[f],"{1} ago"));d.setAttribute("title",e.toLocaleDateString()+" "+e.toLocaleTimeString())}function g(b){var c=document.createElement("img");c.className="geCommentBusyImg";c.src=IMAGE_PATH+"/spin.gif";b.appendChild(c);b.busyImg=c}function p(b){b.style.border="1px solid red";b.removeChild(b.busyImg)}function m(b){b.style.border="";b.removeChild(b.busyImg)}function u(c,e,f,l,n){function y(b,d,e){var f=document.createElement("li");f.className="geCommentAction";var g=document.createElement("a");g.className=
-"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});V.appendChild(f);e&&(f.style.display="none")}function M(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=x;b(c);return{pdiv:e,replies:d}}function P(e,f,k,n,q){function t(){g(y);c.addReply(B,function(b){B.id=b;c.replies.push(B);m(y);k&&k()},function(c){x();p(y);b.handleError(c,null,
-null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},n,q)}function x(){d(B,y,function(b){t()},!0)}var v=M().pdiv,B=b.newComment(e,b.getCurrentUser());B.pCommentId=c.id;null==c.replies&&(c.replies=[]);var y=u(B,c.replies,v,l+1);f?x():t()}if(n||!c.isResolved){F.style.display="none";var x=document.createElement("div");x.className="geCommentContainer";x.setAttribute("data-commentId",c.id);x.style.marginLeft=20*l+5+"px";c.isResolved&&!Editor.isDarkMode()&&(x.style.backgroundColor="ghostWhite");
-var C=document.createElement("div");C.className="geCommentHeader";var G=document.createElement("img");G.className="geCommentUserImg";G.src=c.user.pictureUrl||Editor.userImage;C.appendChild(G);G=document.createElement("div");G.className="geCommentHeaderTxt";C.appendChild(G);var H=document.createElement("div");H.className="geCommentUsername";mxUtils.write(H,c.user.displayName||"");G.appendChild(H);H=document.createElement("div");H.className="geCommentDate";H.setAttribute("data-commentId",c.id);k(c,
-H);G.appendChild(H);x.appendChild(C);C=document.createElement("div");C.className="geCommentTxt";mxUtils.write(C,c.content||"");x.appendChild(C);c.isLocked&&(x.style.opacity="0.5");C=document.createElement("div");C.className="geCommentActions";var V=document.createElement("ul");V.className="geCommentActionsList";C.appendChild(V);v||c.isLocked||0!=l&&!t||y(mxResources.get("reply"),function(){P("",!0)},c.isResolved);G=b.getCurrentUser();null==G||G.id!=c.user.id||v||c.isLocked||(y(mxResources.get("edit"),
+"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});W.appendChild(f);e&&(f.style.display="none")}function M(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=x;b(c);return{pdiv:e,replies:d}}function R(e,f,k,n,q){function t(){g(y);c.addReply(B,function(b){B.id=b;c.replies.push(B);m(y);k&&k()},function(c){x();p(y);b.handleError(c,null,
+null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},n,q)}function x(){d(B,y,function(b){t()},!0)}var v=M().pdiv,B=b.newComment(e,b.getCurrentUser());B.pCommentId=c.id;null==c.replies&&(c.replies=[]);var y=u(B,c.replies,v,l+1);f?x():t()}if(n||!c.isResolved){G.style.display="none";var x=document.createElement("div");x.className="geCommentContainer";x.setAttribute("data-commentId",c.id);x.style.marginLeft=20*l+5+"px";c.isResolved&&!Editor.isDarkMode()&&(x.style.backgroundColor="ghostWhite");
+var C=document.createElement("div");C.className="geCommentHeader";var E=document.createElement("img");E.className="geCommentUserImg";E.src=c.user.pictureUrl||Editor.userImage;C.appendChild(E);E=document.createElement("div");E.className="geCommentHeaderTxt";C.appendChild(E);var H=document.createElement("div");H.className="geCommentUsername";mxUtils.write(H,c.user.displayName||"");E.appendChild(H);H=document.createElement("div");H.className="geCommentDate";H.setAttribute("data-commentId",c.id);k(c,
+H);E.appendChild(H);x.appendChild(C);C=document.createElement("div");C.className="geCommentTxt";mxUtils.write(C,c.content||"");x.appendChild(C);c.isLocked&&(x.style.opacity="0.5");C=document.createElement("div");C.className="geCommentActions";var W=document.createElement("ul");W.className="geCommentActionsList";C.appendChild(W);v||c.isLocked||0!=l&&!t||y(mxResources.get("reply"),function(){R("",!0)},c.isResolved);E=b.getCurrentUser();null==E||E.id!=c.user.id||v||c.isLocked||(y(mxResources.get("edit"),
function(){function e(){d(c,x,function(){g(x);c.editComment(c.content,function(){m(x)},function(c){p(x);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}e()},c.isResolved),y(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(x);c.deleteComment(function(b){if(!0===b){b=x.querySelector(".geCommentTxt");b.innerHTML="";mxUtils.write(b,mxResources.get("msgDeleted"));var d=x.querySelectorAll(".geCommentAction");for(b=
-0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);m(x);x.style.opacity="0.5"}else{d=M(c).replies;for(b=0;b<d.length;b++)D.removeChild(d[b]);for(b=0;b<e.length;b++)if(e[b]==c){e.splice(b,1);break}F.style.display=0==D.getElementsByTagName("div").length?"block":"none"}},function(c){p(x);b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));v||c.isLocked||0!=l||y(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(b){function d(){var d=
-b.target;d.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(d,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=c.isResolved?"none":"",f=M(c).replies,g=Editor.isDarkMode()?"transparent":c.isResolved?"ghostWhite":"white",k=0;k<f.length;k++){f[k].style.backgroundColor=g;for(var l=f[k].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=d.parentNode&&(l[m].style.display=e);B||(f[k].style.display="none")}q()}c.isResolved?P(mxResources.get("reOpened")+": ",!0,
-d,!1,!0):P(mxResources.get("markedAsResolved"),!1,d,!0)});x.appendChild(C);null!=f?D.insertBefore(x,f.nextSibling):D.appendChild(x);for(f=0;null!=c.replies&&f<c.replies.length;f++)C=c.replies[f],C.isResolved=c.isResolved,u(C,c.replies,null,l+1,n);null!=z&&(z.comment.id==c.id?(n=c.content,c.content=z.comment.content,d(c,x,z.saveCallback,z.deleteOnCancel),c.content=n):null==z.comment.id&&z.comment.pCommentId==c.id&&(D.appendChild(z.div),d(z.comment,z.div,z.saveCallback,z.deleteOnCancel)));return x}}
-var v=!b.canComment(),t=b.canReplyToReplies(),z=null,y=document.createElement("div");y.className="geCommentsWin";y.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var I=EditorUi.compactUi?"26px":"30px",D=document.createElement("div");D.className="geCommentsList";D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";D.style.bottom=parseInt(I)+7+"px";y.appendChild(D);var F=document.createElement("span");F.style.cssText="display:none;padding-top:10px;text-align:center;";
-mxUtils.write(F,mxResources.get("noCommentsFound"));var E=document.createElement("div");E.className="geToolbarContainer geCommentsToolbar";E.style.height=I;E.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";E.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";I=document.createElement("a");I.className="geButton";if(!v){var O=I.cloneNode();O.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';O.setAttribute("title",mxResources.get("create")+
-"...");mxEvent.addListener(O,"click",function(c){function e(){d(f,k,function(c){g(k);b.addComment(c,function(b){c.id=b;G.push(c);m(k)},function(c){p(k);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var f=b.newComment("",b.getCurrentUser()),k=u(f,G,null,0);e();c.preventDefault();mxEvent.consume(c)});E.appendChild(O)}O=I.cloneNode();O.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';O.setAttribute("title",mxResources.get("showResolved"));
-var B=!1;Editor.isDarkMode()&&(O.style.filter="invert(100%)");mxEvent.addListener(O,"click",function(b){this.className=(B=!B)?"geButton geCheckedBtn":"geButton";H();b.preventDefault();mxEvent.consume(b)});E.appendChild(O);b.commentsRefreshNeeded()&&(O=I.cloneNode(),O.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',O.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(O.style.filter="invert(100%)"),mxEvent.addListener(O,"click",function(b){H();
-b.preventDefault();mxEvent.consume(b)}),E.appendChild(O));b.commentsSaveNeeded()&&(I=I.cloneNode(),I.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',I.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(I.style.filter="invert(100%)"),mxEvent.addListener(I,"click",function(b){l();b.preventDefault();mxEvent.consume(b)}),E.appendChild(I));y.appendChild(E);var G=[],H=mxUtils.bind(this,function(){this.hasError=!1;if(null!=z)try{z.div=z.div.cloneNode(!0);
-var c=z.div.querySelector(".geCommentEditTxtArea"),e=z.div.querySelector(".geCommentEditBtns");z.comment.content=c.value;c.parentNode.removeChild(c);e.parentNode.removeChild(e)}catch(P){b.handleError(P)}D.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";t=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(b){function c(b){if(null!=b){b.sort(function(b,c){return new Date(b.modifiedDate)-
-new Date(c.modifiedDate)});for(var d=0;d<b.length;d++)c(b[d].replies)}}b.sort(function(b,c){return new Date(b.modifiedDate)-new Date(c.modifiedDate)});D.innerHTML="";D.appendChild(F);F.style.display="block";G=b;for(b=0;b<G.length;b++)c(G[b].replies),u(G[b],G,null,0,B);null!=z&&null==z.comment.id&&null==z.comment.pCommentId&&(D.appendChild(z.div),d(z.comment,z.div,z.saveCallback,z.deleteOnCancel))},mxUtils.bind(this,function(b){D.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(b&&b.message?
-": "+b.message:""));this.hasError=!0})):D.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});H();this.refreshComments=H;E=mxUtils.bind(this,function(){function b(c){var e=d[c.id];if(null!=e)for(k(c,e),e=0;null!=c.replies&&e<c.replies.length;e++)b(c.replies[e])}if(this.window.isVisible()){for(var c=D.querySelectorAll(".geCommentDate"),d={},e=0;e<c.length;e++){var f=c[e];d[f.getAttribute("data-commentId")]=f}for(e=0;e<G.length;e++)b(G[e])}});setInterval(E,6E4);this.refreshCommentsTime=E;this.window=
+0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);m(x);x.style.opacity="0.5"}else{d=M(c).replies;for(b=0;b<d.length;b++)D.removeChild(d[b]);for(b=0;b<e.length;b++)if(e[b]==c){e.splice(b,1);break}G.style.display=0==D.getElementsByTagName("div").length?"block":"none"}},function(c){p(x);b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));v||c.isLocked||0!=l||y(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(b){function d(){var d=
+b.target;d.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(d,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=c.isResolved?"none":"",f=M(c).replies,g=Editor.isDarkMode()?"transparent":c.isResolved?"ghostWhite":"white",k=0;k<f.length;k++){f[k].style.backgroundColor=g;for(var l=f[k].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=d.parentNode&&(l[m].style.display=e);B||(f[k].style.display="none")}q()}c.isResolved?R(mxResources.get("reOpened")+": ",!0,
+d,!1,!0):R(mxResources.get("markedAsResolved"),!1,d,!0)});x.appendChild(C);null!=f?D.insertBefore(x,f.nextSibling):D.appendChild(x);for(f=0;null!=c.replies&&f<c.replies.length;f++)C=c.replies[f],C.isResolved=c.isResolved,u(C,c.replies,null,l+1,n);null!=z&&(z.comment.id==c.id?(n=c.content,c.content=z.comment.content,d(c,x,z.saveCallback,z.deleteOnCancel),c.content=n):null==z.comment.id&&z.comment.pCommentId==c.id&&(D.appendChild(z.div),d(z.comment,z.div,z.saveCallback,z.deleteOnCancel)));return x}}
+var v=!b.canComment(),t=b.canReplyToReplies(),z=null,y=document.createElement("div");y.className="geCommentsWin";y.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var I=EditorUi.compactUi?"26px":"30px",D=document.createElement("div");D.className="geCommentsList";D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";D.style.bottom=parseInt(I)+7+"px";y.appendChild(D);var G=document.createElement("span");G.style.cssText="display:none;padding-top:10px;text-align:center;";
+mxUtils.write(G,mxResources.get("noCommentsFound"));var F=document.createElement("div");F.className="geToolbarContainer geCommentsToolbar";F.style.height=I;F.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";F.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";I=document.createElement("a");I.className="geButton";if(!v){var O=I.cloneNode();O.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';O.setAttribute("title",mxResources.get("create")+
+"...");mxEvent.addListener(O,"click",function(c){function e(){d(f,k,function(c){g(k);b.addComment(c,function(b){c.id=b;E.push(c);m(k)},function(c){p(k);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var f=b.newComment("",b.getCurrentUser()),k=u(f,E,null,0);e();c.preventDefault();mxEvent.consume(c)});F.appendChild(O)}O=I.cloneNode();O.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';O.setAttribute("title",mxResources.get("showResolved"));
+var B=!1;Editor.isDarkMode()&&(O.style.filter="invert(100%)");mxEvent.addListener(O,"click",function(b){this.className=(B=!B)?"geButton geCheckedBtn":"geButton";H();b.preventDefault();mxEvent.consume(b)});F.appendChild(O);b.commentsRefreshNeeded()&&(O=I.cloneNode(),O.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',O.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(O.style.filter="invert(100%)"),mxEvent.addListener(O,"click",function(b){H();
+b.preventDefault();mxEvent.consume(b)}),F.appendChild(O));b.commentsSaveNeeded()&&(I=I.cloneNode(),I.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',I.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(I.style.filter="invert(100%)"),mxEvent.addListener(I,"click",function(b){l();b.preventDefault();mxEvent.consume(b)}),F.appendChild(I));y.appendChild(F);var E=[],H=mxUtils.bind(this,function(){this.hasError=!1;if(null!=z)try{z.div=z.div.cloneNode(!0);
+var c=z.div.querySelector(".geCommentEditTxtArea"),e=z.div.querySelector(".geCommentEditBtns");z.comment.content=c.value;c.parentNode.removeChild(c);e.parentNode.removeChild(e)}catch(R){b.handleError(R)}D.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";t=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(b){function c(b){if(null!=b){b.sort(function(b,c){return new Date(b.modifiedDate)-
+new Date(c.modifiedDate)});for(var d=0;d<b.length;d++)c(b[d].replies)}}b.sort(function(b,c){return new Date(b.modifiedDate)-new Date(c.modifiedDate)});D.innerHTML="";D.appendChild(G);G.style.display="block";E=b;for(b=0;b<E.length;b++)c(E[b].replies),u(E[b],E,null,0,B);null!=z&&null==z.comment.id&&null==z.comment.pCommentId&&(D.appendChild(z.div),d(z.comment,z.div,z.saveCallback,z.deleteOnCancel))},mxUtils.bind(this,function(b){D.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(b&&b.message?
+": "+b.message:""));this.hasError=!0})):D.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});H();this.refreshComments=H;F=mxUtils.bind(this,function(){function b(c){var e=d[c.id];if(null!=e)for(k(c,e),e=0;null!=c.replies&&e<c.replies.length;e++)b(c.replies[e])}if(this.window.isVisible()){for(var c=D.querySelectorAll(".geCommentDate"),d={},e=0;e<c.length;e++){var f=c[e];d[f.getAttribute("data-commentId")]=f}for(e=0;e<E.length;e++)b(E[e])}});setInterval(F,6E4);this.refreshCommentsTime=F;this.window=
new mxWindow(mxResources.get("comments"),y,c,e,f,n,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(b,c){var d=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||
document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));c=Math.max(0,Math.min(c,d-this.table.clientHeight-48));this.getX()==b&&this.getY()==c||mxWindow.prototype.setLocation.apply(this,arguments)};var L=mxUtils.bind(this,function(){var b=this.window.getX(),c=this.window.getY();this.window.setLocation(b,c)});mxEvent.addListener(window,"resize",L);this.destroy=function(){mxEvent.removeListener(window,"resize",L);this.window.destroy()}},ConfirmDialog=function(b,c,e,
f,n,l,q,d,k,g,p){var m=document.createElement("div");m.style.textAlign="center";p=null!=p?p:44;var u=document.createElement("div");u.style.padding="6px";u.style.overflow="auto";u.style.maxHeight=p+"px";u.style.lineHeight="1.2em";mxUtils.write(u,c);m.appendChild(u);null!=g&&(u=document.createElement("div"),u.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",g),u.appendChild(c),m.appendChild(u));g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace=
@@ -3921,7 +3921,7 @@ b.geometry.height+10:-g[1].geometry.height-10)*n;var q=t.getOutgoingTreeEdges(t.
p.height,y.y+y.height)-Math.max(p.y,y.y))/n))}}u?l=0:f=0;for(v=0;v<q.length;v++)if(B=t.model.getTerminal(q[v],!1),k==d(B)&&(y=t.view.getState(B),B!=b&&null!=y&&(u&&c!=y.getCenterX()<m.getCenterX()||!u&&c!=y.getCenterY()<m.getCenterY()))){var z=[];t.traverse(y.cell,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&z.push(c);(null==c||d)&&z.push(b);return null==c||d});t.moveCells(z,(c?1:-1)*f,(c?1:-1)*l)}}}return t.addCells(g,e)}finally{t.model.endUpdate()}}function g(b){t.model.beginUpdate();try{var c=
d(b),e=t.getIncomingTreeEdges(b),f=t.cloneCells([e[0],b]);t.model.setTerminal(e[0],f[1],!1);t.model.setTerminal(f[0],f[1],!0);t.model.setTerminal(f[0],b,!1);var g=t.model.getParent(b),k=g.geometry,l=[];t.view.currentRoot!=g&&(f[1].geometry.x-=k.x,f[1].geometry.y-=k.y);t.traverse(b,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});var m=b.geometry.width+40,n=b.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?m=0:c==mxConstants.DIRECTION_NORTH?
(m=0,n=-n):c==mxConstants.DIRECTION_WEST?(m=-m,n=0):c==mxConstants.DIRECTION_EAST&&(n=0);t.moveCells(l,m,n);return t.addCells(f,g)}finally{t.model.endUpdate()}}function p(b,c){t.model.beginUpdate();try{var e=t.model.getParent(b),f=t.getIncomingTreeEdges(b),g=d(b);0==f.length&&(f=[t.createEdge(e,null,"",null,null,t.createCurrentEdgeStyle())],g=c);var k=t.cloneCells([f[0],b]);t.model.setTerminal(k[0],b,!0);if(null==t.model.getTerminal(k[0],!1)){t.model.setTerminal(k[0],k[1],!1);var l=t.getCellStyle(k[1]).newEdgeStyle;
-if(null!=l)try{var m=JSON.parse(l),n;for(n in m)t.setCellStyles(n,m[n],[k[0]]),"edgeStyle"==n&&"elbowEdgeStyle"==m[n]&&t.setCellStyles("elbow",g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[k[0]])}catch(qa){}}var f=t.getOutgoingTreeEdges(b),p=e.geometry,l=[];t.view.currentRoot==e&&(p=new mxRectangle);for(m=0;m<f.length;m++){var q=t.model.getTerminal(f[m],!1);null!=q&&l.push(q)}var u=t.view.getBounds(l),v=t.view.translate,B=t.view.scale;g==mxConstants.DIRECTION_SOUTH?
+if(null!=l)try{var m=JSON.parse(l),n;for(n in m)t.setCellStyles(n,m[n],[k[0]]),"edgeStyle"==n&&"elbowEdgeStyle"==m[n]&&t.setCellStyles("elbow",g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[k[0]])}catch(pa){}}var f=t.getOutgoingTreeEdges(b),p=e.geometry,l=[];t.view.currentRoot==e&&(p=new mxRectangle);for(m=0;m<f.length;m++){var q=t.model.getTerminal(f[m],!1);null!=q&&l.push(q)}var u=t.view.getBounds(l),v=t.view.translate,B=t.view.scale;g==mxConstants.DIRECTION_SOUTH?
(k[1].geometry.x=null==u?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(u.x+u.width)/B-v.x-p.x+10,k[1].geometry.y+=k[1].geometry.height-p.y+40):g==mxConstants.DIRECTION_NORTH?(k[1].geometry.x=null==u?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(u.x+u.width)/B-v.x+-p.x+10,k[1].geometry.y-=k[1].geometry.height+p.y+40):(k[1].geometry.x=g==mxConstants.DIRECTION_WEST?k[1].geometry.x-(k[1].geometry.width+p.x+40):k[1].geometry.x+(k[1].geometry.width-p.x+40),k[1].geometry.y=null==u?b.geometry.y+
(b.geometry.height-k[1].geometry.height)/2:(u.y+u.height)/B-v.y+-p.y+10);return t.addCells(k,e)}finally{t.model.endUpdate()}}function m(b,c,d){b=t.getOutgoingTreeEdges(b);d=t.view.getState(d);var e=[];if(null!=d&&null!=b){for(var f=0;f<b.length;f++){var g=t.view.getState(t.model.getTerminal(b[f],!1));null!=g&&(!c&&Math.min(g.x+g.width,d.x+d.width)>=Math.max(g.x,d.x)||c&&Math.min(g.y+g.height,d.y+d.height)>=Math.max(g.y,d.y))&&e.push(g)}e.sort(function(b,d){return c?b.x+b.width-d.x-d.width:b.y+b.height-
d.y-d.height})}return e}function u(b,c){var e=d(b),f=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;(e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST)==f&&e!=c?v.actions.get("selectParent").funct():e==c?(f=t.getOutgoingTreeEdges(b),null!=f&&0<f.length&&t.setSelectionCell(t.model.getTerminal(f[0],!1))):(e=t.getIncomingTreeEdges(b),null!=e&&0<e.length&&(f=m(t.model.getTerminal(e[0],!0),f,b),e=t.view.getState(b),null!=e&&(e=mxUtils.indexOf(f,e),0<=e&&(e+=c==mxConstants.DIRECTION_NORTH||
@@ -3931,13 +3931,13 @@ c==mxConstants.DIRECTION_WEST?-1:1,0<=e&&e<=f.length-1&&t.setSelectionCell(f[e].
!0))}},null,null,"Alt+Shift+P");v.actions.addAction("selectDescendants",function(b,c){var d=t.getSelectionCell();if(t.isEnabled()&&t.model.isVertex(d)){if(null!=c&&mxEvent.isAltDown(c))t.setSelectionCells(t.model.getTreeEdges(d,null==c||!mxEvent.isShiftDown(c),null==c||!mxEvent.isControlDown(c)));else{var e=[];t.traverse(d,!0,function(b,d){var f=null!=d&&t.isTreeEdge(d);f&&e.push(d);null!=d&&!f||null!=c&&mxEvent.isShiftDown(c)||e.push(b);return null==d||f})}t.setSelectionCells(e)}},null,null,"Alt+Shift+D");
var I=t.removeCells;t.removeCells=function(c,d){d=null!=d?d:!0;null==c&&(c=this.getDeletableCells(this.getSelectionCells()));d&&(c=this.getDeletableCells(this.addAllEdges(c)));for(var f=[],g=0;g<c.length;g++){var k=c[g];z.isEdge(k)&&e(k)&&(f.push(k),k=z.getTerminal(k,!1));if(b(k)){var l=[];t.traverse(k,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});0<l.length&&(f=f.concat(l),k=t.getIncomingTreeEdges(c[g]),c=c.concat(k))}else null!=k&&f.push(c[g])}c=
f;return I.apply(this,arguments)};v.hoverIcons.getStateAt=function(c,d,e){return b(c.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,e))};var D=t.duplicateCells;t.duplicateCells=function(c,d){c=null!=c?c:this.getSelectionCells();for(var e=c.slice(0),f=0;f<e.length;f++){var g=t.view.getState(e[f]);if(null!=g&&b(g.cell))for(var k=t.getIncomingTreeEdges(g.cell),g=0;g<k.length;g++)mxUtils.remove(k[g],c)}this.model.beginUpdate();try{var l=D.call(this,c,d);if(l.length==c.length)for(f=0;f<c.length;f++)if(b(c[f])){var m=
-t.getIncomingTreeEdges(l[f]),k=t.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,t.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var F=t.moveCells;t.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var n=g,p=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||t.model.isEdge(c[q])&&null==t.model.getTerminal(c[q],
-!0)){g=t.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var u=t.getIncomingTreeEdges(c[0]);if(0<u.length){var v=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=v){var x=t.view.getState(n);null!=x&&(d=(x.getCenterX()-v.getCenterX())/t.view.scale,e=(x.getCenterY()-v.getCenterY())/t.view.scale)}}}}m=F.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
-!0))&&this.model.setTerminal(m[q],n,!0);else if(b(c[q])&&(u=t.getIncomingTreeEdges(c[q]),0<u.length))if(!f)b(n)&&0>mxUtils.indexOf(c,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],n,!0);else if(0==t.getIncomingTreeEdges(m[q]).length){p=n;if(null==p||p==t.model.getParent(c[q]))p=t.model.getTerminal(u[0],!0);f=this.cloneCell(u[0]);this.addEdge(f,t.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=v.sidebar){var E=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=
-function(c,d,e,f){var g=t.model,k=null;g.beginUpdate();try{if(k=E.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=t.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var O={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},B=v.onKeyDown;v.onKeyDown=function(c){try{if(t.isEnabled()&&
+t.getIncomingTreeEdges(l[f]),k=t.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,t.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var G=t.moveCells;t.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var n=g,p=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||t.model.isEdge(c[q])&&null==t.model.getTerminal(c[q],
+!0)){g=t.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var u=t.getIncomingTreeEdges(c[0]);if(0<u.length){var v=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=v){var x=t.view.getState(n);null!=x&&(d=(x.getCenterX()-v.getCenterX())/t.view.scale,e=(x.getCenterY()-v.getCenterY())/t.view.scale)}}}}m=G.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
+!0))&&this.model.setTerminal(m[q],n,!0);else if(b(c[q])&&(u=t.getIncomingTreeEdges(c[q]),0<u.length))if(!f)b(n)&&0>mxUtils.indexOf(c,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],n,!0);else if(0==t.getIncomingTreeEdges(m[q]).length){p=n;if(null==p||p==t.model.getParent(c[q]))p=t.model.getTerminal(u[0],!0);f=this.cloneCell(u[0]);this.addEdge(f,t.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=v.sidebar){var F=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=
+function(c,d,e,f){var g=t.model,k=null;g.beginUpdate();try{if(k=F.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=t.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var O={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},B=v.onKeyDown;v.onKeyDown=function(c){try{if(t.isEnabled()&&
!t.isEditing()&&b(t.getSelectionCell())&&1==t.getSelectionCount()){var d=null;0<t.getIncomingTreeEdges(t.getSelectionCell()).length&&(9==c.which?d=mxEvent.isShiftDown(c)?g(t.getSelectionCell()):p(t.getSelectionCell()):13==c.which&&(d=k(t.getSelectionCell(),!mxEvent.isShiftDown(c))));if(null!=d&&0<d.length)1==d.length&&t.model.isEdge(d[0])?t.setSelectionCell(t.model.getTerminal(d[0],!1)):t.setSelectionCell(d[d.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(t.view.getState(t.getSelectionCell())),
t.startEditingAtCell(t.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=O[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(u(t.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(u(t.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(u(t.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(u(t.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(c))}}catch(ga){v.handleError(ga)}mxEvent.isConsumed(c)||B.apply(this,arguments)};var G=t.connectVertex;t.connectVertex=function(c,e,f,l,m,n,q){var u=t.getIncomingTreeEdges(c);if(b(c)){var v=d(c),x=v==mxConstants.DIRECTION_EAST||v==mxConstants.DIRECTION_WEST,B=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return v==e||0==u.length?p(c,e):x==B?g(c):k(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return G.apply(this,arguments)};t.getSubtree=function(d){var e=
+mxEvent.consume(c))}}catch(fa){v.handleError(fa)}mxEvent.isConsumed(c)||B.apply(this,arguments)};var E=t.connectVertex;t.connectVertex=function(c,e,f,l,m,n,q){var u=t.getIncomingTreeEdges(c);if(b(c)){var v=d(c),x=v==mxConstants.DIRECTION_EAST||v==mxConstants.DIRECTION_WEST,B=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return v==e||0==u.length?p(c,e):x==B?g(c):k(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return E.apply(this,arguments)};t.getSubtree=function(d){var e=
[d];!c(d)&&!b(d)||q(d)||t.traverse(d,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&0>mxUtils.indexOf(e,c)&&e.push(c);(null==c||d)&&0>mxUtils.indexOf(e,b)&&e.push(b);return null==c||d});return e};var H=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){H.apply(this,arguments);(c(this.state.cell)||b(this.state.cell))&&!q(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title",
"Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(b){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(b);
this.graph.isMouseDown=!0;v.hoverIcons.reset();mxEvent.consume(b)})))};var L=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){L.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 N=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){N.apply(this,
@@ -4003,7 +4003,7 @@ this.addMenuItems(b,["copyAsImage"],null,d)};EditorUi.prototype.toggleFormatPane
this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);null!=this.menus.findReplaceWindow&&(this.menus.findReplaceWindow.window.setVisible(!1),this.menus.findReplaceWindow.window.destroy(),this.menus.findReplaceWindow=null);y.apply(this,arguments)};var I=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(b){I.apply(this,arguments);if(b){var c=window.innerWidth||
document.documentElement.clientWidth||document.body.clientWidth;1E3<=c&&null!=this.sidebarWindow&&"1"!=urlParams.sketch&&this.sidebarWindow.window.setVisible(!0);null!=this.formatWindow&&(1E3<=c||"1"==urlParams.sketch)&&this.formatWindow.window.setVisible(!0)}else null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1)};EditorUi.prototype.chromelessWindowResize=function(){};var D=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=
function(b){b=D.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;if(d.isEnabled()&&"1"==urlParams.sketch){var e=this.createOption(mxResources.get("sketch"),function(){return Editor.sketchMode},function(b,e){c.setSketchMode(!Editor.sketchMode);null!=e&&mxEvent.isShiftDown(e)||d.updateCellStyles({sketch:b?"1":null},d.getVerticesAndEdges())},{install:function(b){this.listener=function(){b(Editor.sketchMode)};c.addListener("sketchModeChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});
-b.appendChild(e)}return b};var F=Menus.prototype.init;Menus.prototype.init=function(){F.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.get("tags").label=mxResources.get("tags")+"...";c.actions.get("forkme").visible="1"!=
+b.appendChild(e)}return b};var G=Menus.prototype.init;Menus.prototype.init=function(){G.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.get("tags").label=mxResources.get("tags")+"...";c.actions.get("forkme").visible="1"!=
urlParams.sketch;c.actions.get("downloadDesktop").visible="1"!=urlParams.sketch;c.actions.get("comments").label=mxResources.get("comments")+"...";var f=c.actions.put("toggleDarkMode",new Action(mxResources.get("dark"),function(b){c.setDarkMode(!Editor.darkMode)}));f.setToggleAction(!0);f.setSelectedCallback(function(){return Editor.isDarkMode()});f=c.actions.put("toggleSketchMode",new Action(mxResources.get("sketch"),function(b){c.setSketchMode(!Editor.sketchMode)}));f.setToggleAction(!0);f.setSelectedCallback(function(){return Editor.sketchMode});
f=c.actions.put("togglePagesVisible",new Action(mxResources.get("pages"),function(b){c.setPagesVisible(!Editor.pagesVisible)}));f.setToggleAction(!0);f.setSelectedCallback(function(){return Editor.pagesVisible});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 b=new ParseDialog(c,"Insert from Text");c.showDialog(b.container,620,420,
!0,!1);b.init()}));c.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var b=new ParseDialog(c,"Insert from Text","formatSql");c.showDialog(b.container,620,420,!0,!1);b.init()}));c.actions.put("toggleShapes",new Action(mxResources.get("1"==urlParams.sketch?"moreShapes":"shapes")+"...",function(){e(c)},null,null,Editor.ctrlKey+"+Shift+K"));c.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){b(c)})).shortcut=c.actions.get("formatPanel").shortcut;
@@ -4022,16 +4022,16 @@ d);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isL
d),b.addSeparator(d),c.mode!=App.MODE_ATLAS&&this.addMenuItems(b,["fullscreen"],d));("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(b,["toggleDarkMode"],d);b.addSeparator(d)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(b,d){c.menus.addMenuItems(b,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),d)})));mxUtils.bind(this,function(){var b=this.get("insert"),d=b.funct;b.funct=function(b,
e){"1"==urlParams.sketch?(c.insertTemplateEnabled&&!c.isOffline()&&c.menus.addMenuItems(b,["insertTemplate"],e),c.menus.addMenuItems(b,["insertImage","insertLink","-"],e),c.menus.addSubmenu("insertLayout",b,e,mxResources.get("layout")),c.menus.addSubmenu("insertAdvanced",b,e,mxResources.get("advanced"))):(d.apply(this,arguments),c.menus.addSubmenu("table",b,e))}})();var n="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),p=function(b,d,e,f){b.addItem(e,
null,mxUtils.bind(this,function(){var b=new CreateGraphDialog(c,e,f);c.showDialog(b.container,620,420,!0,!1);b.init()}),d)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(b,c){for(var d=0;d<n.length;d++)"-"==n[d]?b.addSeparator(c):p(b,c,mxResources.get(n[d])+"...",n[d])})))};EditorUi.prototype.installFormatToolbar=function(b){var c=this.editor.graph,d=document.createElement("div");d.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
-c.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(e,f){0<c.getSelectionCount()?(b.appendChild(d),d.innerHTML="Selected: "+c.getSelectionCount()):null!=d.parentNode&&d.parentNode.removeChild(d)}))};var E=!1;EditorUi.prototype.initFormatWindow=function(){if(!E&&null!=this.formatWindow){E=!0;this.formatWindow.window.setClosable(!1);var b=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){b.apply(this,arguments);this.minimized?(this.div.style.width=
+c.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(e,f){0<c.getSelectionCount()?(b.appendChild(d),d.innerHTML="Selected: "+c.getSelectionCount()):null!=d.parentNode&&d.parentNode.removeChild(d)}))};var F=!1;EditorUi.prototype.initFormatWindow=function(){if(!F&&null!=this.formatWindow){F=!0;this.formatWindow.window.setClosable(!1);var b=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){b.apply(this,arguments);this.minimized?(this.div.style.width=
"90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(b){mxEvent.getSource(b)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var O=EditorUi.prototype.init;EditorUi.prototype.init=function(){function c(b,
c,d){var e=m.menus.get(b),f=t.addMenu(mxResources.get(b),mxUtils.bind(this,function(){e.funct.apply(this,arguments)}),q);f.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";f.style.display="inline-block";f.style.boxSizing="border-box";f.style.top="6px";f.style.marginRight="6px";f.style.height="30px";f.style.paddingTop="6px";f.style.paddingBottom="6px";f.style.cursor="pointer";f.setAttribute("title",mxResources.get(b));m.menus.menuCreated(e,f,"geMenuItem");null!=d?(f.style.backgroundImage=
"url("+d+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.width="34px",f.innerHTML=""):c||(f.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",f.style.backgroundPosition="right 6px center",f.style.backgroundRepeat="no-repeat",f.style.paddingRight="22px");return f}function d(b,c,d,e,f,g){var k=document.createElement("a");k.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";k.style.display="inline-block";
k.style.boxSizing="border-box";k.style.height="30px";k.style.padding="6px";k.style.position="relative";k.style.verticalAlign="top";k.style.top="0px";"1"==urlParams.sketch&&(k.style.borderStyle="none",k.style.boxShadow="none",k.style.padding="6px",k.style.margin="0px");null!=m.statusContainer?p.insertBefore(k,m.statusContainer):p.appendChild(k);null!=g?(k.style.backgroundImage="url("+g+")",k.style.backgroundPosition="center center",k.style.backgroundRepeat="no-repeat",k.style.backgroundSize="24px 24px",
k.style.width="34px"):mxUtils.write(k,b);mxEvent.addListener(k,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(k,"click",function(b){"disabled"!=k.getAttribute("disabled")&&c(b);mxEvent.consume(b)});null==d&&(k.style.marginRight="4px");null!=e&&k.setAttribute("title",e);null!=f&&(b=function(){f.isEnabled()?(k.removeAttribute("disabled"),k.style.cursor="pointer"):(k.setAttribute("disabled","disabled"),k.style.cursor="default")},
f.addListener("stateChanged",b),n.addListener("enabledChanged",b),b());return k}function g(b,c,d){d=document.createElement("div");d.className="geMenuItem";d.style.display="inline-block";d.style.verticalAlign="top";d.style.marginRight="6px";d.style.padding="0 4px 0 4px";d.style.height="30px";d.style.position="relative";d.style.top="0px";"1"==urlParams.sketch&&(d.style.boxShadow="none");for(var e=0;e<b.length;e++)null!=b[e]&&("1"==urlParams.sketch&&(b[e].style.padding="10px 8px",b[e].style.width="30px"),
-b[e].style.margin="0px",b[e].style.boxShadow="none",d.appendChild(b[e]));null!=c&&mxUtils.setOpacity(d,c);null!=m.statusContainer&&"1"!=urlParams.sketch?p.insertBefore(d,m.statusContainer):p.appendChild(d);return d}function k(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(I.style.left=58>E.offsetTop-E.offsetHeight/2?"70px":"10px");else{for(var b=p.firstChild;null!=b;){var e=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=e}q=p.firstChild;f=window.innerWidth||
+b[e].style.margin="0px",b[e].style.boxShadow="none",d.appendChild(b[e]));null!=c&&mxUtils.setOpacity(d,c);null!=m.statusContainer&&"1"!=urlParams.sketch?p.insertBefore(d,m.statusContainer):p.appendChild(d);return d}function k(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(I.style.left=58>F.offsetTop-F.offsetHeight/2?"70px":"10px");else{for(var b=p.firstChild;null!=b;){var e=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=e}q=p.firstChild;f=window.innerWidth||
document.documentElement.clientWidth||document.body.clientWidth;var b=1E3>f||"1"==urlParams.sketch,k=null;b||(k=c("diagram"));e=b?c("diagram",null,Editor.drawLogoImage):null;null!=e&&(k=e);g([k,d(mxResources.get("shapes"),m.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),m.actions.get("image"),b?Editor.shapesImage:null),d(mxResources.get("format"),m.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+m.actions.get("formatPanel").shortcut+")",m.actions.get("image"),
-b?Editor.formatImage:null)],b?60:null);e=c("insert",!0,b?F:null);g([e,d(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=f&&(g([Z,la],60),520<=f&&g([Fa,640<=f?d("",ma.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",ma,Editor.zoomInImage):null,640<=f?d("",ra.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",ra,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
+b?Editor.formatImage:null)],b?60:null);e=c("insert",!0,b?G:null);g([e,d(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=f&&(g([Z,ka],60),520<=f&&g([Fa,640<=f?d("",la.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",la,Editor.zoomInImage):null,640<=f?d("",qa.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",qa,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
mxEvent.addGestureListeners(k,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&m.appIconClicked(b)}),null,null));e=m.menus.get("language");null!=e&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f&&"1"!=urlParams.sketch?(null==wa&&(e=t.addMenu("",e.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),wa=e),m.buttonContainer.style.paddingRight="34px"):(m.buttonContainer.style.paddingRight="4px",null!=wa&&(wa.parentNode.removeChild(wa),wa=null))}O.apply(this,arguments);"1"!=urlParams.embedInline&&
this.doSetDarkMode(null!=urlParams.dark?1==urlParams.dark&&!mxClient.IS_IE&&!mxClient.IS_IE11:null!=mxSettings.settings.darkMode?mxSettings.settings.darkMode:window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches);var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";l.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(l);"1"==urlParams.sketch&&
@@ -4042,44 +4042,43 @@ p);m.statusContainer=m.createStatusContainer();m.statusContainer.style.position=
if(null!=b&&null!=b.getTitle()){var c=b.getMode();"google"==c?c="googleDrive":"github"==c?c="gitHub":"gitlab"==c?c="gitLab":"onedrive"==c&&(c="oneDrive");c=mxResources.get(c);p.setAttribute("title",b.getTitle()+(null!=c?" ("+c+")":""))}else p.removeAttribute("title")};m.setStatusText(m.editor.getStatus());p.appendChild(m.statusContainer);m.buttonContainer=document.createElement("div");m.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";
p.appendChild(m.buttonContainer);m.menubarContainer=m.buttonContainer;m.tabContainer=document.createElement("div");m.tabContainer.className="geTabContainer";m.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";var l=m.diagramContainer.parentNode,x=document.createElement("div");x.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";m.diagramContainer.style.top="1"==urlParams.sketch?
"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){x.style.top="20px";m.titlebar=document.createElement("div");m.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var y=document.createElement("div");y.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";m.titlebar.appendChild(y);l.appendChild(m.titlebar)}var z=
-m.menus.get("viewZoom"),F="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,D="1"==urlParams.sketch?document.createElement("div"):null,E="1"==urlParams.sketch?document.createElement("div"):null,I="1"==urlParams.sketch?document.createElement("div"):null,y=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();n.refresh();n.view.validateBackground()});m.addListener("darkModeChanged",y);m.addListener("sketchModeChanged",y);var na=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)I.style.left=
-"10px",I.style.top="10px",E.style.left="10px",E.style.top="60px",D.style.top="10px",D.style.right="12px",D.style.left="",m.diagramContainer.setAttribute("data-bounds",m.diagramContainer.style.top+" "+m.diagramContainer.style.left+" "+m.diagramContainer.style.width+" "+m.diagramContainer.style.height),m.diagramContainer.style.top="0px",m.diagramContainer.style.left="0px",m.diagramContainer.style.bottom="0px",m.diagramContainer.style.right="0px",m.diagramContainer.style.width="",m.diagramContainer.style.height=
+m.menus.get("viewZoom"),G="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,D="1"==urlParams.sketch?document.createElement("div"):null,F="1"==urlParams.sketch?document.createElement("div"):null,I="1"==urlParams.sketch?document.createElement("div"):null,y=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();n.refresh();n.view.validateBackground()});m.addListener("darkModeChanged",y);m.addListener("sketchModeChanged",y);var ma=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)I.style.left=
+"10px",I.style.top="10px",F.style.left="10px",F.style.top="60px",D.style.top="10px",D.style.right="12px",D.style.left="",m.diagramContainer.setAttribute("data-bounds",m.diagramContainer.style.top+" "+m.diagramContainer.style.left+" "+m.diagramContainer.style.width+" "+m.diagramContainer.style.height),m.diagramContainer.style.top="0px",m.diagramContainer.style.left="0px",m.diagramContainer.style.bottom="0px",m.diagramContainer.style.right="0px",m.diagramContainer.style.width="",m.diagramContainer.style.height=
"";else{var b=m.diagramContainer.getAttribute("data-bounds");if(null!=b){m.diagramContainer.style.background="transparent";m.diagramContainer.removeAttribute("data-bounds");var c=n.getGraphBounds(),b=b.split(" ");m.diagramContainer.style.top=b[0];m.diagramContainer.style.left=b[1];m.diagramContainer.style.width=c.width+50+"px";m.diagramContainer.style.height=c.height+46+"px";m.diagramContainer.style.bottom="";m.diagramContainer.style.right="";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",
-rect:m.diagramContainer.getBoundingClientRect()}),"*");m.refresh()}I.style.left=m.diagramContainer.offsetLeft+"px";I.style.top=m.diagramContainer.offsetTop-I.offsetHeight-4+"px";E.style.display="";E.style.left=m.diagramContainer.offsetLeft-E.offsetWidth-4+"px";E.style.top=m.diagramContainer.offsetTop+"px";D.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-D.offsetWidth+"px";D.style.top=I.style.top;D.style.right="";m.bottomResizer.style.left=m.diagramContainer.offsetLeft+(m.diagramContainer.offsetWidth-
+rect:m.diagramContainer.getBoundingClientRect()}),"*");m.refresh()}I.style.left=m.diagramContainer.offsetLeft+"px";I.style.top=m.diagramContainer.offsetTop-I.offsetHeight-4+"px";F.style.display="";F.style.left=m.diagramContainer.offsetLeft-F.offsetWidth-4+"px";F.style.top=m.diagramContainer.offsetTop+"px";D.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-D.offsetWidth+"px";D.style.top=I.style.top;D.style.right="";m.bottomResizer.style.left=m.diagramContainer.offsetLeft+(m.diagramContainer.offsetWidth-
m.bottomResizer.offsetWidth)/2+"px";m.bottomResizer.style.top=m.diagramContainer.offsetTop+m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight/2-1+"px";m.rightResizer.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-m.rightResizer.offsetWidth/2-1+"px";m.rightResizer.style.top=m.diagramContainer.offsetTop+(m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight)/2+"px"}m.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";m.rightResizer.style.visibility=
-m.bottomResizer.style.visibility;p.style.display="none";I.style.visibility="";D.style.visibility=""}),qa=mxUtils.bind(this,function(){ya.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";na()}),y=mxUtils.bind(this,function(){qa();b(m,!0);m.initFormatWindow();var c=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(c.x+
-c.width+4,c.y)});m.addListener("inlineFullscreenChanged",qa);m.addListener("editInlineStart",y);"1"==urlParams.embedInline&&m.addListener("darkModeChanged",y);m.addListener("editInlineStop",mxUtils.bind(this,function(b){m.diagramContainer.style.width="10px";m.diagramContainer.style.height="10px";m.diagramContainer.style.border="";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";I.style.visibility="hidden";D.style.visibility="hidden";E.style.display="none"}));if(null!=
-m.hoverIcons){var pa=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||pa.apply(this,arguments)}}if(null!=n.freehand){var ha=n.freehand.createStyle;n.freehand.createStyle=function(b){return ha.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){E.className="geToolbarContainer";D.className="geToolbarContainer";I.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=E;var sa=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
-"inline-block"});mxEvent.addListener(p,"mouseleave",function(){sa||(m.statusContainer.style.display="none")});var Y=mxUtils.bind(this,function(b){null!=m.notificationBtn&&(null!=b?m.notificationBtn.setAttribute("title",b):m.notificationBtn.removeAttribute("title"))});"1"!=urlParams.embed?(p.style.visibility=14>p.clientWidth?"hidden":"",m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus());if(0==m.statusContainer.children.length||1==m.statusContainer.children.length&&
+m.bottomResizer.style.visibility;p.style.display="none";I.style.visibility="";D.style.visibility=""}),pa=mxUtils.bind(this,function(){ya.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";ma()}),y=mxUtils.bind(this,function(){pa();b(m,!0);m.initFormatWindow();var c=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(c.x+
+c.width+4,c.y)});m.addListener("inlineFullscreenChanged",pa);m.addListener("editInlineStart",y);"1"==urlParams.embedInline&&m.addListener("darkModeChanged",y);m.addListener("editInlineStop",mxUtils.bind(this,function(b){m.diagramContainer.style.width="10px";m.diagramContainer.style.height="10px";m.diagramContainer.style.border="";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";I.style.visibility="hidden";D.style.visibility="hidden";F.style.display="none"}));if(null!=
+m.hoverIcons){var oa=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||oa.apply(this,arguments)}}if(null!=n.freehand){var ga=n.freehand.createStyle;n.freehand.createStyle=function(b){return ga.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){F.className="geToolbarContainer";D.className="geToolbarContainer";I.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=F;var ra=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
+"inline-block"});mxEvent.addListener(p,"mouseleave",function(){ra||(m.statusContainer.style.display="none")});var Y=mxUtils.bind(this,function(b){null!=m.notificationBtn&&(null!=b?m.notificationBtn.setAttribute("title",b):m.notificationBtn.removeAttribute("title"))});"1"!=urlParams.embed?(p.style.visibility=14>p.clientWidth?"hidden":"",m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus());if(0==m.statusContainer.children.length||1==m.statusContainer.children.length&&
"function"===typeof m.statusContainer.firstChild.getAttribute&&null==m.statusContainer.firstChild.getAttribute("class")){var b=null!=m.statusContainer.firstChild&&"function"===typeof m.statusContainer.firstChild.getAttribute?m.statusContainer.firstChild.getAttribute("title"):m.editor.getStatus();Y(b);var c=m.getCurrentFile(),c=null!=c?c.savingStatusKey:DrawioFile.prototype.savingStatusKey;b==mxResources.get(c)+"..."?(m.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(c))+
-'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",sa=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",sa=!1)}else m.statusContainer.style.display="inline-block",Y(null),sa=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));R=c("diagram",null,Editor.menuImage);R.style.boxShadow="none";R.style.padding="6px";R.style.margin=
-"0px";I.appendChild(R);mxEvent.disableContextMenu(R);mxEvent.addGestureListeners(R,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(f-240,280)+"px";m.statusContainer.style.display=
-"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var Q=document.createElement("a");Q.style.padding="0px";Q.style.boxShadow="none";Q.className="geMenuItem";Q.style.display="inline-block";Q.style.width="40px";Q.style.height="12px";Q.style.marginBottom="-2px";Q.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";Q.style.backgroundPosition="top center";
-Q.style.backgroundRepeat="no-repeat";Q.setAttribute("title","Minimize");var ta=!1,T=mxUtils.bind(this,function(){E.innerHTML="";if(!ta){var b=function(b,c,f){b=d("",b.funct,null,c,b,f);b.style.width="40px";b.style.opacity="0.7";return e(b,null,"pointer")},e=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";E.appendChild(b);mxUtils.br(E);return b};e(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
+'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",ra=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",ra=!1)}else m.statusContainer.style.display="inline-block",Y(null),ra=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));Q=c("diagram",null,Editor.menuImage);Q.style.boxShadow="none";Q.style.padding="6px";Q.style.margin=
+"0px";I.appendChild(Q);mxEvent.disableContextMenu(Q);mxEvent.addGestureListeners(Q,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(f-240,280)+"px";m.statusContainer.style.display=
+"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var P=document.createElement("a");P.style.padding="0px";P.style.boxShadow="none";P.className="geMenuItem";P.style.display="inline-block";P.style.width="40px";P.style.height="12px";P.style.marginBottom="-2px";P.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";P.style.backgroundPosition="top center";
+P.style.backgroundRepeat="no-repeat";P.setAttribute("title","Minimize");var sa=!1,T=mxUtils.bind(this,function(){F.innerHTML="";if(!sa){var b=function(b,c,f){b=d("",b.funct,null,c,b,f);b.style.width="40px";b.style.opacity="0.7";return e(b,null,"pointer")},e=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";F.appendChild(b);mxUtils.br(F);return b};e(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
60,30,"Text",mxResources.get("text"),!0,!1,null,!0,!0),mxResources.get("text")+" ("+Editor.ctrlKey+"+Shift+X)");e(m.sidebar.createVertexTemplate("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontColor=#000000;darkOpacity=0.05;fillColor=#FFF9B2;strokeColor=none;fillStyle=solid;direction=west;gradientDirection=north;gradientColor=#FFF2A1;shadow=1;size=20;pointerEvents=1;",140,160,"",mxResources.get("note"),!0,!1,null,!0),mxResources.get("note"));e(m.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");e(m.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var b=new mxCell("",new mxGeometry(0,0,n.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,0),!1);
b.geometry.points=[];b.geometry.relative=!0;b.edge=!0;e(m.sidebar.createEdgeTemplateFromCells([b],b.geometry.width,b.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));b=b.clone();b.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";b.geometry.width=n.defaultEdgeLength+20;b.geometry.setTerminalPoint(new mxPoint(0,20),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,20),!1);b=e(m.sidebar.createEdgeTemplateFromCells([b],
-b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var f=m.actions.get("toggleShapes");b(f,mxResources.get("shapes")+" ("+f.shortcut+")",F);R=c("table",null,Editor.calendarImage);R.style.boxShadow="none";R.style.opacity="0.7";R.style.padding="6px";
-R.style.margin="0px";R.style.width="37px";e(R,null,"pointer");R=c("insert",null,Editor.plusImage);R.style.boxShadow="none";R.style.opacity="0.7";R.style.padding="6px";R.style.margin="0px";R.style.width="37px";e(R,null,"pointer")}"1"!=urlParams.embedInline&&E.appendChild(Q)});mxEvent.addListener(Q,"click",mxUtils.bind(this,function(){ta?(mxUtils.setPrefixedStyle(E.style,"transform","translate(0, -50%)"),E.style.padding="8px 6px 4px",E.style.top="50%",E.style.bottom="",E.style.height="",Q.style.backgroundImage=
-"url("+mxWindow.prototype.normalizeImage+")",Q.style.width="40px",Q.style.height="12px",Q.setAttribute("title","Minimize"),ta=!1,T()):(E.innerHTML="",E.appendChild(Q),mxUtils.setPrefixedStyle(E.style,"transform","translate(0, 0)"),E.style.top="",E.style.bottom="12px",E.style.padding="0px",E.style.height="24px",Q.style.height="24px",Q.style.backgroundImage="url("+Editor.plusImage+")",Q.setAttribute("title",mxResources.get("insert")),Q.style.width="24px",ta=!0)}));T();m.addListener("darkModeChanged",
-T);m.addListener("sketchModeChanged",T)}else m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=z){var ja=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},ma=m.actions.get("zoomIn"),ra=m.actions.get("zoomOut"),S=m.actions.get("resetView"),y=m.actions.get("fullscreen"),oa=m.actions.get("undo"),da=m.actions.get("redo"),Z=d("",oa.funct,
-null,mxResources.get("undo")+" ("+oa.shortcut+")",oa,Editor.undoImage),la=d("",da.funct,null,mxResources.get("redo")+" ("+da.shortcut+")",da,Editor.redoImage),ya=d("",y.funct,null,mxResources.get("fullscreen"),y,Editor.fullscreenImage);if(null!=D){z=function(){aa.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};S=function(){aa.innerHTML="";null!=m.currentPage&&mxUtils.write(aa,m.currentPage.getName())};ya.parentNode.removeChild(ya);
-var za=m.actions.get("delete"),ua=d("",za.funct,null,mxResources.get("delete"),za,Editor.trashImage);ua.style.opacity="0.1";I.appendChild(ua);za.addListener("stateChanged",function(){ua.style.opacity=za.enabled?"":"0.1"});var fa=function(){Z.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";la.style.display=Z.style.display;Z.style.opacity=oa.enabled?"":"0.1";la.style.opacity=da.enabled?"":"0.1"};I.appendChild(Z);I.appendChild(la);oa.addListener("stateChanged",
-fa);da.addListener("stateChanged",fa);fa();null!=urlParams.layers&&(fa=m.actions.get("layers"),fa=d("",fa.funct,null,mxResources.get("layers"),fa,Editor.layersImage),fa.style.opacity="0.4",D.appendChild(fa));null!=urlParams.tags&&(fa=m.actions.get("tags"),fa=d("",fa.funct,null,mxResources.get("tags"),fa,Editor.tagsImage),fa.style.opacity="0.4",D.appendChild(fa));var aa=this.createPageMenuTab(!1,!0);aa.style.display="none";aa.style.position="";aa.style.marginLeft="";aa.style.top="";aa.style.left="";
-aa.style.height="100%";aa.style.lineHeight="";aa.style.borderStyle="none";aa.style.padding="3px 0";aa.style.margin="0px";aa.style.background="";aa.style.border="";aa.style.boxShadow="none";aa.style.verticalAlign="top";aa.style.width="auto";aa.style.maxWidth="160px";aa.style.position="relative";aa.style.padding="6px";aa.style.textOverflow="ellipsis";aa.style.opacity="0.8";m.editor.addListener("pageSelected",S);m.editor.addListener("pageRenamed",S);m.editor.addListener("fileLoaded",S);S();null!=m.currentPage&&
-(mxUtils.write(R,m.currentPage.getName()),console.log("initial page not emptry"));D.appendChild(aa);m.addListener("fileDescriptorChanged",z);m.addListener("pagesVisibleChanged",z);z();z=d("",ra.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",ra,Editor.zoomOutImage);D.appendChild(z);var R=document.createElement("div");R.innerHTML="100%";R.setAttribute("title",mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");R.style.display="inline-block";R.style.cursor=
-"pointer";R.style.textAlign="center";R.style.whiteSpace="nowrap";R.style.paddingRight="10px";R.style.textDecoration="none";R.style.verticalAlign="top";R.style.padding="6px 0";R.style.fontSize="14px";R.style.width="40px";R.style.opacity="0.4";D.appendChild(R);mxEvent.addListener(R,"click",ja);ja=d("",ma.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",ma,Editor.zoomInImage);D.appendChild(ja);y.visible&&(D.appendChild(ya),mxEvent.addListener(document,"fullscreenchange",function(){ya.style.backgroundImage=
-"url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(y=m.actions.get("exit"),D.appendChild(d("",y.funct,null,mxResources.get("exit"),y,Editor.closeImage)));m.tabContainer.style.visibility="hidden";p.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
-I.style.cssText="position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";D.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";x.appendChild(I);x.appendChild(D);E.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
-x.appendChild(E);window.setTimeout(function(){mxUtils.setPrefixedStyle(E.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var Fa=d("",ja,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",S,Editor.zoomFitImage);p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";R=t.addMenu("100%",z.funct);R.setAttribute("title",mxResources.get("zoom")+
-" (Alt+Mousewheel)");R.style.whiteSpace="nowrap";R.style.paddingRight="10px";R.style.textDecoration="none";R.style.textDecoration="none";R.style.overflow="hidden";R.style.visibility="hidden";R.style.textAlign="center";R.style.cursor="pointer";R.style.height=parseInt(m.tabContainerHeight)-1+"px";R.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";R.style.position="absolute";R.style.display="block";R.style.fontSize="12px";R.style.width="59px";R.style.right="0px";R.style.bottom="0px";R.style.backgroundImage=
-"url("+mxWindow.prototype.minimizeImage+")";R.style.backgroundPosition="right 6px center";R.style.backgroundRepeat="no-repeat";x.appendChild(R)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML="";mxUtils.write(b,Math.round(100*m.editor.graph.view.scale)+"%")});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(R);var Ga=m.setGraphEnabled;m.setGraphEnabled=function(){Ga.apply(this,arguments);null!=this.tabContainer&&
-(R.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==D?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=f)&&"1"!=urlParams.embedInline&&b(this,!0);null==D&&x.appendChild(m.tabContainer);var wa=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();
-null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&m.actions.outlineWindow.window.fit();null!=m.actions.layersWindow&&m.actions.layersWindow.window.fit();null!=m.menus.tagsWindow&&m.menus.tagsWindow.window.fit();null!=m.menus.findWindow&&m.menus.findWindow.window.fit();null!=m.menus.findReplaceWindow&&m.menus.findReplaceWindow.window.fit()});if("1"==urlParams.embedInline){document.body.style.cursor="text";E.style.transform="";mxEvent.addGestureListeners(m.diagramContainer.parentNode,
+b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var f=m.actions.get("toggleShapes");b(f,mxResources.get("shapes")+" ("+f.shortcut+")",G);Q=c("table",null,Editor.calendarImage);Q.style.boxShadow="none";Q.style.opacity="0.7";Q.style.padding="6px";
+Q.style.margin="0px";Q.style.width="37px";e(Q,null,"pointer");Q=c("insert",null,Editor.plusImage);Q.style.boxShadow="none";Q.style.opacity="0.7";Q.style.padding="6px";Q.style.margin="0px";Q.style.width="37px";e(Q,null,"pointer")}"1"!=urlParams.embedInline&&F.appendChild(P)});mxEvent.addListener(P,"click",mxUtils.bind(this,function(){sa?(mxUtils.setPrefixedStyle(F.style,"transform","translate(0, -50%)"),F.style.padding="8px 6px 4px",F.style.top="50%",F.style.bottom="",F.style.height="",P.style.backgroundImage=
+"url("+mxWindow.prototype.normalizeImage+")",P.style.width="40px",P.style.height="12px",P.setAttribute("title","Minimize"),sa=!1,T()):(F.innerHTML="",F.appendChild(P),mxUtils.setPrefixedStyle(F.style,"transform","translate(0, 0)"),F.style.top="",F.style.bottom="12px",F.style.padding="0px",F.style.height="24px",P.style.height="24px",P.style.backgroundImage="url("+Editor.plusImage+")",P.setAttribute("title",mxResources.get("insert")),P.style.width="24px",sa=!0)}));T();m.addListener("darkModeChanged",
+T);m.addListener("sketchModeChanged",T)}else m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=z){var ia=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},la=m.actions.get("zoomIn"),qa=m.actions.get("zoomOut"),S=m.actions.get("resetView"),y=m.actions.get("fullscreen"),na=m.actions.get("undo"),ca=m.actions.get("redo"),Z=d("",na.funct,
+null,mxResources.get("undo")+" ("+na.shortcut+")",na,Editor.undoImage),ka=d("",ca.funct,null,mxResources.get("redo")+" ("+ca.shortcut+")",ca,Editor.redoImage),ya=d("",y.funct,null,mxResources.get("fullscreen"),y,Editor.fullscreenImage);if(null!=D){z=function(){aa.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};S=function(){aa.innerHTML="";null!=m.currentPage&&mxUtils.write(aa,m.currentPage.getName())};ya.parentNode.removeChild(ya);
+var za=m.actions.get("delete"),ta=d("",za.funct,null,mxResources.get("delete"),za,Editor.trashImage);ta.style.opacity="0.1";I.appendChild(ta);za.addListener("stateChanged",function(){ta.style.opacity=za.enabled?"":"0.1"});var ua=function(){Z.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";ka.style.display=Z.style.display;Z.style.opacity=na.enabled?"":"0.1";ka.style.opacity=ca.enabled?"":"0.1"};I.appendChild(Z);I.appendChild(ka);na.addListener("stateChanged",
+ua);ca.addListener("stateChanged",ua);ua();var aa=this.createPageMenuTab(!1,!0);aa.style.display="none";aa.style.position="";aa.style.marginLeft="";aa.style.top="";aa.style.left="";aa.style.height="100%";aa.style.lineHeight="";aa.style.borderStyle="none";aa.style.padding="3px 0";aa.style.margin="0px";aa.style.background="";aa.style.border="";aa.style.boxShadow="none";aa.style.verticalAlign="top";aa.style.width="auto";aa.style.maxWidth="160px";aa.style.position="relative";aa.style.padding="6px";aa.style.textOverflow=
+"ellipsis";aa.style.opacity="0.8";m.editor.addListener("pageSelected",S);m.editor.addListener("pageRenamed",S);m.editor.addListener("fileLoaded",S);S();null!=m.currentPage&&(mxUtils.write(Q,m.currentPage.getName()),console.log("initial page not emptry"));D.appendChild(aa);m.addListener("fileDescriptorChanged",z);m.addListener("pagesVisibleChanged",z);z();z=d("",qa.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",qa,Editor.zoomOutImage);D.appendChild(z);var Q=document.createElement("div");
+Q.innerHTML="100%";Q.setAttribute("title",mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");Q.style.display="inline-block";Q.style.cursor="pointer";Q.style.textAlign="center";Q.style.whiteSpace="nowrap";Q.style.paddingRight="10px";Q.style.textDecoration="none";Q.style.verticalAlign="top";Q.style.padding="6px 0";Q.style.fontSize="14px";Q.style.width="40px";Q.style.opacity="0.4";D.appendChild(Q);mxEvent.addListener(Q,"click",ia);ia=d("",la.funct,!0,mxResources.get("zoomIn")+
+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",la,Editor.zoomInImage);D.appendChild(ia);y.visible&&(D.appendChild(ya),mxEvent.addListener(document,"fullscreenchange",function(){ya.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(y=m.actions.get("exit"),D.appendChild(d("",y.funct,null,mxResources.get("exit"),y,Editor.closeImage)));m.tabContainer.style.visibility="hidden";p.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
+I.style.cssText="position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";D.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";x.appendChild(I);x.appendChild(D);F.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
+x.appendChild(F);window.setTimeout(function(){mxUtils.setPrefixedStyle(F.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var Fa=d("",ia,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",S,Editor.zoomFitImage);p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";Q=t.addMenu("100%",z.funct);Q.setAttribute("title",mxResources.get("zoom")+
+" (Alt+Mousewheel)");Q.style.whiteSpace="nowrap";Q.style.paddingRight="10px";Q.style.textDecoration="none";Q.style.textDecoration="none";Q.style.overflow="hidden";Q.style.visibility="hidden";Q.style.textAlign="center";Q.style.cursor="pointer";Q.style.height=parseInt(m.tabContainerHeight)-1+"px";Q.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";Q.style.position="absolute";Q.style.display="block";Q.style.fontSize="12px";Q.style.width="59px";Q.style.right="0px";Q.style.bottom="0px";Q.style.backgroundImage=
+"url("+mxWindow.prototype.minimizeImage+")";Q.style.backgroundPosition="right 6px center";Q.style.backgroundRepeat="no-repeat";x.appendChild(Q)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML="";mxUtils.write(b,Math.round(100*m.editor.graph.view.scale)+"%")});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(Q);var Ga=m.setGraphEnabled;m.setGraphEnabled=function(){Ga.apply(this,arguments);null!=this.tabContainer&&
+(Q.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==D?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=f)&&"1"!=urlParams.embedInline&&b(this,!0);null==D&&x.appendChild(m.tabContainer);var wa=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();
+null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&m.actions.outlineWindow.window.fit();null!=m.actions.layersWindow&&m.actions.layersWindow.window.fit();null!=m.menus.tagsWindow&&m.menus.tagsWindow.window.fit();null!=m.menus.findWindow&&m.menus.findWindow.window.fit();null!=m.menus.findReplaceWindow&&m.menus.findReplaceWindow.window.fit()});if("1"==urlParams.embedInline){document.body.style.cursor="text";F.style.transform="";mxEvent.addGestureListeners(m.diagramContainer.parentNode,
function(b){mxEvent.getSource(b)==m.diagramContainer.parentNode&&(m.embedExitPoint=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),m.sendEmbeddedSvgExport())});l=document.createElement("div");l.style.position="absolute";l.style.width="10px";l.style.height="10px";l.style.borderRadius="5px";l.style.border="1px solid gray";l.style.background="#ffffff";l.style.cursor="row-resize";m.diagramContainer.parentNode.appendChild(l);m.bottomResizer=l;var Aa=null,xa=null,Ba=null,Ha=null;mxEvent.addGestureListeners(l,
function(b){Ha=parseInt(m.diagramContainer.style.height);xa=mxEvent.getClientY(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});l=l.cloneNode(!1);l.style.cursor="col-resize";m.diagramContainer.parentNode.appendChild(l);m.rightResizer=l;mxEvent.addGestureListeners(l,function(b){Ba=parseInt(m.diagramContainer.style.width);Aa=mxEvent.getClientX(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});mxEvent.addGestureListeners(document.body,null,function(b){var c=!1;null!=Aa&&(m.diagramContainer.style.width=
-Math.max(20,Ba+mxEvent.getClientX(b)-Aa)+"px",c=!0);null!=xa&&(m.diagramContainer.style.height=Math.max(20,Ha+mxEvent.getClientY(b)-xa)+"px",c=!0);c&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:m.diagramContainer.getBoundingClientRect()}),"*"),na(),m.refresh())},function(b){null==Aa&&null==xa||mxEvent.consume(b);xa=Aa=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";m.bottomResizer.style.visibility=
-"hidden";m.rightResizer.style.visibility="hidden";I.style.visibility="hidden";D.style.visibility="hidden";E.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,f,n,l,q){this.file=b;this.id=c;this.content=e;this.modifiedDate=f;this.createdDate=n;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,f,n){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,f,n){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=f;this.locale=n};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlabels=Labels\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsnapToGrid=Snap to Grid\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunmerge=Unmerge\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\nspellCheck=Spell checker\nnoChange=No Change\nlblToSvg=Convert labels to SVG\ntxtSettings=Text Settings\nLinksLost=Links will be lost\narcSize=Arc Size\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
+Math.max(20,Ba+mxEvent.getClientX(b)-Aa)+"px",c=!0);null!=xa&&(m.diagramContainer.style.height=Math.max(20,Ha+mxEvent.getClientY(b)-xa)+"px",c=!0);c&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:m.diagramContainer.getBoundingClientRect()}),"*"),ma(),m.refresh())},function(b){null==Aa&&null==xa||mxEvent.consume(b);xa=Aa=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";m.bottomResizer.style.visibility=
+"hidden";m.rightResizer.style.visibility="hidden";I.style.visibility="hidden";D.style.visibility="hidden";F.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,f,n,l,q){this.file=b;this.id=c;this.content=e;this.modifiedDate=f;this.createdDate=n;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,f,n){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,f,n){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=f;this.locale=n};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlabels=Labels\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsnapToGrid=Snap to Grid\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunmerge=Unmerge\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\nspellCheck=Spell checker\nnoChange=No Change\nlblToSvg=Convert labels to SVG\ntxtSettings=Text Settings\nLinksLost=Links will be lost\narcSize=Arc Size\neditConnectionPoints=Edit Connection Points\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=Graph.prototype.defaultThemes["default-style2"];GraphViewer=function(b,c,e){this.init(b,c,e)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://viewer.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?24:26;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!1;GraphViewer.prototype.autoCrop=!1;
GraphViewer.prototype.autoOrigin=!0;GraphViewer.prototype.center=!1;GraphViewer.prototype.forceCenter=!1;GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.allowZoomOut=!0;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;GraphViewer.prototype.responsive=!1;
GraphViewer.prototype.init=function(b,c,e){this.graphConfig=null!=e?e:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.autoCrop=null!=this.graphConfig["auto-crop"]?this.graphConfig["auto-crop"]:this.autoCrop;this.autoOrigin=null!=this.graphConfig["auto-origin"]?this.graphConfig["auto-origin"]:this.autoOrigin;this.allowZoomOut=null!=this.graphConfig["allow-zoom-out"]?this.graphConfig["allow-zoom-out"]:this.allowZoomOut;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?
@@ -4122,17 +4121,17 @@ function(){mxUtils.setOpacity(e,0);f=null;n=window.setTimeout(mxUtils.bind(this,
this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(b,c){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<k&&Math.abs(this.scrollTop-d.container.scrollTop)<k&&Math.abs(this.startX-c.getGraphX())<k&&Math.abs(this.startY-c.getGraphY())<k&&(0<parseFloat(e.style.opacity||0)?l():q(30))}})}for(var g=this.toolbarItems,p=0,m=null,u=null,v=null,t=null,z=0;z<g.length;z++){var y=g[z];if("pages"==y){t=c.ownerDocument.createElement("div");
t.style.cssText="display:inline-block;position:relative;top:5px;padding:0 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;;cursor:default;";mxUtils.setOpacity(t,70);var I=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");I.style.borderRightStyle="none";I.style.paddingLeft="0px";I.style.paddingRight="0px";e.appendChild(t);var D=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");D.style.paddingLeft="0px";D.style.paddingRight="0px";y=mxUtils.bind(this,function(){t.innerHTML="";mxUtils.write(t,this.currentPage+1+" / "+this.diagrams.length);t.style.display=1<this.diagrams.length?"inline-block":"none";I.style.display=t.style.display;D.style.display=t.style.display});this.addListener("graphChanged",y);y()}else if("zoom"==y)this.zoomEnabled&&(b(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
-mxResources.get("zoomOut")||"Zoom Out"),b(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),b(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==y){if(this.layersEnabled){var F=this.graph.getModel(),E=b(mxUtils.bind(this,function(b){if(null!=m)m.parentNode.removeChild(m),
+mxResources.get("zoomOut")||"Zoom Out"),b(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),b(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==y){if(this.layersEnabled){var G=this.graph.getModel(),F=b(mxUtils.bind(this,function(b){if(null!=m)m.parentNode.removeChild(m),
m=null;else{m=this.graph.createLayersDialog(mxUtils.bind(this,function(){if(this.autoCrop)this.crop();else if(this.autoOrigin){var b=this.graph.getGraphBounds(),c=this.graph.view;0>b.x||0>b.y?(this.crop(),this.graph.originalViewState=this.graph.initialViewState,this.graph.initialViewState={translate:c.translate.clone(),scale:c.scale}):null!=this.graph.originalViewState&&0<b.x/c.scale+this.graph.originalViewState.translate.x-c.translate.x&&0<b.y/c.scale+this.graph.originalViewState.translate.y-c.translate.y&&
-(c.setTranslate(this.graph.originalViewState.translate.x,this.graph.originalViewState.translate.y),this.graph.originalViewState=null,this.graph.initialViewState={translate:c.translate.clone(),scale:c.scale})}}));mxEvent.addListener(m,"mouseleave",function(){m.parentNode.removeChild(m);m=null});b=E.getBoundingClientRect();m.style.width="140px";m.style.padding="2px 0px 2px 0px";m.style.border="1px solid #d0d0d0";m.style.backgroundColor="#eee";m.style.fontFamily=Editor.defaultHtmlFont;m.style.fontSize=
-"11px";m.style.overflowY="auto";m.style.maxHeight=this.graph.container.clientHeight-this.toolbarHeight-10+"px";m.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(m,80);var c=mxUtils.getDocumentScrollOrigin(document);m.style.left=c.x+b.left-1+"px";m.style.top=c.y+b.bottom-2+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");F.addListener(mxEvent.CHANGE,function(){E.style.display=1<F.getChildCount(F.root)?"inline-block":"none"});E.style.display=1<F.getChildCount(F.root)?
+(c.setTranslate(this.graph.originalViewState.translate.x,this.graph.originalViewState.translate.y),this.graph.originalViewState=null,this.graph.initialViewState={translate:c.translate.clone(),scale:c.scale})}}));mxEvent.addListener(m,"mouseleave",function(){m.parentNode.removeChild(m);m=null});b=F.getBoundingClientRect();m.style.width="140px";m.style.padding="2px 0px 2px 0px";m.style.border="1px solid #d0d0d0";m.style.backgroundColor="#eee";m.style.fontFamily=Editor.defaultHtmlFont;m.style.fontSize=
+"11px";m.style.overflowY="auto";m.style.maxHeight=this.graph.container.clientHeight-this.toolbarHeight-10+"px";m.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(m,80);var c=mxUtils.getDocumentScrollOrigin(document);m.style.left=c.x+b.left-1+"px";m.style.top=c.y+b.bottom-2+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");G.addListener(mxEvent.CHANGE,function(){F.style.display=1<G.getChildCount(G.root)?"inline-block":"none"});F.style.display=1<G.getChildCount(G.root)?
"inline-block":"none"}}else if("tags"==y){if(this.tagsEnabled){var O=b(mxUtils.bind(this,function(b){null==u&&(u=this.graph.createTagsDialog(mxUtils.bind(this,function(){return!0})),u.div.getElementsByTagName("div")[0].style.position="",u.div.style.maxHeight="160px",u.div.style.maxWidth="120px",u.div.style.padding="2px",u.div.style.overflow="auto",u.div.style.height="auto",u.div.style.position="fixed",u.div.style.fontFamily=Editor.defaultHtmlFont,u.div.style.fontSize="11px",u.div.style.backgroundColor=
"#eee",u.div.style.color="#000",u.div.style.border="1px solid #d0d0d0",u.div.style.zIndex=this.toolbarZIndex+1,mxUtils.setOpacity(u.div,80));if(null!=v)v.parentNode.removeChild(v),v=null;else{v=u.div;mxEvent.addListener(v,"mouseleave",function(){v.parentNode.removeChild(v);v=null});b=O.getBoundingClientRect();var c=mxUtils.getDocumentScrollOrigin(document);v.style.left=c.x+b.left-1+"px";v.style.top=c.y+b.bottom-2+"px";document.body.appendChild(v);u.refresh()}}),Editor.tagsImage,mxResources.get("tags")||
-"Tags");F.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){O.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}));O.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==y?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&(y=this.graphConfig["toolbar-buttons"][y],null!=y&&(y.elem=b(null==y.enabled||y.enabled?
+"Tags");G.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){O.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}));O.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==y?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&(y=this.graphConfig["toolbar-buttons"][y],null!=y&&(y.elem=b(null==y.enabled||y.enabled?
y.handler:function(){},y.image,y.title,y.enabled)))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*p);null!=this.graphConfig.title&&(g=c.ownerDocument.createElement("div"),g.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;",g.setAttribute("title",this.graphConfig.title),mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,70),e.appendChild(g),this.filename=
-g);this.minToolbarWidth=34*p;var B=c.style.border,G=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,c.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var b=c.getBoundingClientRect(),d=mxUtils.getScrollOrigin(document.body),d="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-d.x,top:-d.y},b={left:b.left-d.left,top:b.top-d.top,bottom:b.bottom-
+g);this.minToolbarWidth=34*p;var B=c.style.border,E=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,c.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var b=c.getBoundingClientRect(),d=mxUtils.getScrollOrigin(document.body),d="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-d.x,top:-d.y},b={left:b.left-d.left,top:b.top-d.top,bottom:b.bottom-
d.top,right:b.right-d.left};e.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?e.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=b.top+1+"px"):e.style.top=b.top+"px";"1px solid transparent"==B&&(c.style.border="1px solid #d0d0d0");document.body.appendChild(e);var f=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=m&&(m.parentNode.removeChild(m),m=null);c.style.border=
-B});mxEvent.addListener(document,"mousemove",function(b){for(b=mxEvent.getSource(b);null!=b;){if(b==c||b==e||b==m)return;b=b.parentNode}f()});mxEvent.addListener(document.body,"mouseleave",function(b){f()})}else e.style.top=-this.toolbarHeight+"px",c.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(c,"mouseenter",G):G();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=e.parentNode&&G()})).observe(c)};
+B});mxEvent.addListener(document,"mousemove",function(b){for(b=mxEvent.getSource(b);null!=b;){if(b==c||b==e||b==m)return;b=b.parentNode}f()});mxEvent.addListener(document.body,"mouseleave",function(b){f()})}else e.style.top=-this.toolbarHeight+"px",c.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(c,"mouseenter",E):E();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=e.parentNode&&E()})).observe(c)};
GraphViewer.prototype.disableButton=function(b){var c=this.graphConfig["toolbar-buttons"]?this.graphConfig["toolbar-buttons"][b]:null;null!=c&&(mxUtils.setOpacity(c.elem,30),mxEvent.removeListener(c.elem,"click",c.handler),mxEvent.addListener(c.elem,"mouseenter",function(){c.elem.style.backgroundColor="#eee"}))};
GraphViewer.prototype.addClickHandler=function(b,c){b.linkPolicy=this.graphConfig.target||b.linkPolicy;b.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(e,f){if(null==f)for(var n=mxEvent.getSource(e);n!=b.container&&null!=n&&null==f;)"a"==n.nodeName.toLowerCase()&&(f=n.getAttribute("href")),n=n.parentNode;null!=c?null==f||b.isCustomLink(f)?mxEvent.consume(e):b.isExternalProtocol(f)||b.isBlankLink(f)||window.setTimeout(function(){c.destroy()},0):null!=f&&null==c&&b.isCustomLink(f)&&
(mxEvent.isTouchEvent(e)||!mxEvent.isPopupTrigger(e))&&b.customLinkClicked(f)&&(mxUtils.clearSelection(),mxEvent.consume(e))}),mxUtils.bind(this,function(b){null!=c||!this.lightboxClickEnabled||mxEvent.isTouchEvent(b)&&0!=this.toolbarItems.length||this.showLightbox()}))};
@@ -4154,8 +4153,8 @@ GraphViewer.initCss=function(){try{var b=document.createElement("style");b.type=
GraphViewer.cachedUrls={};GraphViewer.getUrl=function(b,c,e){if(null!=GraphViewer.cachedUrls[b])c(GraphViewer.cachedUrls[b]);else{var f=null!=navigator.userAgent&&0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;f.open("GET",b);f.onload=function(){c(null!=f.getText?f.getText():f.responseText)};f.onerror=e;f.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0;
(function(){var b=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(b){return window.setTimeout(b,20)},c=function(e,f){function n(){this.q=[];this.add=function(b){this.q.push(b)};var b,c;this.call=function(){b=0;for(c=this.q.length;b<c;b++)this.q[b].call()}}function l(b,c){return b.currentStyle?b.currentStyle[c]:window.getComputedStyle?window.getComputedStyle(b,null).getPropertyValue(c):b.style[c]}function q(c,d){if(!c.resizedAttached)c.resizedAttached=
new n,c.resizedAttached.add(d);else if(c.resizedAttached){c.resizedAttached.add(d);return}c.resizeSensor=document.createElement("div");c.resizeSensor.className="resize-sensor";c.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";c.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>';
-c.appendChild(c.resizeSensor);"static"==l(c,"position")&&(c.style.position="relative");var e=c.resizeSensor.childNodes[0],f=e.childNodes[0],g=c.resizeSensor.childNodes[1],k=function(){f.style.width="100000px";f.style.height="100000px";e.scrollLeft=1E5;e.scrollTop=1E5;g.scrollLeft=1E5;g.scrollTop=1E5};k();var m=!1,p=function(){c.resizedAttached&&(m&&(c.resizedAttached.call(),m=!1),b(p))};b(p);var q,u,O,B,G=function(){if((O=c.offsetWidth)!=q||(B=c.offsetHeight)!=u)m=!0,q=O,u=B;k()},H=function(b,c,d){b.attachEvent?
-b.attachEvent("on"+c,d):b.addEventListener(c,d)};H(e,"scroll",G);H(g,"scroll",G)}var d=function(){GraphViewer.resizeSensorEnabled&&f()},k=Object.prototype.toString.call(e),g="[object Array]"===k||"[object NodeList]"===k||"[object HTMLCollection]"===k||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(g)for(var k=0,p=e.length;k<p;k++)q(e[k],d);else q(e,d);this.detach=function(){if(g)for(var b=0,d=e.length;b<d;b++)c.detach(e[b]);else c.detach(e)}};
+c.appendChild(c.resizeSensor);"static"==l(c,"position")&&(c.style.position="relative");var e=c.resizeSensor.childNodes[0],f=e.childNodes[0],g=c.resizeSensor.childNodes[1],k=function(){f.style.width="100000px";f.style.height="100000px";e.scrollLeft=1E5;e.scrollTop=1E5;g.scrollLeft=1E5;g.scrollTop=1E5};k();var m=!1,p=function(){c.resizedAttached&&(m&&(c.resizedAttached.call(),m=!1),b(p))};b(p);var q,u,O,B,E=function(){if((O=c.offsetWidth)!=q||(B=c.offsetHeight)!=u)m=!0,q=O,u=B;k()},H=function(b,c,d){b.attachEvent?
+b.attachEvent("on"+c,d):b.addEventListener(c,d)};H(e,"scroll",E);H(g,"scroll",E)}var d=function(){GraphViewer.resizeSensorEnabled&&f()},k=Object.prototype.toString.call(e),g="[object Array]"===k||"[object NodeList]"===k||"[object HTMLCollection]"===k||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(g)for(var k=0,p=e.length;k<p;k++)q(e[k],d);else q(e,d);this.detach=function(){if(g)for(var b=0,d=e.length;b<d;b++)c.detach(e[b]);else c.detach(e)}};
c.detach=function(b){b.resizeSensor&&(b.removeChild(b.resizeSensor),delete b.resizeSensor,delete b.resizedAttached)};window.ResizeSensor=c})();
function mxBpmnShape(a,d,e,b){mxShape.call(this);this.bounds=a;this.fill=d;this.stroke=e;this.strokewidth=null!=b?b:1}mxUtils.extend(mxBpmnShape,mxShape);
mxBpmnShape.prototype.customProperties=[{name:"symbol",dispName:"Event",type:"enum",defVal:"general",enumList:[{val:"general",dispName:"General"},{val:"message",dispName:"Message"},{val:"timer",dispName:"Timer"},{val:"escalation",dispName:"Escalation"},{val:"conditional",dispName:"Conditional"},{val:"link",dispName:"Link"},{val:"error",dispName:"Error"},{val:"cancel",dispName:"Cancel"},{val:"compensation",dispName:"Compensation"},{val:"signal",dispName:"Signal"},{val:"multiple",dispName:"Multiple"},
diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js
index 00cc64c3..8ccb6bd9 100644
--- a/src/main/webapp/js/viewer.min.js
+++ b/src/main/webapp/js/viewer.min.js
@@ -202,7 +202,7 @@ a),DRAWIO_GITLAB_URL=a);a=urlParams["gitlab-id"];null!=a&&(DRAWIO_GITLAB_ID=a);w
if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==urlParams.local||"1"==urlParams.lockdown)urlParams.picker="0",urlParams.gapi="0",urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0";
"se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1");
"embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);window.urlParams=window.urlParams||{};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";
-window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"16.4.5",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images";window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"16.4.7",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2<navigator.maxTouchPoints,IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&
0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==
@@ -825,8 +825,8 @@ mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var a=this.vertexArra
g,d=d/f*g,e=e/f*g,this.dispX[b]+=d,this.dispY[b]+=e,this.dispX[c]-=d,this.dispY[c]-=e)}}};mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)};function mxCircleLayout(a,b){mxGraphLayout.call(this,a);this.radius=null!=b?b:100}mxCircleLayout.prototype=new mxGraphLayout;mxCircleLayout.prototype.constructor=mxCircleLayout;mxCircleLayout.prototype.radius=null;mxCircleLayout.prototype.moveCircle=!1;
mxCircleLayout.prototype.x0=0;mxCircleLayout.prototype.y0=0;mxCircleLayout.prototype.resetEdges=!0;mxCircleLayout.prototype.disableEdgeStyle=!0;
mxCircleLayout.prototype.execute=function(a){var b=this.graph.getModel();b.beginUpdate();try{for(var c=0,d=null,e=null,f=[],g=b.getChildCount(a),k=0;k<g;k++){var l=b.getChildAt(a,k);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{f.push(l);var m=this.getVertexBounds(l),d=null==d?m.y:Math.min(d,m.y),e=null==e?m.x:Math.min(e,m.x),c=Math.max(c,Math.max(m.width,m.height))}}var n=this.getRadius(f.length,
-c);this.moveCircle&&(e=this.x0,d=this.y0);this.circle(f,n,e,d)}finally{b.endUpdate()}};mxCircleLayout.prototype.getRadius=function(a,b){return Math.max(a*b/Math.PI,this.radius)};mxCircleLayout.prototype.circle=function(a,b,c,d){for(var e=a.length,f=2*Math.PI/e,g=0;g<e;g++)this.isVertexMovable(a[g])&&this.setVertexLocation(a[g],Math.round(c+b+b*Math.sin(g*f)),Math.round(d+b+b*Math.cos(g*f)))};function mxParallelEdgeLayout(a){mxGraphLayout.call(this,a)}mxParallelEdgeLayout.prototype=new mxGraphLayout;
-mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout;mxParallelEdgeLayout.prototype.spacing=20;mxParallelEdgeLayout.prototype.checkOverlap=!1;mxParallelEdgeLayout.prototype.execute=function(a,b){var c=this.findParallels(a,b);this.graph.model.beginUpdate();try{for(var d in c){var e=c[d];1<e.length&&this.layout(e)}}finally{this.graph.model.endUpdate()}};
+c);this.moveCircle&&(e=this.x0,d=this.y0);this.circle(f,n,e,d)}finally{b.endUpdate()}};mxCircleLayout.prototype.getRadius=function(a,b){return Math.max(a*b/Math.PI,this.radius)};mxCircleLayout.prototype.circle=function(a,b,c,d){for(var e=a.length,f=2*Math.PI/e,g=0;g<e;g++)this.isVertexMovable(a[g])&&this.setVertexLocation(a[g],Math.round(c+b+b*Math.cos(g*f-Math.PI/2)),Math.round(d+b+b*Math.sin(g*f-Math.PI/2)))};function mxParallelEdgeLayout(a){mxGraphLayout.call(this,a)}
+mxParallelEdgeLayout.prototype=new mxGraphLayout;mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout;mxParallelEdgeLayout.prototype.spacing=20;mxParallelEdgeLayout.prototype.checkOverlap=!1;mxParallelEdgeLayout.prototype.execute=function(a,b){var c=this.findParallels(a,b);this.graph.model.beginUpdate();try{for(var d in c){var e=c[d];1<e.length&&this.layout(e)}}finally{this.graph.model.endUpdate()}};
mxParallelEdgeLayout.prototype.findParallels=function(a,b){var c=[],d=mxUtils.bind(this,function(a){if(!this.isEdgeIgnored(a)){var b=this.getEdgeId(a);null!=b&&(null==c[b]&&(c[b]=[]),c[b].push(a))}});if(null!=b)for(var e=0;e<b.length;e++)d(b[e]);else for(var f=this.graph.getModel(),g=f.getChildCount(a),e=0;e<g;e++)d(f.getChildAt(a,e));return c};
mxParallelEdgeLayout.prototype.getEdgeId=function(a){var b=this.graph.getView(),c=b.getVisibleTerminal(a,!0),b=b.getVisibleTerminal(a,!1),d="";if(null!=c&&null!=b){c=mxObjectIdentity.get(c);b=mxObjectIdentity.get(b);if(this.checkOverlap&&(a=this.graph.view.getState(a),null!=a&&null!=a.absolutePoints)){for(var d=[],e=0;e<a.absolutePoints.length;e++){var f=a.absolutePoints[e];null!=f&&d.push(f.x,f.y)}d=d.join(",")}return(c>b?b+"-"+c:c+"-"+b)+d}return null};
mxParallelEdgeLayout.prototype.layout=function(a){var b=a[0],c=this.graph.getView(),d=this.graph.getModel(),e=d.getGeometry(c.getVisibleTerminal(b,!0)),d=d.getGeometry(c.getVisibleTerminal(b,!1));if(e==d)for(var b=e.x+e.width+this.spacing,c=e.y+e.height/2,f=0;f<a.length;f++)this.route(a[f],b,c),b+=this.spacing;else if(null!=e&&null!=d){var b=e.x+e.width/2,c=e.y+e.height/2,f=d.x+d.width/2-b,g=d.y+d.height/2-c,d=Math.sqrt(f*f+g*g);if(0<d)for(e=g*this.spacing/d,d=f*this.spacing/d,b=b+f/2+e*(a.length-
@@ -2080,10 +2080,10 @@ f.length;d++)null!=b.view.getState(f[d])&&n.push(f[d]);b.setSelectionCells(n)}};
OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(b){this.cancel(!0);mxUtils.alert(b)};OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(b){null!=this.done&&this.done(null!=b?b:!0)};
function Dialog(b,c,e,f,n,l,q,d,k,g,p){var m=k?57:0,u=e,v=f,t=k?0:64,z=Editor.inlineFullscreen||null==b.embedViewport?mxUtils.getDocumentSize():mxUtils.clone(b.embedViewport);null==b.embedViewport&&null!=window.innerHeight&&(z.height=window.innerHeight);var y=z.height,I=Math.max(1,Math.round((z.width-e-t)/2)),D=Math.max(1,Math.round((y-f-b.footerHeight)/3));c.style.maxHeight="100%";e=null!=document.body?Math.min(e,document.body.scrollWidth-t):e;f=Math.min(f,y-t);0<b.dialogs.length&&(this.zIndex+=
2*b.dialogs.length);null==this.bg&&(this.bg=b.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=y+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));z=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=z.x+"px";this.bg.style.top=z.y+"px";I+=z.x;D+=z.y;Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px",
-D+=b.embedViewport.y,I+=b.embedViewport.x);n&&document.body.appendChild(this.bg);var F=b.createDiv(k?"geTransDialog":"geDialog");n=this.getPosition(I,D,e,f);I=n.x;D=n.y;F.style.width=e+"px";F.style.height=f+"px";F.style.left=I+"px";F.style.top=D+"px";F.style.zIndex=this.zIndex;F.appendChild(c);document.body.appendChild(F);!d&&c.clientHeight>F.clientHeight-t&&(c.style.overflowY="auto");c.style.overflowX="hidden";if(l&&(l=document.createElement("img"),l.setAttribute("src",Dialog.prototype.closeImage),
-l.setAttribute("title",mxResources.get("close")),l.className="geDialogClose",l.style.top=D+14+"px",l.style.left=I+e+38-m+"px",l.style.zIndex=this.zIndex,mxEvent.addListener(l,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(l),this.dialogImg=l,!p)){var E=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(b){E=!0}),null,mxUtils.bind(this,function(d){E&&(b.hideDialog(!0),E=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var k=g();
-null!=k&&(u=e=k.w,v=f=k.h)}k=mxUtils.getDocumentSize();y=k.height;this.bg.style.height=y+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");I=Math.max(1,Math.round((k.width-e-t)/2));D=Math.max(1,Math.round((y-f-b.footerHeight)/3));e=null!=document.body?Math.min(u,document.body.scrollWidth-t):u;f=Math.min(v,y-t);k=this.getPosition(I,D,e,f);I=k.x;D=k.y;F.style.left=I+"px";F.style.top=D+"px";F.style.width=e+"px";F.style.height=f+"px";!d&&
-c.clientHeight>F.clientHeight-t&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=D+14+"px",this.dialogImg.style.left=I+e+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=F;b.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
+D+=b.embedViewport.y,I+=b.embedViewport.x);n&&document.body.appendChild(this.bg);var G=b.createDiv(k?"geTransDialog":"geDialog");n=this.getPosition(I,D,e,f);I=n.x;D=n.y;G.style.width=e+"px";G.style.height=f+"px";G.style.left=I+"px";G.style.top=D+"px";G.style.zIndex=this.zIndex;G.appendChild(c);document.body.appendChild(G);!d&&c.clientHeight>G.clientHeight-t&&(c.style.overflowY="auto");c.style.overflowX="hidden";if(l&&(l=document.createElement("img"),l.setAttribute("src",Dialog.prototype.closeImage),
+l.setAttribute("title",mxResources.get("close")),l.className="geDialogClose",l.style.top=D+14+"px",l.style.left=I+e+38-m+"px",l.style.zIndex=this.zIndex,mxEvent.addListener(l,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(l),this.dialogImg=l,!p)){var F=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(b){F=!0}),null,mxUtils.bind(this,function(d){F&&(b.hideDialog(!0),F=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=g){var k=g();
+null!=k&&(u=e=k.w,v=f=k.h)}k=mxUtils.getDocumentSize();y=k.height;this.bg.style.height=y+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=mxUtils.getDocumentSize().height+"px");I=Math.max(1,Math.round((k.width-e-t)/2));D=Math.max(1,Math.round((y-f-b.footerHeight)/3));e=null!=document.body?Math.min(u,document.body.scrollWidth-t):u;f=Math.min(v,y-t);k=this.getPosition(I,D,e,f);I=k.x;D=k.y;G.style.left=I+"px";G.style.top=D+"px";G.style.width=e+"px";G.style.height=f+"px";!d&&
+c.clientHeight>G.clientHeight-t&&(c.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=D+14+"px",this.dialogImg.style.left=I+e+38-m+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=q;this.container=G;b.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2;
Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+
"/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png";
Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+
@@ -2113,9 +2113,9 @@ e.height==g.format.height?(d.value=g.key,l.setAttribute("checked","checked"),l.d
d.value="custom",k.style.display="none",p.style.display="")}}c="format-"+c;var l=document.createElement("input");l.setAttribute("name",c);l.setAttribute("type","radio");l.setAttribute("value","portrait");var q=document.createElement("input");q.setAttribute("name",c);q.setAttribute("type","radio");q.setAttribute("value","landscape");var d=document.createElement("select");d.style.marginBottom="8px";d.style.borderRadius="4px";d.style.border="1px solid rgb(160, 160, 160)";d.style.width="206px";var k=
document.createElement("div");k.style.marginLeft="4px";k.style.width="210px";k.style.height="24px";l.style.marginRight="6px";k.appendChild(l);c=document.createElement("span");c.style.maxWidth="100px";mxUtils.write(c,mxResources.get("portrait"));k.appendChild(c);q.style.marginLeft="10px";q.style.marginRight="6px";k.appendChild(q);var g=document.createElement("span");g.style.width="100px";mxUtils.write(g,mxResources.get("landscape"));k.appendChild(g);var p=document.createElement("div");p.style.marginLeft=
"4px";p.style.width="210px";p.style.height="24px";var m=document.createElement("input");m.setAttribute("size","7");m.style.textAlign="right";p.appendChild(m);mxUtils.write(p," in x ");var u=document.createElement("input");u.setAttribute("size","7");u.style.textAlign="right";p.appendChild(u);mxUtils.write(p," in");k.style.display="none";p.style.display="none";for(var v={},t=PageSetupDialog.getFormats(),z=0;z<t.length;z++){var y=t[z];v[y.key]=y;var I=document.createElement("option");I.setAttribute("value",
-y.key);mxUtils.write(I,y.title);d.appendChild(I)}var D=!1;n();b.appendChild(d);mxUtils.br(b);b.appendChild(k);b.appendChild(p);var F=e,E=function(b,c){var g=v[d.value];null!=g.format?(m.value=g.format.width/100,u.value=g.format.height/100,p.style.display="none",k.style.display=""):(k.style.display="none",p.style.display="");g=parseFloat(m.value);if(isNaN(g)||0>=g)m.value=e.width/100;g=parseFloat(u.value);if(isNaN(g)||0>=g)u.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
-Math.floor(100*parseFloat(u.value)));"custom"!=d.value&&q.checked&&(g=new mxRectangle(0,0,g.height,g.width));c&&D||g.width==F.width&&g.height==F.height||(F=g,null!=f&&f(F))};mxEvent.addListener(c,"click",function(b){l.checked=!0;E(b);mxEvent.consume(b)});mxEvent.addListener(g,"click",function(b){q.checked=!0;E(b);mxEvent.consume(b)});mxEvent.addListener(m,"blur",E);mxEvent.addListener(m,"click",E);mxEvent.addListener(u,"blur",E);mxEvent.addListener(u,"click",E);mxEvent.addListener(q,"change",E);mxEvent.addListener(l,
-"change",E);mxEvent.addListener(d,"change",function(b){D="custom"==d.value;E(b,!0)});E();return{set:function(b){e=b;n(null,null,!0)},get:function(){return F},widthInput:m,heightInput:u}};
+y.key);mxUtils.write(I,y.title);d.appendChild(I)}var D=!1;n();b.appendChild(d);mxUtils.br(b);b.appendChild(k);b.appendChild(p);var G=e,F=function(b,c){var g=v[d.value];null!=g.format?(m.value=g.format.width/100,u.value=g.format.height/100,p.style.display="none",k.style.display=""):(k.style.display="none",p.style.display="");g=parseFloat(m.value);if(isNaN(g)||0>=g)m.value=e.width/100;g=parseFloat(u.value);if(isNaN(g)||0>=g)u.value=e.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(m.value)),
+Math.floor(100*parseFloat(u.value)));"custom"!=d.value&&q.checked&&(g=new mxRectangle(0,0,g.height,g.width));c&&D||g.width==G.width&&g.height==G.height||(G=g,null!=f&&f(G))};mxEvent.addListener(c,"click",function(b){l.checked=!0;F(b);mxEvent.consume(b)});mxEvent.addListener(g,"click",function(b){q.checked=!0;F(b);mxEvent.consume(b)});mxEvent.addListener(m,"blur",F);mxEvent.addListener(m,"click",F);mxEvent.addListener(u,"blur",F);mxEvent.addListener(u,"click",F);mxEvent.addListener(q,"change",F);mxEvent.addListener(l,
+"change",F);mxEvent.addListener(d,"change",function(b){D="custom"==d.value;F(b,!0)});F();return{set:function(b){e=b;n(null,null,!0)},get:function(){return G},widthInput:m,heightInput:u}};
PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)",
format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)},
{key:"b4",title:"B4 (250 mm x 353 mm)",format:new mxRectangle(0,0,980,1390)},{key:"b5",title:"B5 (176 mm x 250 mm)",format:new mxRectangle(0,0,690,980)},{key:"16-9",title:"16:9 (1600 x 900)",format:new mxRectangle(0,0,900,1600)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1200,1920)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1200,1600)},{key:"custom",title:mxResources.get("custom"),format:null}]};
@@ -2152,17 +2152,17 @@ f.addListener(mxEvent.EDITING_STARTED,this.selectionStateListener);f.addListener
q="shape edgeStyle curved rounded elbow jumpStyle jumpSize comic sketch fillWeight hachureGap hachureAngle jiggle disableMultiStroke disableMultiStrokeFill fillStyle curveFitting simplification sketchStyle".split(" "),d="curved sourcePerimeterSpacing targetPerimeterSpacing startArrow startFill startSize endArrow endFill endSize".split(" ");this.setDefaultStyle=function(b){try{var d=f.getCellStyle(b,!1),c=[],g=[],k;for(k in d)c.push(d[k]),g.push(k);f.getModel().isEdge(b)?f.currentEdgeStyle={}:f.currentVertexStyle=
{};this.fireEvent(new mxEventObject("styleChanged","keys",g,"values",c,"cells",[b]))}catch(ba){this.handleError(ba)}};this.clearDefaultStyle=function(){f.currentEdgeStyle=mxUtils.clone(f.defaultEdgeStyle);f.currentVertexStyle=mxUtils.clone(f.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var k=["fontFamily","fontSource","fontSize","fontColor"];for(c=0;c<k.length;c++)0>mxUtils.indexOf(l,k[c])&&l.push(k[c]);var g="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),
p=[["startArrow","startFill","endArrow","endFill"],["startSize","endSize"],["sourcePerimeterSpacing","targetPerimeterSpacing"],["strokeColor","strokeWidth"],["fillColor","gradientColor","gradientDirection"],["opacity"],["html"]];for(c=0;c<p.length;c++)for(e=0;e<p[c].length;e++)l.push(p[c][e]);for(c=0;c<q.length;c++)0>mxUtils.indexOf(l,q[c])&&l.push(q[c]);var m=function(b,c,g,k,e,m,x){k=null!=k?k:f.currentVertexStyle;e=null!=e?e:f.currentEdgeStyle;m=null!=m?m:!0;g=null!=g?g:f.getModel();if(x){x=[];
-for(var u=0;u<b.length;u++)x=x.concat(g.getDescendants(b[u]));b=x}g.beginUpdate();try{for(u=0;u<b.length;u++){var t=b[u],v;if(c)v=["fontSize","fontFamily","fontColor"];else{var n=g.getStyle(t),y=null!=n?n.split(";"):[];v=l.slice();for(var q=0;q<y.length;q++){var z=y[q],P=z.indexOf("=");if(0<=P){var B=z.substring(0,P),ga=mxUtils.indexOf(v,B);0<=ga&&v.splice(ga,1);for(x=0;x<p.length;x++){var W=p[x];if(0<=mxUtils.indexOf(W,B))for(var M=0;M<W.length;M++){var I=mxUtils.indexOf(v,W[M]);0<=I&&v.splice(I,
-1)}}}}}var E=g.isEdge(t);x=E?e:k;for(var G=g.getStyle(t),q=0;q<v.length;q++){var B=v[q],V=x[B];null!=V&&"edgeStyle"!=B&&("shape"!=B||E)&&(!E||m||0>mxUtils.indexOf(d,B))&&(G=mxUtils.setStyle(G,B,V))}Editor.simpleLabels&&(G=mxUtils.setStyle(mxUtils.setStyle(G,"html",null),"whiteSpace",null));g.setStyle(t,G)}}finally{g.endUpdate()}return b};f.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});f.addListener("textInserted",function(b,d){m(d.getProperty("cells"),
+for(var u=0;u<b.length;u++)x=x.concat(g.getDescendants(b[u]));b=x}g.beginUpdate();try{for(u=0;u<b.length;u++){var t=b[u],v;if(c)v=["fontSize","fontFamily","fontColor"];else{var n=g.getStyle(t),y=null!=n?n.split(";"):[];v=l.slice();for(var q=0;q<y.length;q++){var z=y[q],R=z.indexOf("=");if(0<=R){var B=z.substring(0,R),fa=mxUtils.indexOf(v,B);0<=fa&&v.splice(fa,1);for(x=0;x<p.length;x++){var X=p[x];if(0<=mxUtils.indexOf(X,B))for(var M=0;M<X.length;M++){var I=mxUtils.indexOf(v,X[M]);0<=I&&v.splice(I,
+1)}}}}}var F=g.isEdge(t);x=F?e:k;for(var E=g.getStyle(t),q=0;q<v.length;q++){var B=v[q],W=x[B];null!=W&&"edgeStyle"!=B&&("shape"!=B||F)&&(!F||m||0>mxUtils.indexOf(d,B))&&(E=mxUtils.setStyle(E,B,W))}Editor.simpleLabels&&(E=mxUtils.setStyle(mxUtils.setStyle(E,"html",null),"whiteSpace",null));g.setStyle(t,E)}}finally{g.endUpdate()}return b};f.addListener("cellsInserted",function(b,d){m(d.getProperty("cells"),null,null,null,null,!0,!0)});f.addListener("textInserted",function(b,d){m(d.getProperty("cells"),
!0)});this.insertHandler=m;this.createDivs();this.createUi();this.refresh();var u=mxUtils.bind(this,function(b){null==b&&(b=window.event);return f.isEditing()||null!=b&&this.isSelectionAllowed(b)});this.container==document.body&&(this.menubarContainer.onselectstart=u,this.menubarContainer.onmousedown=u,this.toolbarContainer.onselectstart=u,this.toolbarContainer.onmousedown=u,this.diagramContainer.onselectstart=u,this.diagramContainer.onmousedown=u,this.sidebarContainer.onselectstart=u,this.sidebarContainer.onmousedown=
u,this.formatContainer.onselectstart=u,this.formatContainer.onmousedown=u,this.footerContainer.onselectstart=u,this.footerContainer.onmousedown=u,null!=this.tabContainer&&(this.tabContainer.onselectstart=u));!this.editor.chromeless||this.editor.editable?(c=function(b){if(null!=b){var d=mxEvent.getSource(b);if("A"==d.nodeName)for(;null!=d;){if("geHint"==d.className)return!0;d=d.parentNode}}return u(b)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,
"contextmenu",c):this.diagramContainer.oncontextmenu=c):f.panningHandler.usePopupTrigger=!1;f.init(this.diagramContainer);mxClient.IS_SVG&&null!=f.view.getDrawPane()&&(c=f.view.getDrawPane().ownerSVGElement,null!=c&&(c.style.position="absolute"));this.hoverIcons=this.createHoverIcons();if(null!=f.graphHandler){var v=f.graphHandler.start;f.graphHandler.start=function(){null!=H.hoverIcons&&H.hoverIcons.reset();v.apply(this,arguments)}}mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,
function(b){var d=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(b)-d.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(b)-d.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var t=!1,z=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent=function(b,d){return t||z.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(b){32!=b.which||f.isEditing()?
mxEvent.isConsumed(b)||27!=b.keyCode||this.hideDialog(null,!0):(t=!0,this.hoverIcons.reset(),f.container.style.cursor="move",f.isEditing()||mxEvent.getSource(b)!=f.container||mxEvent.consume(b))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(b){f.container.style.cursor="";t=!1});mxEvent.addListener(document,"keyup",this.keyupHandler);var y=f.panningHandler.isForcePanningEvent;f.panningHandler.isForcePanningEvent=function(b){return y.apply(this,
arguments)||t||mxEvent.isMouseEvent(b.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(b.getEvent()))&&(!mxEvent.isControlDown(b.getEvent())&&mxEvent.isRightMouseButton(b.getEvent())||mxEvent.isMiddleMouseButton(b.getEvent()))};var I=f.cellEditor.isStopEditingEvent;f.cellEditor.isStopEditingEvent=function(b){return I.apply(this,arguments)||13==b.keyCode&&(!mxClient.IS_SF&&mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b)||mxClient.IS_SF&&mxEvent.isShiftDown(b))};var D=f.isZoomWheelEvent;
-f.isZoomWheelEvent=function(){return t||D.apply(this,arguments)};var F=!1,E=null,O=null,B=null,G=mxUtils.bind(this,function(){if(null!=this.toolbar&&F!=f.cellEditor.isContentEditing()){for(var b=this.toolbar.container.firstChild,d=[];null!=b;){var c=b.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,b)&&(b.parentNode.removeChild(b),d.push(b));b=c}b=this.toolbar.fontMenu;c=this.toolbar.sizeMenu;if(null==B)this.toolbar.createTextToolbar();else{for(var g=0;g<B.length;g++)this.toolbar.container.appendChild(B[g]);
-this.toolbar.fontMenu=E;this.toolbar.sizeMenu=O}F=f.cellEditor.isContentEditing();E=b;O=c;B=d}}),H=this,L=f.cellEditor.startEditing;f.cellEditor.startEditing=function(){L.apply(this,arguments);G();if(f.cellEditor.isContentEditing()){var b=!1,d=function(){b||(b=!0,window.setTimeout(function(){var d=f.getSelectedEditingElement();null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=H.toolbar&&(H.toolbar.setFontName(Graph.stripQuotes(d.fontFamily)),H.toolbar.setFontSize(parseInt(d.fontSize))));b=!1},
-0))};mxEvent.addListener(f.cellEditor.textarea,"input",d);mxEvent.addListener(f.cellEditor.textarea,"touchend",d);mxEvent.addListener(f.cellEditor.textarea,"mouseup",d);mxEvent.addListener(f.cellEditor.textarea,"keyup",d);d()}};var N=f.cellEditor.stopEditing;f.cellEditor.stopEditing=function(b,d){try{N.apply(this,arguments),G()}catch(W){H.handleError(W)}};f.container.setAttribute("tabindex","0");f.container.style.cursor="default";if(window.self===window.top&&null!=f.container.parentNode)try{f.container.focus()}catch(P){}var M=
+f.isZoomWheelEvent=function(){return t||D.apply(this,arguments)};var G=!1,F=null,O=null,B=null,E=mxUtils.bind(this,function(){if(null!=this.toolbar&&G!=f.cellEditor.isContentEditing()){for(var b=this.toolbar.container.firstChild,d=[];null!=b;){var c=b.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,b)&&(b.parentNode.removeChild(b),d.push(b));b=c}b=this.toolbar.fontMenu;c=this.toolbar.sizeMenu;if(null==B)this.toolbar.createTextToolbar();else{for(var g=0;g<B.length;g++)this.toolbar.container.appendChild(B[g]);
+this.toolbar.fontMenu=F;this.toolbar.sizeMenu=O}G=f.cellEditor.isContentEditing();F=b;O=c;B=d}}),H=this,L=f.cellEditor.startEditing;f.cellEditor.startEditing=function(){L.apply(this,arguments);E();if(f.cellEditor.isContentEditing()){var b=!1,d=function(){b||(b=!0,window.setTimeout(function(){var d=f.getSelectedEditingElement();null!=d&&(d=mxUtils.getCurrentStyle(d),null!=d&&null!=H.toolbar&&(H.toolbar.setFontName(Graph.stripQuotes(d.fontFamily)),H.toolbar.setFontSize(parseInt(d.fontSize))));b=!1},
+0))};mxEvent.addListener(f.cellEditor.textarea,"input",d);mxEvent.addListener(f.cellEditor.textarea,"touchend",d);mxEvent.addListener(f.cellEditor.textarea,"mouseup",d);mxEvent.addListener(f.cellEditor.textarea,"keyup",d);d()}};var N=f.cellEditor.stopEditing;f.cellEditor.stopEditing=function(b,d){try{N.apply(this,arguments),E()}catch(X){H.handleError(X)}};f.container.setAttribute("tabindex","0");f.container.style.cursor="default";if(window.self===window.top&&null!=f.container.parentNode)try{f.container.focus()}catch(R){}var M=
f.fireMouseEvent;f.fireMouseEvent=function(b,d,c){b==mxEvent.MOUSE_DOWN&&this.container.focus();M.apply(this,arguments)};f.popupMenuHandler.autoExpand=!0;null!=this.menus&&(f.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(b,d,c){this.menus.createPopupMenu(b,d,c)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(b){f.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(b);this.getKeyHandler=function(){return keyHandler};f.connectionHandler.addListener(mxEvent.CONNECT,
function(b,d){var c=[d.getProperty("cell")];d.getProperty("terminalInserted")&&(c.push(d.getProperty("terminal")),window.setTimeout(function(){null!=H.hoverIcons&&H.hoverIcons.update(f.view.getState(c[c.length-1]))},0));m(c)});this.addListener("styleChanged",mxUtils.bind(this,function(b,d){var c=d.getProperty("cells"),e=!1,p=!1;if(0<c.length)for(var m=0;m<c.length&&(e=f.getModel().isVertex(c[m])||e,!(p=f.getModel().isEdge(c[m])||p)||!e);m++);else p=e=!0;for(var c=d.getProperty("keys"),x=d.getProperty("values"),
m=0;m<c.length;m++){var u=0<=mxUtils.indexOf(k,c[m]);if("strokeColor"!=c[m]||null!=x[m]&&"none"!=x[m])if(0<=mxUtils.indexOf(q,c[m]))p||0<=mxUtils.indexOf(g,c[m])?null==x[m]?delete f.currentEdgeStyle[c[m]]:f.currentEdgeStyle[c[m]]=x[m]:e&&0<=mxUtils.indexOf(l,c[m])&&(null==x[m]?delete f.currentVertexStyle[c[m]]:f.currentVertexStyle[c[m]]=x[m]);else if(0<=mxUtils.indexOf(l,c[m])){if(e||u)null==x[m]?delete f.currentVertexStyle[c[m]]:f.currentVertexStyle[c[m]]=x[m];if(p||u||0<=mxUtils.indexOf(g,c[m]))null==
@@ -2235,18 +2235,18 @@ Editor.layersImage,mxResources.get("layers")),I=b.getModel();I.addListener(mxEve
"editWindow");mxEvent.consume(d)}),Editor.editImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(m=0;m<this.lightboxToolbarActions.length;m++){var D=this.lightboxToolbarActions[m];D.elem=l(D.fn,D.icon,D.tooltip)}null!=n.refreshBtn&&l(mxUtils.bind(this,function(b){n.refreshBtn.url?window.location.href=n.refreshBtn.url:window.location.reload();mxEvent.consume(b)}),Editor.refreshImage,mxResources.get("refresh",null,"Refresh"));null!=n.fullscreenBtn&&window.self!==window.top&&l(mxUtils.bind(this,
function(d){n.fullscreenBtn.url?b.openLink(n.fullscreenBtn.url):b.openLink(window.location.href);mxEvent.consume(d)}),Editor.fullscreenImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(n.closeBtn&&window.self===window.top||b.lightbox&&("1"==urlParams.close||this.container!=document.body))&&l(mxUtils.bind(this,function(b){"1"==urlParams.close||n.closeBtn?window.close():(this.destroy(),mxEvent.consume(b))}),Editor.closeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display=
"none";b.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");b.container.appendChild(this.chromelessToolbar);mxEvent.addListener(b.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||(mxEvent.isShiftDown(b)||z(30),t())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(b){mxEvent.consume(b)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",
-mxUtils.bind(this,function(d){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(d)?t():z(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(b){mxEvent.isShiftDown(b)?t():z(100);mxEvent.consume(b)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||z(30)}));var F=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,c){this.startX=
-c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(b,d){},mouseUp:function(d,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<F&&Math.abs(this.scrollTop-b.container.scrollTop)<F&&Math.abs(this.startX-c.getGraphX())<F&&Math.abs(this.startY-c.getGraphY())<F&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?t():z(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var E=
-b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var b=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=b.x-(this.x0||0)*d.width;this.translate.y=b.y-(this.y0||0)*d.height}E.apply(this,arguments)};if(!b.isViewer()){var O=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),c=this.getPagePadding(),g=this.getPageSize(),k=Math.ceil(2*
+mxUtils.bind(this,function(d){b.tooltipHandler.resetTimer();b.tooltipHandler.hideTooltip();mxEvent.isShiftDown(d)?t():z(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(b){mxEvent.isShiftDown(b)?t():z(100);mxEvent.consume(b)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(b){mxEvent.isTouchEvent(b)||z(30)}));var G=b.getTolerance();b.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(d,c){this.startX=
+c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=b.container.scrollLeft;this.scrollTop=b.container.scrollTop},mouseMove:function(b,d){},mouseUp:function(d,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-b.container.scrollLeft)<G&&Math.abs(this.scrollTop-b.container.scrollTop)<G&&Math.abs(this.startX-c.getGraphX())<G&&Math.abs(this.startY-c.getGraphY())<G&&(0<parseFloat(e.chromelessToolbar.style.opacity||0)?t():z(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var F=
+b.view.validate;b.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var b=this.graph.getPagePadding(),d=this.graph.getPageSize();this.translate.x=b.x-(this.x0||0)*d.width;this.translate.y=b.y-(this.y0||0)*d.height}F.apply(this,arguments)};if(!b.isViewer()){var O=b.sizeDidChange;b.sizeDidChange=function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var d=this.getPageLayout(),c=this.getPagePadding(),g=this.getPageSize(),k=Math.ceil(2*
c.x+d.width*g.width),e=Math.ceil(2*c.y+d.height*g.height),f=b.minimumGraphSize;if(null==f||f.width!=k||f.height!=e)b.minimumGraphSize=new mxRectangle(0,0,k,e);k=c.x-d.x*g.width;c=c.y-d.y*g.height;this.autoTranslate||this.view.translate.x==k&&this.view.translate.y==c?O.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=d.x,this.view.y0=d.y,d=b.view.translate.x,g=b.view.translate.y,b.view.setTranslate(k,c),b.container.scrollLeft+=Math.round((k-d)*b.view.scale),b.container.scrollTop+=Math.round((c-
-g)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var B=b.view.getBackgroundPane(),G=b.view.getDrawPane();b.cumulativeZoomFactor=1;var H=null,L=null,N=null,M=null,P=null,V=function(d){null!=H&&window.clearTimeout(H);window.setTimeout(function(){if(!b.isMouseDown||M)H=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,
-"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),G.style.transformOrigin="",B.style.transformOrigin="",mxClient.IS_SF?(G.style.transform="scale(1)",B.style.transform="scale(1)",window.setTimeout(function(){G.style.transform="";B.style.transform=""},0)):(G.style.transform="",B.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var d=new mxPoint(b.container.scrollLeft,b.container.scrollTop),
-g=mxUtils.getOffset(b.container),k=b.view.scale,f=0,m=0;null!=L&&(f=b.container.offsetWidth/2-L.x+g.x,m=b.container.offsetHeight/2-L.y+g.y);b.zoom(b.cumulativeZoomFactor,null,20);b.view.scale!=k&&(null!=N&&(f+=d.x-N.x,m+=d.y-N.y),null!=c&&e.chromelessResize(!1,null,f*(b.cumulativeZoomFactor-1),m*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==f&&0==m||(b.container.scrollLeft-=f*(b.cumulativeZoomFactor-1),b.container.scrollTop-=m*(b.cumulativeZoomFactor-1)));null!=P&&G.setAttribute("filter",
-P);b.cumulativeZoomFactor=1;P=M=L=N=H=null}),null!=d?d:b.isFastZoomEnabled()?e.wheelZoomDelay:e.lazyZoomDelay)},0)};b.lazyZoom=function(d,c,g,k){k=null!=k?k:this.zoomFactor;(c=c||!b.scrollbars)&&(L=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));d?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=k,this.cumulativeZoomFactor=Math.round(this.view.scale*
-this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=k,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==P&&""!=G.getAttribute("filter")&&(P=G.getAttribute("filter"),
-G.removeAttribute("filter")),N=new mxPoint(b.container.scrollLeft,b.container.scrollTop),d=c||null==L?b.container.scrollLeft+b.container.clientWidth/2:L.x+b.container.scrollLeft-b.container.offsetLeft,k=c||null==L?b.container.scrollTop+b.container.clientHeight/2:L.y+b.container.scrollTop-b.container.offsetTop,G.style.transformOrigin=d+"px "+k+"px",G.style.transform="scale("+this.cumulativeZoomFactor+")",B.style.transformOrigin=d+"px "+k+"px",B.style.transform="scale("+this.cumulativeZoomFactor+")",
+g)*b.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var B=b.view.getBackgroundPane(),E=b.view.getDrawPane();b.cumulativeZoomFactor=1;var H=null,L=null,N=null,M=null,R=null,W=function(d){null!=H&&window.clearTimeout(H);window.setTimeout(function(){if(!b.isMouseDown||M)H=window.setTimeout(mxUtils.bind(this,function(){b.isFastZoomEnabled()&&(null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,
+"transform-origin",null),mxUtils.setPrefixedStyle(b.view.backgroundPageShape.node.style,"transform",null)),E.style.transformOrigin="",B.style.transformOrigin="",mxClient.IS_SF?(E.style.transform="scale(1)",B.style.transform="scale(1)",window.setTimeout(function(){E.style.transform="";B.style.transform=""},0)):(E.style.transform="",B.style.transform=""),b.view.getDecoratorPane().style.opacity="",b.view.getOverlayPane().style.opacity="");var d=new mxPoint(b.container.scrollLeft,b.container.scrollTop),
+g=mxUtils.getOffset(b.container),k=b.view.scale,f=0,m=0;null!=L&&(f=b.container.offsetWidth/2-L.x+g.x,m=b.container.offsetHeight/2-L.y+g.y);b.zoom(b.cumulativeZoomFactor,null,20);b.view.scale!=k&&(null!=N&&(f+=d.x-N.x,m+=d.y-N.y),null!=c&&e.chromelessResize(!1,null,f*(b.cumulativeZoomFactor-1),m*(b.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(b.container)||0==f&&0==m||(b.container.scrollLeft-=f*(b.cumulativeZoomFactor-1),b.container.scrollTop-=m*(b.cumulativeZoomFactor-1)));null!=R&&E.setAttribute("filter",
+R);b.cumulativeZoomFactor=1;R=M=L=N=H=null}),null!=d?d:b.isFastZoomEnabled()?e.wheelZoomDelay:e.lazyZoomDelay)},0)};b.lazyZoom=function(d,c,g,k){k=null!=k?k:this.zoomFactor;(c=c||!b.scrollbars)&&(L=new mxPoint(b.container.offsetLeft+b.container.clientWidth/2,b.container.offsetTop+b.container.clientHeight/2));d?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=k,this.cumulativeZoomFactor=Math.round(this.view.scale*
+this.cumulativeZoomFactor*100)/100/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=k,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*100)/100/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale*this.cumulativeZoomFactor,160))/this.view.scale;b.isFastZoomEnabled()&&(null==R&&""!=E.getAttribute("filter")&&(R=E.getAttribute("filter"),
+E.removeAttribute("filter")),N=new mxPoint(b.container.scrollLeft,b.container.scrollTop),d=c||null==L?b.container.scrollLeft+b.container.clientWidth/2:L.x+b.container.scrollLeft-b.container.offsetLeft,k=c||null==L?b.container.scrollTop+b.container.clientHeight/2:L.y+b.container.scrollTop-b.container.offsetTop,E.style.transformOrigin=d+"px "+k+"px",E.style.transform="scale("+this.cumulativeZoomFactor+")",B.style.transformOrigin=d+"px "+k+"px",B.style.transform="scale("+this.cumulativeZoomFactor+")",
null!=b.view.backgroundPageShape&&null!=b.view.backgroundPageShape.node&&(d=b.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(d.style,"transform-origin",(c||null==L?b.container.clientWidth/2+b.container.scrollLeft-d.offsetLeft+"px":L.x+b.container.scrollLeft-d.offsetLeft-b.container.offsetLeft+"px")+" "+(c||null==L?b.container.clientHeight/2+b.container.scrollTop-d.offsetTop+"px":L.y+b.container.scrollTop-d.offsetTop-b.container.offsetTop+"px")),mxUtils.setPrefixedStyle(d.style,"transform",
-"scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=e.hoverIcons&&e.hoverIcons.reset());V(g)};mxEvent.addGestureListeners(b.container,function(b){null!=H&&window.clearTimeout(H)},null,function(d){1!=b.cumulativeZoomFactor&&V(0)});mxEvent.addListener(b.container,"scroll",function(d){null==H||b.isMouseDown||1==b.cumulativeZoomFactor||V(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,c,g,k,e){b.fireEvent(new mxEventObject("wheel"));
+"scale("+this.cumulativeZoomFactor+")")),b.view.getDecoratorPane().style.opacity="0",b.view.getOverlayPane().style.opacity="0",null!=e.hoverIcons&&e.hoverIcons.reset());W(g)};mxEvent.addGestureListeners(b.container,function(b){null!=H&&window.clearTimeout(H)},null,function(d){1!=b.cumulativeZoomFactor&&W(0)});mxEvent.addListener(b.container,"scroll",function(d){null==H||b.isMouseDown||1==b.cumulativeZoomFactor||W(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(d,c,g,k,e){b.fireEvent(new mxEventObject("wheel"));
if(null==this.dialogs||0==this.dialogs.length)if(!b.scrollbars&&!g&&b.isScrollWheelEvent(d))g=b.view.getTranslate(),k=40/b.view.scale,mxEvent.isShiftDown(d)?b.view.setTranslate(g.x+(c?-k:k),g.y):b.view.setTranslate(g.x,g.y+(c?k:-k));else if(g||b.isZoomWheelEvent(d))for(var f=mxEvent.getSource(d);null!=f;){if(f==b.container)return b.tooltipHandler.hideTooltip(),L=null!=k&&null!=e?new mxPoint(k,e):new mxPoint(mxEvent.getClientX(d),mxEvent.getClientY(d)),M=g,g=b.zoomFactor,null!=d.deltaY&&40>Math.abs(d.deltaY)&&
Math.round(d.deltaY)!=d.deltaY&&(g=1+Math.abs(d.deltaY)/20*(g-1)),b.lazyZoom(c,null,null,g),mxEvent.consume(d),!1;f=f.parentNode}}),b.container);b.panningHandler.zoomGraph=function(d){b.cumulativeZoomFactor=d.scale;b.lazyZoom(0<d.scale,!0);mxEvent.consume(d)}};EditorUi.prototype.addChromelessToolbarItems=function(b){b(mxUtils.bind(this,function(b){this.actions.get("print").funct();mxEvent.consume(b)}),Editor.printImage,mxResources.get("print"))};
EditorUi.prototype.isPagesEnabled=function(){return this.editor.editable||"1"!=urlParams["hide-pages"]};EditorUi.prototype.createTemporaryGraph=function(b){return Graph.createOffscreenGraph(b)};EditorUi.prototype.addChromelessClickHandler=function(){var b=urlParams.highlight;null!=b&&0<b.length&&(b="#"+b);this.editor.graph.addClickHandler(b)};
@@ -2361,9 +2361,9 @@ l)*k+g.x)*e,(f.y*c+g.y)*e,k*e,c*e));for(l=1;l<f.height;l++)d.push(new mxRectangl
arguments)};var u=this.graphHandler.getCells;this.graphHandler.getCells=function(b){for(var d=u.apply(this,arguments),c=new mxDictionary,g=[],k=0;k<d.length;k++){var e=this.graph.isTableCell(b)&&this.graph.isTableCell(d[k])&&this.graph.isCellSelected(d[k])?this.graph.model.getParent(d[k]):this.graph.isTableRow(b)&&this.graph.isTableRow(d[k])&&this.graph.isCellSelected(d[k])?d[k]:this.graph.getCompositeParent(d[k]);null==e||c.get(e)||(c.put(e,!0),g.push(e))}return g};var v=this.graphHandler.start;
this.graphHandler.start=function(b,d,c,g){var k=!1;this.graph.isTableCell(b)&&(this.graph.isCellSelected(b)?k=!0:b=this.graph.model.getParent(b));k||this.graph.isTableRow(b)&&this.graph.isCellSelected(b)||(b=this.graph.getCompositeParent(b));v.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(b,d){d=this.graph.getCompositeParent(d);return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var t=new mxRubberband(this);this.getRubberband=function(){return t};
var z=(new Date).getTime(),y=0,I=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var b=this.currentState;I.apply(this,arguments);b!=this.currentState?(z=(new Date).getTime(),y=0):y=(new Date).getTime()-z};var D=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(b){return null!=this.currentState&&b.getState()==this.currentState&&2E3<y||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect",
-"1"))&&D.apply(this,arguments)};var F=this.isToggleEvent;this.isToggleEvent=function(b){return F.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b)};var E=t.isForceRubberbandEvent;t.isForceRubberbandEvent=function(b){return E.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==b.getState()&&mxEvent.isTouchEvent(b.getEvent())};var O=null;this.panningHandler.addListener(mxEvent.PAN_START,
+"1"))&&D.apply(this,arguments)};var G=this.isToggleEvent;this.isToggleEvent=function(b){return G.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b)};var F=t.isForceRubberbandEvent;t.isForceRubberbandEvent=function(b){return F.apply(this,arguments)||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(b.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==b.getState()&&mxEvent.isTouchEvent(b.getEvent())};var O=null;this.panningHandler.addListener(mxEvent.PAN_START,
mxUtils.bind(this,function(){this.isEnabled()&&(O=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=O)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(b){return mxEvent.isMouseEvent(b.getEvent())};var B=this.click;this.click=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);if(this.isEnabled()&&
-!d||b.isConsumed())return B.apply(this,arguments);var c=d?b.sourceState.cell:b.getCell();null!=c&&(c=this.getClickableLinkForCell(c),null!=c&&(this.isCustomLink(c)?this.customLinkClicked(c):this.openLink(c)));this.isEnabled()&&d&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};var G=this.tooltipHandler.show;this.tooltipHandler.show=function(){G.apply(this,arguments);if(null!=this.div)for(var b=this.div.getElementsByTagName("a"),d=0;d<b.length;d++)null!=
+!d||b.isConsumed())return B.apply(this,arguments);var c=d?b.sourceState.cell:b.getCell();null!=c&&(c=this.getClickableLinkForCell(c),null!=c&&(this.isCustomLink(c)?this.customLinkClicked(c):this.openLink(c)));this.isEnabled()&&d&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};var E=this.tooltipHandler.show;this.tooltipHandler.show=function(){E.apply(this,arguments);if(null!=this.div)for(var b=this.div.getElementsByTagName("a"),d=0;d<b.length;d++)null!=
b[d].getAttribute("href")&&null==b[d].getAttribute("target")&&b[d].setAttribute("target","_blank")};this.tooltipHandler.getStateForEvent=function(b){return b.sourceState};this.getCursorForMouseEvent=function(b){var d=null==b.state&&null!=b.sourceState&&this.isCellLocked(b.sourceState.cell);return this.getCursorForCell(d?b.sourceState.cell:b.getCell())};var H=this.getCursorForCell;this.getCursorForCell=function(b){if(!this.isEnabled()||this.isCellLocked(b)){if(null!=this.getClickableLinkForCell(b))return"pointer";
if(this.isCellLocked(b))return"default"}return H.apply(this,arguments)};this.selectRegion=function(b,d){var c=mxEvent.isAltDown(d)?b:null,c=this.getCells(b.x,b.y,b.width,b.height,null,null,c,function(b){return"1"==mxUtils.getValue(b.style,"locked","0")},!0);if(this.isToggleEvent(d))for(var g=0;g<c.length;g++)this.selectCellForEvent(c[g],d);else this.selectCellsForEvent(c,d);return c};var L=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(b,d,c){return this.graph.isCellSelected(b)?
!1:L.apply(this,arguments)};this.isCellLocked=function(b){for(;null!=b;){if("1"==mxUtils.getValue(this.getCurrentCellStyle(b),"locked","0"))return!0;b=this.model.getParent(b)}return!1};var N=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(b,d){if("mouseDown"==d.getProperty("eventName")){var c=d.getProperty("event").getState();N=null==c||this.isSelectionEmpty()||this.isCellSelected(c.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,
@@ -2453,10 +2453,10 @@ Graph.prototype.isCloneConnectSource=function(b){var c=null;null!=this.layoutMan
Graph.prototype.connectVertex=function(b,c,e,f,n,l,q,d){l=l?l:!1;if(b.geometry.relative&&this.model.isEdge(b.parent))return[];for(;b.geometry.relative&&this.model.isVertex(b.parent);)b=b.parent;var k=this.isCloneConnectSource(b),g=k?b:this.getCompositeParent(b),p=b.geometry.relative&&null!=b.parent.geometry?new mxPoint(b.parent.geometry.width*b.geometry.x,b.parent.geometry.height*b.geometry.y):new mxPoint(g.geometry.x,g.geometry.y);c==mxConstants.DIRECTION_NORTH?(p.x+=g.geometry.width/2,p.y-=e):c==
mxConstants.DIRECTION_SOUTH?(p.x+=g.geometry.width/2,p.y+=g.geometry.height+e):(p.x=c==mxConstants.DIRECTION_WEST?p.x-e:p.x+(g.geometry.width+e),p.y+=g.geometry.height/2);var m=this.view.getState(this.model.getParent(b));e=this.view.scale;var u=this.view.translate,g=u.x*e,u=u.y*e;null!=m&&this.model.isVertex(m.cell)&&(g=m.x,u=m.y);this.model.isVertex(b.parent)&&b.geometry.relative&&(p.x+=b.parent.geometry.x,p.y+=b.parent.geometry.y);l=l?null:(new mxRectangle(g+p.x*e,u+p.y*e)).grow(40*e);l=null!=l?
this.getCells(0,0,0,0,null,null,l,null,!0):null;var m=this.view.getState(b),v=null,t=null;if(null!=l){l=l.reverse();for(var z=0;z<l.length;z++)if(!this.isCellLocked(l[z])&&!this.model.isEdge(l[z])&&l[z]!=b)if(!this.model.isAncestor(b,l[z])&&this.isContainer(l[z])&&(null==v||l[z]==this.model.getParent(b)))v=l[z];else if(null==t&&this.isCellConnectable(l[z])&&!this.model.isAncestor(l[z],b)&&!this.isSwimlane(l[z])){var y=this.view.getState(l[z]);null==m||null==y||mxUtils.intersects(m,y)||(t=l[z])}}var I=
-!mxEvent.isShiftDown(f)||mxEvent.isControlDown(f)||n;I&&("1"!=urlParams.sketch||n)&&(c==mxConstants.DIRECTION_NORTH?p.y-=b.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=b.geometry.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-b.geometry.width/2:p.x+b.geometry.width/2);var D=[],F=t,t=v;n=mxUtils.bind(this,function(g){if(null==q||null!=g||null==t&&k){this.model.beginUpdate();try{if(null==F&&I){var e=this.getAbsoluteParent(null!=g?g:b),e=k?b:this.getCompositeParent(e);F=null!=g?g:this.duplicateCells([e],
-!1)[0];null!=g&&this.addCells([F],this.model.getParent(b),null,null,null,!0);var l=this.getCellGeometry(F);null!=l&&(null!=g&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?p.y-=l.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=l.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-l.width/2:p.x+l.width/2),l.x=p.x-l.width/2,l.y=p.y-l.height/2);null!=v?(this.addCells([F],v,null,null,null,!0),t=null):I&&!k&&this.addCells([F],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(f)&&
-mxEvent.isShiftDown(f)&&I||null==t&&k?null:this.insertEdge(this.model.getParent(b),null,"",b,F,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var u=null;for(g=b;null!=g.parent&&null!=g.geometry&&g.geometry.relative&&g.parent!=m.parent;)g=this.model.getParent(g);null!=g&&null!=g.parent&&g.parent==m.parent&&(u=g.parent.getIndex(g),this.model.add(g.parent,m,u))}null==t&&null!=F&&null!=b.parent&&k&&c==mxConstants.DIRECTION_WEST&&(u=b.parent.getIndex(b),this.model.add(b.parent,
-F,u));null!=m&&D.push(m);null==t&&null!=F&&D.push(F);null==F&&null!=m&&m.geometry.setTerminalPoint(p,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=d)d(D);else return D});if(null==q||null!=F||!I||null==t&&k)return n(F);q(g+p.x*e,u+p.y*e,n)};
+!mxEvent.isShiftDown(f)||mxEvent.isControlDown(f)||n;I&&("1"!=urlParams.sketch||n)&&(c==mxConstants.DIRECTION_NORTH?p.y-=b.geometry.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=b.geometry.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-b.geometry.width/2:p.x+b.geometry.width/2);var D=[],G=t,t=v;n=mxUtils.bind(this,function(g){if(null==q||null!=g||null==t&&k){this.model.beginUpdate();try{if(null==G&&I){var e=this.getAbsoluteParent(null!=g?g:b),e=k?b:this.getCompositeParent(e);G=null!=g?g:this.duplicateCells([e],
+!1)[0];null!=g&&this.addCells([G],this.model.getParent(b),null,null,null,!0);var l=this.getCellGeometry(G);null!=l&&(null!=g&&"1"==urlParams.sketch&&(c==mxConstants.DIRECTION_NORTH?p.y-=l.height/2:c==mxConstants.DIRECTION_SOUTH?p.y+=l.height/2:p.x=c==mxConstants.DIRECTION_WEST?p.x-l.width/2:p.x+l.width/2),l.x=p.x-l.width/2,l.y=p.y-l.height/2);null!=v?(this.addCells([G],v,null,null,null,!0),t=null):I&&!k&&this.addCells([G],this.getDefaultParent(),null,null,null,!0)}var m=mxEvent.isControlDown(f)&&
+mxEvent.isShiftDown(f)&&I||null==t&&k?null:this.insertEdge(this.model.getParent(b),null,"",b,G,this.createCurrentEdgeStyle());if(null!=m&&this.connectionHandler.insertBeforeSource){var u=null;for(g=b;null!=g.parent&&null!=g.geometry&&g.geometry.relative&&g.parent!=m.parent;)g=this.model.getParent(g);null!=g&&null!=g.parent&&g.parent==m.parent&&(u=g.parent.getIndex(g),this.model.add(g.parent,m,u))}null==t&&null!=G&&null!=b.parent&&k&&c==mxConstants.DIRECTION_WEST&&(u=b.parent.getIndex(b),this.model.add(b.parent,
+G,u));null!=m&&D.push(m);null==t&&null!=G&&D.push(G);null==G&&null!=m&&m.geometry.setTerminalPoint(p,!1);null!=m&&this.fireEvent(new mxEventObject("cellsInserted","cells",[m]))}finally{this.model.endUpdate()}}if(null!=d)d(D);else return D});if(null==q||null!=G||!I||null==t&&k)return n(G);q(g+p.x*e,u+p.y*e,n)};
Graph.prototype.getIndexableText=function(){var b=document.createElement("div"),c=[],e,f;for(f in this.model.cells)if(e=this.model.cells[f],this.model.isVertex(e)||this.model.isEdge(e))this.isHtmlLabel(e)?(b.innerHTML=this.sanitizeHtml(this.getLabel(e)),e=mxUtils.extractTextWithWhitespace([b])):e=this.getLabel(e),e=mxUtils.trim(e.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<e.length&&c.push(e);return c.join(" ")};
Graph.prototype.convertValueToString=function(b){var c=this.model.getValue(b);if(null!=c&&"object"==typeof c){var e=null;if(this.isReplacePlaceholders(b)&&null!=b.getAttribute("placeholder"))for(var c=b.getAttribute("placeholder"),f=b;null==e&&null!=f;)null!=f.value&&"object"==typeof f.value&&(e=f.hasAttribute(c)?null!=f.getAttribute(c)?f.getAttribute(c):"":null),f=this.model.getParent(f);else e=null,Graph.translateDiagram&&null!=Graph.diagramLanguage&&(e=c.getAttribute("label_"+Graph.diagramLanguage)),
null==e&&(e=c.getAttribute("label")||"");return e||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)};Graph.prototype.getLinksForState=function(b){return null!=b&&null!=b.text&&null!=b.text.node?b.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(b){return null!=b.value&&"object"==typeof b.value?(b=b.value.getAttribute("link"),null!=b&&"javascript:"===b.toLowerCase().substring(0,11)&&(b=b.substring(11)),b):null};
@@ -2540,12 +2540,12 @@ Graph.minTableColumnWidth&&(e=e.clone(),e.width=d+c.width+c.x+Graph.minTableColu
arguments);null!=g&&d&&this.graph.model.isEdge(g.cell)&&null!=g.style&&1!=g.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(g);return g};var e=mxShape.prototype.paint;mxShape.prototype.paint=function(){e.apply(this,arguments);if(null!=this.state&&null!=this.node&&this.state.view.graph.enableFlowAnimation&&this.state.view.graph.model.isEdge(this.state.cell)&&"1"==mxUtils.getValue(this.state.style,"flowAnimation","0")){var b=this.node.getElementsByTagName("path");if(1<b.length){"1"!=mxUtils.getValue(this.state.style,
mxConstants.STYLE_DASHED,"0")&&b[1].setAttribute("stroke-dasharray",8*this.state.view.scale);var d=this.state.view.graph.getFlowAnimationStyle();null!=d&&b[1].setAttribute("class",d.getAttribute("id"))}}};var f=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(b,d){return f.apply(this,arguments)||null!=b.routedPoints&&null!=d.routedPoints&&!mxUtils.equalPoints(d.routedPoints,b.routedPoints)};var n=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=
function(b){n.apply(this,arguments);this.graph.model.isEdge(b.cell)&&1!=b.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(b)};mxGraphView.prototype.updateLineJumps=function(b){var d=b.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=b.routedPoints,g=null;if(null!=d&&null!=this.validEdges&&"none"!==mxUtils.getValue(b.style,"jumpStyle","none")){for(var e=function(d,c,e){var k=new mxPoint(c,e);k.type=d;g.push(k);k=null!=b.routedPoints?b.routedPoints[g.length-1]:null;return null==k||k.type!=
-d||k.x!=c||k.y!=e},k=.5*this.scale,c=!1,g=[],f=0;f<d.length-1;f++){for(var l=d[f+1],p=d[f],n=[],q=d[f+2];f<d.length-2&&mxUtils.ptSegDistSq(p.x,p.y,q.x,q.y,l.x,l.y)<1*this.scale*this.scale;)l=q,f++,q=d[f+2];for(var c=e(0,p.x,p.y)||c,O=0;O<this.validEdges.length;O++){var B=this.validEdges[O],G=B.absolutePoints;if(null!=G&&mxUtils.intersects(b,B)&&"1"!=B.style.noJump)for(B=0;B<G.length-1;B++){for(var H=G[B+1],L=G[B],q=G[B+2];B<G.length-2&&mxUtils.ptSegDistSq(L.x,L.y,q.x,q.y,H.x,H.y)<1*this.scale*this.scale;)H=
-q,B++,q=G[B+2];q=mxUtils.intersection(p.x,p.y,l.x,l.y,L.x,L.y,H.x,H.y);if(null!=q&&(Math.abs(q.x-p.x)>k||Math.abs(q.y-p.y)>k)&&(Math.abs(q.x-l.x)>k||Math.abs(q.y-l.y)>k)&&(Math.abs(q.x-L.x)>k||Math.abs(q.y-L.y)>k)&&(Math.abs(q.x-H.x)>k||Math.abs(q.y-H.y)>k)){H=q.x-p.x;L=q.y-p.y;q={distSq:H*H+L*L,x:q.x,y:q.y};for(H=0;H<n.length;H++)if(n[H].distSq>q.distSq){n.splice(H,0,q);q=null;break}null==q||0!=n.length&&n[n.length-1].x===q.x&&n[n.length-1].y===q.y||n.push(q)}}}for(B=0;B<n.length;B++)c=e(1,n[B].x,
+d||k.x!=c||k.y!=e},k=.5*this.scale,c=!1,g=[],f=0;f<d.length-1;f++){for(var l=d[f+1],p=d[f],n=[],q=d[f+2];f<d.length-2&&mxUtils.ptSegDistSq(p.x,p.y,q.x,q.y,l.x,l.y)<1*this.scale*this.scale;)l=q,f++,q=d[f+2];for(var c=e(0,p.x,p.y)||c,O=0;O<this.validEdges.length;O++){var B=this.validEdges[O],E=B.absolutePoints;if(null!=E&&mxUtils.intersects(b,B)&&"1"!=B.style.noJump)for(B=0;B<E.length-1;B++){for(var H=E[B+1],L=E[B],q=E[B+2];B<E.length-2&&mxUtils.ptSegDistSq(L.x,L.y,q.x,q.y,H.x,H.y)<1*this.scale*this.scale;)H=
+q,B++,q=E[B+2];q=mxUtils.intersection(p.x,p.y,l.x,l.y,L.x,L.y,H.x,H.y);if(null!=q&&(Math.abs(q.x-p.x)>k||Math.abs(q.y-p.y)>k)&&(Math.abs(q.x-l.x)>k||Math.abs(q.y-l.y)>k)&&(Math.abs(q.x-L.x)>k||Math.abs(q.y-L.y)>k)&&(Math.abs(q.x-H.x)>k||Math.abs(q.y-H.y)>k)){H=q.x-p.x;L=q.y-p.y;q={distSq:H*H+L*L,x:q.x,y:q.y};for(H=0;H<n.length;H++)if(n[H].distSq>q.distSq){n.splice(H,0,q);q=null;break}null==q||0!=n.length&&n[n.length-1].x===q.x&&n[n.length-1].y===q.y||n.push(q)}}}for(B=0;B<n.length;B++)c=e(1,n[B].x,
n[B].y)||c}q=d[d.length-1];c=e(0,q.x,q.y)||c}b.routedPoints=g;return c}return!1};var l=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(b,d,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 g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,e=(parseInt(mxUtils.getValue(this.style,
-"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,k=mxUtils.getValue(this.style,"jumpStyle","none"),f=!0,m=null,p=null,u=[],n=null;b.begin();for(var q=0;q<this.state.routedPoints.length;q++){var B=this.state.routedPoints[q],G=new mxPoint(B.x/this.scale,B.y/this.scale);0==q?G=d[0]:q==this.state.routedPoints.length-1&&(G=d[d.length-1]);var H=!1;if(null!=m&&1==B.type){var L=this.state.routedPoints[q+1],B=L.x/this.scale-G.x,L=L.y/this.scale-G.y,B=B*B+L*L;null==n&&(n=new mxPoint(G.x-m.x,G.y-m.y),
-p=Math.sqrt(n.x*n.x+n.y*n.y),0<p?(n.x=n.x*e/p,n.y=n.y*e/p):n=null);B>e*e&&0<p&&(B=m.x-G.x,L=m.y-G.y,B=B*B+L*L,B>e*e&&(H=new mxPoint(G.x-n.x,G.y-n.y),B=new mxPoint(G.x+n.x,G.y+n.y),u.push(H),this.addPoints(b,u,c,g,!1,null,f),u=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,f=!1,"sharp"==k?(b.lineTo(H.x-n.y*u,H.y+n.x*u),b.lineTo(B.x-n.y*u,B.y+n.x*u),b.lineTo(B.x,B.y)):"line"==k?(b.moveTo(H.x+n.y*u,H.y-n.x*u),b.lineTo(H.x-n.y*u,H.y+n.x*u),b.moveTo(B.x-n.y*u,B.y+n.x*u),b.lineTo(B.x+n.y*
-u,B.y-n.x*u),b.moveTo(B.x,B.y)):"arc"==k?(u*=1.3,b.curveTo(H.x-n.y*u,H.y+n.x*u,B.x-n.y*u,B.y+n.x*u,B.x,B.y)):(b.moveTo(B.x,B.y),f=!0),u=[B],H=!0))}else n=null;H||(u.push(G),m=G)}this.addPoints(b,u,c,g,!1,null,f);b.stroke()}};var q=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(b,d,c,g){return null!=d&&"centerPerimeter"==d.style[mxConstants.STYLE_PERIMETER]?new mxPoint(d.getCenterX(),d.getCenterY()):q.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;
+"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,k=mxUtils.getValue(this.style,"jumpStyle","none"),f=!0,m=null,p=null,u=[],n=null;b.begin();for(var q=0;q<this.state.routedPoints.length;q++){var B=this.state.routedPoints[q],E=new mxPoint(B.x/this.scale,B.y/this.scale);0==q?E=d[0]:q==this.state.routedPoints.length-1&&(E=d[d.length-1]);var H=!1;if(null!=m&&1==B.type){var L=this.state.routedPoints[q+1],B=L.x/this.scale-E.x,L=L.y/this.scale-E.y,B=B*B+L*L;null==n&&(n=new mxPoint(E.x-m.x,E.y-m.y),
+p=Math.sqrt(n.x*n.x+n.y*n.y),0<p?(n.x=n.x*e/p,n.y=n.y*e/p):n=null);B>e*e&&0<p&&(B=m.x-E.x,L=m.y-E.y,B=B*B+L*L,B>e*e&&(H=new mxPoint(E.x-n.x,E.y-n.y),B=new mxPoint(E.x+n.x,E.y+n.y),u.push(H),this.addPoints(b,u,c,g,!1,null,f),u=0>Math.round(n.x)||0==Math.round(n.x)&&0>=Math.round(n.y)?1:-1,f=!1,"sharp"==k?(b.lineTo(H.x-n.y*u,H.y+n.x*u),b.lineTo(B.x-n.y*u,B.y+n.x*u),b.lineTo(B.x,B.y)):"line"==k?(b.moveTo(H.x+n.y*u,H.y-n.x*u),b.lineTo(H.x-n.y*u,H.y+n.x*u),b.moveTo(B.x-n.y*u,B.y+n.x*u),b.lineTo(B.x+n.y*
+u,B.y-n.x*u),b.moveTo(B.x,B.y)):"arc"==k?(u*=1.3,b.curveTo(H.x-n.y*u,H.y+n.x*u,B.x-n.y*u,B.y+n.x*u,B.x,B.y)):(b.moveTo(B.x,B.y),f=!0),u=[B],H=!0))}else n=null;H||(u.push(E),m=E)}this.addPoints(b,u,c,g,!1,null,f);b.stroke()}};var q=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(b,d,c,g){return null!=d&&"centerPerimeter"==d.style[mxConstants.STYLE_PERIMETER]?new mxPoint(d.getCenterX(),d.getCenterY()):q.apply(this,arguments)};var d=mxGraphView.prototype.updateFloatingTerminalPoint;
mxGraphView.prototype.updateFloatingTerminalPoint=function(b,c,g,e){if(null==c||null==b||"1"!=c.style.snapToPoint&&"1"!=b.style.snapToPoint)d.apply(this,arguments);else{c=this.getTerminalPort(b,c,e);var k=this.getNextPoint(b,g,e),f=this.graph.isOrthogonal(b),l=mxUtils.toRadians(Number(c.style[mxConstants.STYLE_ROTATION]||"0")),m=new mxPoint(c.getCenterX(),c.getCenterY());if(0!=l)var p=Math.cos(-l),u=Math.sin(-l),k=mxUtils.getRotatedPoint(k,p,u,m);p=parseFloat(b.style[mxConstants.STYLE_PERIMETER_SPACING]||
0);p+=parseFloat(b.style[e?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);k=this.getPerimeterPoint(c,k,0==l&&f,p);0!=l&&(p=Math.cos(l),u=Math.sin(l),k=mxUtils.getRotatedPoint(k,p,u,m));b.setAbsoluteTerminalPoint(this.snapToAnchorPoint(b,c,g,e,k),e)}};mxGraphView.prototype.snapToAnchorPoint=function(b,d,c,g,e){if(null!=d&&null!=b){b=this.graph.getAllConnectionConstraints(d);g=c=null;if(null!=b)for(var k=0;k<b.length;k++){var f=this.graph.getConnectionPoint(d,
b[k]);if(null!=f){var l=(f.x-e.x)*(f.x-e.x)+(f.y-e.y)*(f.y-e.y);if(null==g||l<g)c=f,g=l}}null!=c&&(e=c)}return e};var k=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(b,d,c){var g=k.apply(this,arguments);"1"==b.getAttribute("placeholders")&&null!=c.state&&(g=c.state.view.graph.replacePlaceholders(c.state.cell,g));return g};var g=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(b){if(null!=b.style&&"undefined"!==typeof pako){var d=
@@ -2578,7 +2578,7 @@ else{var e=this.getSelectionCell(),k=null,f=[],l=mxUtils.bind(this,function(d){i
if(null!=d&&1==b.length){var g=this.view.getState(d),e=this.view.getState(b[0]);if(null!=g&&null!=e&&"umlLifeline"==g.style.shape&&"umlLifeline"==e.style.shape&&(e=this.getCellGeometry(d),g=this.getCellGeometry(b[0]),null!=e&&null!=g)){c=e.clone();e=g.clone();e.x=c.x;e.y=c.y;c.x=g.x;c.y=g.y;this.model.beginUpdate();try{this.model.setGeometry(d,c),this.model.setGeometry(b[0],e)}finally{this.model.endUpdate()}c=!0}}return c};var p=Graph.prototype.moveCells;Graph.prototype.moveCells=function(b,d,c,g,
e,k,f){if(!g&&this.swapUmlLifelines(b,e))return b;f=null!=f?f:{};if(this.isTable(e)){for(var l=[],m=0;m<b.length;m++)this.isTable(b[m])?l=l.concat(this.model.getChildCells(b[m],!0).reverse()):l.push(b[m]);b=l}this.model.beginUpdate();try{l=[];for(m=0;m<b.length;m++)if(null!=e&&this.isTableRow(b[m])){var x=this.model.getParent(b[m]),u=this.getCellGeometry(b[m]);this.isTable(x)&&l.push(x);if(null!=x&&null!=u&&this.isTable(x)&&this.isTable(e)&&(g||x!=e)){if(!g){var n=this.getCellGeometry(x);null!=n&&
(n=n.clone(),n.height-=u.height,this.model.setGeometry(x,n))}n=this.getCellGeometry(e);null!=n&&(n=n.clone(),n.height+=u.height,this.model.setGeometry(e,n));var Z=this.model.getChildCells(e,!0);if(0<Z.length){b[m]=g?this.cloneCell(b[m]):b[m];var t=this.model.getChildCells(b[m],!0),v=this.model.getChildCells(Z[0],!0),y=v.length-t.length;if(0<y)for(var C=0;C<y;C++){var z=this.cloneCell(t[t.length-1]);null!=z&&(z.value="",this.model.add(b[m],z))}else if(0>y)for(C=0;C>y;C--)this.model.remove(t[t.length+
-C-1]);t=this.model.getChildCells(b[m],!0);for(C=0;C<v.length;C++){var J=this.getCellGeometry(v[C]),la=this.getCellGeometry(t[C]);null!=J&&null!=la&&(la=la.clone(),la.width=J.width,this.model.setGeometry(t[C],la))}}}}for(var q=p.apply(this,arguments),m=0;m<l.length;m++)!g&&this.model.contains(l[m])&&0==this.model.getChildCount(l[m])&&this.model.remove(l[m]);g&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(b)),q)}finally{this.model.endUpdate()}return q};var m=Graph.prototype.removeCells;
+C-1]);t=this.model.getChildCells(b[m],!0);for(C=0;C<v.length;C++){var J=this.getCellGeometry(v[C]),ka=this.getCellGeometry(t[C]);null!=J&&null!=ka&&(ka=ka.clone(),ka.width=J.width,this.model.setGeometry(t[C],ka))}}}}for(var q=p.apply(this,arguments),m=0;m<l.length;m++)!g&&this.model.contains(l[m])&&0==this.model.getChildCount(l[m])&&this.model.remove(l[m]);g&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(b)),q)}finally{this.model.endUpdate()}return q};var m=Graph.prototype.removeCells;
Graph.prototype.removeCells=function(b,d){var c=[];this.model.beginUpdate();try{for(var g=0;g<b.length;g++)if(this.isTableCell(b[g])){var e=this.model.getParent(b[g]),k=this.model.getParent(e);1==this.model.getChildCount(e)&&1==this.model.getChildCount(k)?0>mxUtils.indexOf(b,k)&&0>mxUtils.indexOf(c,k)&&c.push(k):this.labelChanged(b[g],"")}else{if(this.isTableRow(b[g])&&(k=this.model.getParent(b[g]),0>mxUtils.indexOf(b,k)&&0>mxUtils.indexOf(c,k))){for(var f=this.model.getChildCells(k,!0),l=0,p=0;p<
f.length;p++)0<=mxUtils.indexOf(b,f[p])&&l++;l==f.length&&c.push(k)}c.push(b[g])}c=m.apply(this,[c,d])}finally{this.model.endUpdate()}return c};Graph.prototype.updateCustomLinks=function(b,d,c){c=null!=c?c:new Graph;for(var g=0;g<d.length;g++)null!=d[g]&&c.updateCustomLinksForCell(b,d[g],c)};Graph.prototype.updateCustomLinksForCell=function(b,d){this.doUpdateCustomLinksForCell(b,d);for(var c=this.model.getChildCount(d),g=0;g<c;g++)this.updateCustomLinksForCell(b,this.model.getChildAt(d,g))};Graph.prototype.doUpdateCustomLinksForCell=
function(b,d){};Graph.prototype.getAllConnectionConstraints=function(b,d){if(null!=b){var c=mxUtils.getValue(b.style,"points",null);if(null!=c){var g=[];try{for(var e=JSON.parse(c),c=0;c<e.length;c++){var k=e[c];g.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(aa){}return g}if(null!=b.shape&&null!=b.shape.bounds){k=b.shape.direction;e=b.shape.bounds;c=b.shape.scale;g=e.width/c;e=e.height/c;if(k==mxConstants.DIRECTION_NORTH||
@@ -2622,9 +2622,9 @@ function(){var b=new mxImageExport;b.getLinkForCellState=mxUtils.bind(this,funct
!1,this.view.revalidate(),this.sizeDidChange();try{d=null!=d?d:1;c=null!=c?c:0;e=null!=e?e:!0;k=null!=k?k:!0;f=null!=f?f:!0;p=null!=p?p:!1;var y="page"==n?this.view.getBackgroundPageBounds():k&&null==v||g||"diagram"==n?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells()),C=this.view.scale;"diagram"==n&&null!=this.backgroundImage&&(y=mxRectangle.fromRectangle(y),y.add(new mxRectangle((this.view.translate.x+this.backgroundImage.x)*C,(this.view.translate.y+this.backgroundImage.y)*C,this.backgroundImage.width*
C,this.backgroundImage.height*C)));if(null==y)throw Error(mxResources.get("drawingEmpty"));var z=mxUtils.createXmlDocument(),J=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"svg"):z.createElement("svg");null!=b&&(null!=J.style?J.style.backgroundColor=b:J.setAttribute("style","background-color:"+b));null==z.createElementNS?(J.setAttribute("xmlns",mxConstants.NS_SVG),J.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):J.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);
b=d/C;var q=Math.max(1,Math.ceil(y.width*b)+2*c)+(p&&0==c?5:0),Z=Math.max(1,Math.ceil(y.height*b)+2*c)+(p&&0==c?5:0);J.setAttribute("version","1.1");J.setAttribute("width",q+"px");J.setAttribute("height",Z+"px");J.setAttribute("viewBox",(e?"-0.5 -0.5":"0 0")+" "+q+" "+Z);z.appendChild(J);var K=null!=z.createElementNS?z.createElementNS(mxConstants.NS_SVG,"g"):z.createElement("g");J.appendChild(K);var B=this.createSvgCanvas(K);B.foOffset=e?-.5:0;B.textOffset=e?-.5:0;B.imageOffset=e?-.5:0;B.translate(Math.floor(c/
-d-y.x/C),Math.floor(c/d-y.y/C));var M=document.createElement("div"),ca=B.getAlternateText;B.getAlternateText=function(b,d,c,g,e,k,f,l,m,p,x,u,n){if(null!=k&&0<this.state.fontSize)try{mxUtils.isNode(k)?k=k.innerText:(M.innerHTML=k,k=mxUtils.extractTextWithWhitespace(M.childNodes));for(var t=Math.ceil(2*g/this.state.fontSize),v=[],A=0,va=0;(0==t||A<t)&&va<k.length;){var Ua=k.charCodeAt(va);if(10==Ua||13==Ua){if(0<A)break}else v.push(k.charAt(va)),255>Ua&&A++;va++}v.length<k.length&&1<k.length-v.length&&
-(k=mxUtils.trim(v.join(""))+"...");return k}catch(Ja){return ca.apply(this,arguments)}else return ca.apply(this,arguments)};var X=this.backgroundImage;if(null!=X){d=C/d;var ka=this.view.translate,la=new mxRectangle((X.x+ka.x)*d,(X.y+ka.y)*d,X.width*d,X.height*d);mxUtils.intersects(y,la)&&B.image(X.x+ka.x,X.y+ka.y,X.width,X.height,X.src,!0)}B.scale(b);B.textEnabled=f;l=null!=l?l:this.createSvgImageExport();var G=l.drawCellState,P=l.getLinkForCellState;l.getLinkForCellState=function(b,d){var c=P.apply(this,
-arguments);return null==c||b.view.graph.isCustomLink(c)?null:c};l.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};l.drawCellState=function(b,d){for(var c=b.view.graph,g=null!=v?v.get(b.cell):c.isCellSelected(b.cell),e=c.model.getParent(b.cell);!(k&&null==v||g)&&null!=e;)g=null!=v?v.get(e):c.isCellSelected(e),e=c.model.getParent(e);(k&&null==v||g)&&G.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),B);this.updateSvgLinks(J,m,!0);
+d-y.x/C),Math.floor(c/d-y.y/C));var M=document.createElement("div"),ea=B.getAlternateText;B.getAlternateText=function(b,d,c,g,e,k,f,l,m,p,x,u,n){if(null!=k&&0<this.state.fontSize)try{mxUtils.isNode(k)?k=k.innerText:(M.innerHTML=k,k=mxUtils.extractTextWithWhitespace(M.childNodes));for(var t=Math.ceil(2*g/this.state.fontSize),v=[],A=0,va=0;(0==t||A<t)&&va<k.length;){var Ua=k.charCodeAt(va);if(10==Ua||13==Ua){if(0<A)break}else v.push(k.charAt(va)),255>Ua&&A++;va++}v.length<k.length&&1<k.length-v.length&&
+(k=mxUtils.trim(v.join(""))+"...");return k}catch(Ja){return ea.apply(this,arguments)}else return ea.apply(this,arguments)};var V=this.backgroundImage;if(null!=V){d=C/d;var ja=this.view.translate,ka=new mxRectangle((V.x+ja.x)*d,(V.y+ja.y)*d,V.width*d,V.height*d);mxUtils.intersects(y,ka)&&B.image(V.x+ja.x,V.y+ja.y,V.width,V.height,V.src,!0)}B.scale(b);B.textEnabled=f;l=null!=l?l:this.createSvgImageExport();var E=l.drawCellState,R=l.getLinkForCellState;l.getLinkForCellState=function(b,d){var c=R.apply(this,
+arguments);return null==c||b.view.graph.isCustomLink(c)?null:c};l.getLinkTargetForCellState=function(b,d){return b.view.graph.getLinkTargetForCell(b.cell)};l.drawCellState=function(b,d){for(var c=b.view.graph,g=null!=v?v.get(b.cell):c.isCellSelected(b.cell),e=c.model.getParent(b.cell);!(k&&null==v||g)&&null!=e;)g=null!=v?v.get(e):c.isCellSelected(e),e=c.model.getParent(e);(k&&null==v||g)&&E.apply(this,arguments)};l.drawState(this.getView().getState(this.model.root),B);this.updateSvgLinks(J,m,!0);
this.addForeignObjectWarning(B,J);return J}finally{t&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(b,d){if("0"!=urlParams["svg-warning"]&&0<d.getElementsByTagName("foreignObject").length){var c=b.createElement("switch"),g=b.createElement("g");g.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var e=b.createElement("a");e.setAttribute("transform","translate(0,-5)");null==e.setAttributeNS||
d.ownerDocument!=document&&null==document.documentMode?(e.setAttribute("xlink:href",Graph.foreignObjectWarningLink),e.setAttribute("target","_blank")):(e.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),e.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var k=b.createElement("text");k.setAttribute("text-anchor","middle");k.setAttribute("font-size","10px");k.setAttribute("x","50%");k.setAttribute("y","100%");mxUtils.write(k,Graph.foreignObjectWarningText);c.appendChild(g);
e.appendChild(k);c.appendChild(e);d.appendChild(c)}};Graph.prototype.updateSvgLinks=function(b,d,c){b=b.getElementsByTagName("a");for(var g=0;g<b.length;g++)if(null==b[g].getAttribute("target")){var e=b[g].getAttribute("href");null==e&&(e=b[g].getAttribute("xlink:href"));null!=e&&(null!=d&&/^https?:\/\//.test(e)?b[g].setAttribute("target",d):c&&this.isCustomLink(e)&&b[g].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(b){b=new mxSvgCanvas2D(b);b.pointerEvents=
@@ -2666,32 +2666,32 @@ this.restoreSelection(this.switchSelectionState);this.switchSelectionState=c;thi
mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(b.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=g.x*this.bounds.width;this.bounds.y+=g.y*this.bounds.height}this.textarea.style.width=Math.round((this.bounds.width-4)/c)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/c)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/c)+(this.textarea.offsetHeight-
this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*c);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/c)+(this.textarea.offsetWidth-this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*c);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+c+","+
c+")")}else this.textarea.style.height="",this.textarea.style.overflow="",D.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue=function(b,d){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var c=this.graph.getEditingValue(b.cell,d);"1"==mxUtils.getValue(b.style,"nl2Br","1")&&(c=c.replace(/\n/g,"<br/>"));return c=this.graph.sanitizeHtml(c,!0)};mxCellEditorGetCurrentValue=
-mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d="1"==mxUtils.getValue(b.style,"nl2Br","1")?d.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var F=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(b){this.codeViewMode&&this.toggleViewMode();
-F.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(Z){}};var E=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(b,d){this.graph.getModel().beginUpdate();try{E.apply(this,arguments),""==d&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)&&this.graph.isTransparentState(b)&&this.graph.removeCells([b.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=
+mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(b){if("0"==mxUtils.getValue(b.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var d=this.graph.sanitizeHtml(this.textarea.innerHTML,!0);return d="1"==mxUtils.getValue(b.style,"nl2Br","1")?d.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):d.replace(/\r\n/g,"").replace(/\n/g,"")};var G=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(b){this.codeViewMode&&this.toggleViewMode();
+G.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(Z){}};var F=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(b,d){this.graph.getModel().beginUpdate();try{F.apply(this,arguments),""==d&&this.graph.isCellDeletable(b.cell)&&0==this.graph.model.getChildCount(b.cell)&&this.graph.isTransparentState(b)&&this.graph.removeCells([b.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=
function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_FILLCOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getBorderColor=function(b){var d=mxUtils.getValue(b.style,mxConstants.STYLE_LABEL_BORDERCOLOR,
null);null!=d&&d!=mxConstants.NONE||!(null!=b.cell.geometry&&0<b.cell.geometry.width)||0==mxUtils.getValue(b.style,mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)||(d=mxUtils.getValue(b.style,mxConstants.STYLE_STROKECOLOR,null));d==mxConstants.NONE&&(d=null);return d};mxCellEditor.prototype.getMinimumSize=function(b){var d=this.graph.getView().scale;return new mxRectangle(0,0,null==b.text?30:b.text.size*d+20,30)};mxGraphHandlerIsValidDropTarget=mxGraphHandler.prototype.isValidDropTarget;
mxGraphHandler.prototype.isValidDropTarget=function(b,d){return mxGraphHandlerIsValidDropTarget.apply(this,arguments)&&!mxEvent.isAltDown(d.getEvent)};mxGraphView.prototype.formatUnitText=function(b){return b?c(b,this.unit):b};mxGraphHandler.prototype.updateHint=function(d){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=b(),this.graph.container.appendChild(this.hint));var g=this.graph.view.translate,e=this.graph.view.scale;d=this.roundLength((this.bounds.x+
this.currentDx)/e-g.x);g=this.roundLength((this.bounds.y+this.currentDy)/e-g.y);e=this.graph.view.unit;this.hint.innerHTML=c(d,e)+", "+c(g,e);this.hint.style.left=this.pBounds.x+this.currentDx+Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};var O=mxStackLayout.prototype.resizeCell;
mxStackLayout.prototype.resizeCell=function(b,d){O.apply(this,arguments);var c=this.graph.getCellStyle(b);if(null==c.childLayout){var g=this.graph.model.getParent(b),e=null!=g?this.graph.getCellGeometry(g):null;if(null!=e&&(c=this.graph.getCellStyle(g),"stackLayout"==c.childLayout)){var k=parseFloat(mxUtils.getValue(c,"stackBorder",mxStackLayout.prototype.border)),c="1"==mxUtils.getValue(c,"horizontalStack","1"),f=this.graph.getActualStartSize(g),e=e.clone();c?e.height=d.height+f.y+f.height+2*k:e.width=
-d.width+f.x+f.width+2*k;this.graph.model.setGeometry(g,e)}}};var B=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){c.get(b)||(c.put(b,!0),e.push(b))}for(var d=B.apply(this,arguments),c=new mxDictionary,g=this.graph.model,e=[],k=0;k<d.length;k++){var f=d[k];this.graph.isTableCell(f)?b(g.getParent(g.getParent(f))):this.graph.isTableRow(f)&&b(g.getParent(f));b(f)}return e};var G=mxVertexHandler.prototype.createParentHighlightShape;
-mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=G.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var H=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(b){var d=H.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var b=this.getHandlePadding();return new mxPoint(this.bounds.x+
+d.width+f.x+f.width+2*k;this.graph.model.setGeometry(g,e)}}};var B=mxSelectionCellsHandler.prototype.getHandledSelectionCells;mxSelectionCellsHandler.prototype.getHandledSelectionCells=function(){function b(b){c.get(b)||(c.put(b,!0),e.push(b))}for(var d=B.apply(this,arguments),c=new mxDictionary,g=this.graph.model,e=[],k=0;k<d.length;k++){var f=d[k];this.graph.isTableCell(f)?b(g.getParent(g.getParent(f))):this.graph.isTableRow(f)&&b(g.getParent(f));b(f)}return e};var E=mxVertexHandler.prototype.createParentHighlightShape;
+mxVertexHandler.prototype.createParentHighlightShape=function(b){var d=E.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};var H=mxEdgeHandler.prototype.createParentHighlightShape;mxEdgeHandler.prototype.createParentHighlightShape=function(b){var d=H.apply(this,arguments);d.stroke="#C0C0C0";d.strokewidth=1;return d};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var b=this.getHandlePadding();return new mxPoint(this.bounds.x+
this.bounds.width-this.rotationHandleVSpacing+b.x/2,this.bounds.y+this.rotationHandleVSpacing-b.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(b,d){return this.graph.isRecursiveVertexResize(b)&&!mxEvent.isControlDown(d.getEvent())};mxVertexHandler.prototype.isCenteredEvent=function(b,d){return!(!this.graph.isSwimlane(b.cell)&&0<this.graph.model.getChildCount(b.cell)&&!this.graph.isCellCollapsed(b.cell)&&"1"==mxUtils.getValue(b.style,"recursiveResize","1")&&null==mxUtils.getValue(b.style,
"childLayout",null))&&mxEvent.isControlDown(d.getEvent())||mxEvent.isMetaDown(d.getEvent())};var L=mxVertexHandler.prototype.isRotationHandleVisible;mxVertexHandler.prototype.isRotationHandleVisible=function(){return L.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)&&!this.graph.isTable(this.state.cell)};mxVertexHandler.prototype.getSizerBounds=function(){return this.graph.isTableCell(this.state.cell)?this.graph.view.getState(this.graph.model.getParent(this.graph.model.getParent(this.state.cell))):
this.bounds};var N=mxVertexHandler.prototype.isParentHighlightVisible;mxVertexHandler.prototype.isParentHighlightVisible=function(){return N.apply(this,arguments)&&!this.graph.isTableCell(this.state.cell)&&!this.graph.isTableRow(this.state.cell)};var M=mxVertexHandler.prototype.isCustomHandleVisible;mxVertexHandler.prototype.isCustomHandleVisible=function(b){return b.tableHandle||M.apply(this,arguments)&&(!this.graph.isTable(this.state.cell)||this.graph.isCellSelected(this.state.cell))};mxVertexHandler.prototype.getSelectionBorderInset=
-function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var P=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return P.apply(this,arguments).grow(-this.getSelectionBorderInset())};var V=null,W=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==V&&(V=mxCellRenderer.defaultShapes.tableLine);var b=W.apply(this,arguments);
+function(){var b=0;this.graph.isTableRow(this.state.cell)?b=1:this.graph.isTableCell(this.state.cell)&&(b=2);return b};var R=mxVertexHandler.prototype.getSelectionBorderBounds;mxVertexHandler.prototype.getSelectionBorderBounds=function(){return R.apply(this,arguments).grow(-this.getSelectionBorderInset())};var W=null,X=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=function(){null==W&&(W=mxCellRenderer.defaultShapes.tableLine);var b=X.apply(this,arguments);
if(this.graph.isTable(this.state.cell)){var d=function(b,d,c){for(var g=[],e=0;e<b.length;e++){var f=b[e];g.push(null==f?null:new mxPoint((m+f.x+d)*k,(p+f.y+c)*k))}return g},c=this,g=this.graph,e=g.model,k=g.view.scale,f=this.state,l=this.selectionBorder,m=this.state.origin.x+g.view.translate.x,p=this.state.origin.y+g.view.translate.y;null==b&&(b=[]);var x=g.view.getCellStates(e.getChildCells(this.state.cell,!0));if(0<x.length){for(var u=e.getChildCells(x[0].cell,!0),n=g.getTableLines(this.state.cell,
-!1,!0),t=g.getTableLines(this.state.cell,!0,!1),e=0;e<x.length;e++)mxUtils.bind(this,function(e){var m=x[e],p=e<x.length-1?x[e+1]:null,p=null!=p?g.getCellGeometry(p.cell):null,u=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=t[e]?new V(t[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"row-resize",null,p);m.tableHandle=!0;var n=0;m.shape.node.parentNode.insertBefore(m.shape.node,m.shape.node.parentNode.firstChild);
-m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==n?mxConstants.NONE:l.stroke;if(this.shape.constructor==V)this.shape.line=d(t[e],0,n),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+n*k;this.shape.bounds.x=f.x+(e==x.length-1?0:b.x*k);this.shape.bounds.width=f.width-(e==x.length-1?0:b.width+b.x+k)}this.shape.redraw()}};var v=!1;m.setPosition=function(b,d,c){n=Math.max(Graph.minTableRowHeight-
+!1,!0),t=g.getTableLines(this.state.cell,!0,!1),e=0;e<x.length;e++)mxUtils.bind(this,function(e){var m=x[e],p=e<x.length-1?x[e+1]:null,p=null!=p?g.getCellGeometry(p.cell):null,u=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=t[e]?new W(t[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!1);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"row-resize",null,p);m.tableHandle=!0;var n=0;m.shape.node.parentNode.insertBefore(m.shape.node,m.shape.node.parentNode.firstChild);
+m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==n?mxConstants.NONE:l.stroke;if(this.shape.constructor==W)this.shape.line=d(t[e],0,n),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.height=1;this.shape.bounds.y=this.state.y+this.state.height+n*k;this.shape.bounds.x=f.x+(e==x.length-1?0:b.x*k);this.shape.bounds.width=f.width-(e==x.length-1?0:b.width+b.x+k)}this.shape.redraw()}};var v=!1;m.setPosition=function(b,d,c){n=Math.max(Graph.minTableRowHeight-
b.height,d.y-b.y-b.height);v=mxEvent.isShiftDown(c.getEvent());null!=u&&v&&(n=Math.min(n,u.height-Graph.minTableRowHeight))};m.execute=function(b){if(0!=n)g.setTableRowHeight(this.state.cell,n,!v);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}n=0};m.reset=function(){n=0};b.push(m)})(e);for(e=0;e<u.length;e++)mxUtils.bind(this,function(e){var m=g.view.getState(u[e]),p=g.getCellGeometry(u[e]),x=null!=p.alternateBounds?
-p.alternateBounds:p;null==m&&(m=new mxCellState(g.view,u[e],g.getCellStyle(u[e])),m.x=f.x+p.x*k,m.y=f.y+p.y*k,m.width=x.width*k,m.height=x.height*k,m.updateCachedBounds());var p=e<u.length-1?u[e+1]:null,p=null!=p?g.getCellGeometry(p):null,t=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=n[e]?new V(n[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"col-resize",null,p);m.tableHandle=!0;var v=0;m.shape.node.parentNode.insertBefore(m.shape.node,
-m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==v?mxConstants.NONE:l.stroke;if(this.shape.constructor==V)this.shape.line=d(n[e],v,0),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(x.width+v)*k;this.shape.bounds.y=f.y+(e==u.length-1?0:b.y*k);this.shape.bounds.height=f.height-(e==u.length-1?0:(b.height+b.y)*k)}this.shape.redraw()}};var y=!1;m.setPosition=function(b,
-d,c){v=Math.max(Graph.minTableColumnWidth-x.width,d.x-b.x-x.width);y=mxEvent.isShiftDown(c.getEvent());null==t||y||(v=Math.min(v,t.width-Graph.minTableColumnWidth))};m.execute=function(b){if(0!=v)g.setTableColumnWidth(this.state.cell,v,y);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}v=0};m.positionChanged=function(){};m.reset=function(){v=0};b.push(m)})(e)}}return null!=b?b.reverse():null};var ga=mxVertexHandler.prototype.setHandlesVisible;
-mxVertexHandler.prototype.setHandlesVisible=function(b){ga.apply(this,arguments);if(null!=this.moveHandles)for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].style.visibility=b?"":"hidden";if(null!=this.cornerHandles)for(d=0;d<this.cornerHandles.length;d++)this.cornerHandles[d].node.style.visibility=b?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var b=this.graph.model;if(null!=this.moveHandles){for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].parentNode.removeChild(this.moveHandles[d]);
+p.alternateBounds:p;null==m&&(m=new mxCellState(g.view,u[e],g.getCellStyle(u[e])),m.x=f.x+p.x*k,m.y=f.y+p.y*k,m.width=x.width*k,m.height=x.height*k,m.updateCachedBounds());var p=e<u.length-1?u[e+1]:null,p=null!=p?g.getCellGeometry(p):null,t=null!=p&&null!=p.alternateBounds?p.alternateBounds:p,p=null!=n[e]?new W(n[e],mxConstants.NONE,1):new mxLine(new mxRectangle,mxConstants.NONE,1,!0);p.isDashed=l.isDashed;p.svgStrokeTolerance++;m=new mxHandle(m,"col-resize",null,p);m.tableHandle=!0;var v=0;m.shape.node.parentNode.insertBefore(m.shape.node,
+m.shape.node.parentNode.firstChild);m.redraw=function(){if(null!=this.shape){this.shape.stroke=0==v?mxConstants.NONE:l.stroke;if(this.shape.constructor==W)this.shape.line=d(n[e],v,0),this.shape.updateBoundsFromLine();else{var b=g.getActualStartSize(f.cell,!0);this.shape.bounds.width=1;this.shape.bounds.x=this.state.x+(x.width+v)*k;this.shape.bounds.y=f.y+(e==u.length-1?0:b.y*k);this.shape.bounds.height=f.height-(e==u.length-1?0:(b.height+b.y)*k)}this.shape.redraw()}};var y=!1;m.setPosition=function(b,
+d,c){v=Math.max(Graph.minTableColumnWidth-x.width,d.x-b.x-x.width);y=mxEvent.isShiftDown(c.getEvent());null==t||y||(v=Math.min(v,t.width-Graph.minTableColumnWidth))};m.execute=function(b){if(0!=v)g.setTableColumnWidth(this.state.cell,v,y);else if(!c.blockDelayedSelection){var d=g.getCellAt(b.getGraphX(),b.getGraphY())||f.cell;g.graphHandler.selectCellForEvent(d,b)}v=0};m.positionChanged=function(){};m.reset=function(){v=0};b.push(m)})(e)}}return null!=b?b.reverse():null};var fa=mxVertexHandler.prototype.setHandlesVisible;
+mxVertexHandler.prototype.setHandlesVisible=function(b){fa.apply(this,arguments);if(null!=this.moveHandles)for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].style.visibility=b?"":"hidden";if(null!=this.cornerHandles)for(d=0;d<this.cornerHandles.length;d++)this.cornerHandles[d].node.style.visibility=b?"":"hidden"};mxVertexHandler.prototype.refreshMoveHandles=function(){var b=this.graph.model;if(null!=this.moveHandles){for(var d=0;d<this.moveHandles.length;d++)this.moveHandles[d].parentNode.removeChild(this.moveHandles[d]);
this.moveHandles=null}this.moveHandles=[];for(d=0;d<b.getChildCount(this.state.cell);d++)mxUtils.bind(this,function(d){if(null!=d&&b.isVertex(d.cell)){var c=mxUtils.createImage(Editor.rowMoveImage);c.style.position="absolute";c.style.cursor="pointer";c.style.width="7px";c.style.height="4px";c.style.padding="4px 2px 4px 2px";c.rowState=d;mxEvent.addGestureListeners(c,mxUtils.bind(this,function(b){this.graph.popupMenuHandler.hideMenu();this.graph.stopEditing(!1);!this.graph.isToggleEvent(b)&&this.graph.isCellSelected(d.cell)||
this.graph.selectCellForEvent(d.cell,b);mxEvent.isPopupTrigger(b)||(this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSelectionCells()),this.graph.graphHandler.cellWasClicked=!0,this.graph.isMouseTrigger=mxEvent.isMouseEvent(b),this.graph.isMouseDown=!0);mxEvent.consume(b)}),null,mxUtils.bind(this,function(b){mxEvent.isPopupTrigger(b)&&(this.graph.popupMenuHandler.popup(mxEvent.getClientX(b),mxEvent.getClientY(b),d.cell,b),mxEvent.consume(b))}));
-this.moveHandles.push(c);this.graph.container.appendChild(c)}})(this.graph.view.getState(b.getChildAt(this.state.cell,d)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var ea=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,
+this.moveHandles.push(c);this.graph.container.appendChild(c)}})(this.graph.view.getState(b.getChildAt(this.state.cell,d)))};mxVertexHandler.prototype.refresh=function(){if(null!=this.customHandles){for(var b=0;b<this.customHandles.length;b++)this.customHandles[b].destroy();this.customHandles=this.createCustomHandles()}this.graph.isTable(this.state.cell)&&this.refreshMoveHandles()};var da=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var b=new mxPoint(0,
0),d=this.tolerance,c=this.state.style.shape;null==mxCellRenderer.defaultShapes[c]&&mxStencilRegistry.getStencil(c);c=this.graph.isTable(this.state.cell)||this.graph.cellEditor.getEditingCell()==this.state.cell;if(!c&&null!=this.customHandles)for(var g=0;g<this.customHandles.length;g++)if(null!=this.customHandles[g].shape&&null!=this.customHandles[g].shape.bounds){var e=this.customHandles[g].shape.bounds,k=e.getCenterX(),f=e.getCenterY();if(Math.abs(this.state.x-k)<e.width/2||Math.abs(this.state.y-
-f)<e.height/2||Math.abs(this.state.x+this.state.width-k)<e.width/2||Math.abs(this.state.y+this.state.height-f)<e.height/2){c=!0;break}}c&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=ea.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));
+f)<e.height/2||Math.abs(this.state.x+this.state.width-k)<e.width/2||Math.abs(this.state.y+this.state.height-f)<e.height/2){c=!0;break}}c&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(d/=2,this.graph.isTable(this.state.cell)&&(d+=7),b.x=this.sizers[0].bounds.width+d,b.y=this.sizers[0].bounds.height+d):b=da.apply(this,arguments);return b};mxVertexHandler.prototype.updateHint=function(d){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));
if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"&deg;";else{d=this.state.view.scale;var g=this.state.view.unit;this.hint.innerHTML=c(this.roundLength(this.bounds.width/d),g)+" x "+c(this.roundLength(this.bounds.height/d),g)}d=mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==d&&(d=this.bounds);this.hint.style.left=d.x+Math.round((d.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=
d.y+d.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display="")};var ba=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(b,d){ba.apply(this,arguments);null!=this.linkHint&&"none"!=this.linkHint.style.display&&null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&(this.linkHint.style.display=
"none")};var x=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(b,d){x.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint=function(d,g){null==this.hint&&(this.hint=b(),this.state.view.graph.container.appendChild(this.hint));var e=this.graph.view.translate,k=this.graph.view.scale,f=this.roundLength(g.x/k-e.x),e=this.roundLength(g.y/k-e.y),k=this.graph.view.unit;this.hint.innerHTML=
@@ -2714,37 +2714,37 @@ this.graph.view.getState(l[c]),p=this.graph.getCellGeometry(l[c]);null!=m&&null!
var g=d.getX()+c.x,c=d.getY()+c.y,e=this.first.x-g,k=this.first.y-c,f=this.graph.tolerance;if(null!=this.div||Math.abs(e)>f||Math.abs(k)>f)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(g,c),this.isSpaceEvent(d)?(g=this.x+this.width,c=this.y+this.height,e=this.graph.view.scale,mxEvent.isAltDown(d.getEvent())||(this.width=this.graph.snap(this.width/e)*e,this.height=this.graph.snap(this.height/e)*e,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=
0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=g-this.width),this.y<this.first.y&&(this.y=c-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+"px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=
this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth=0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),
-this.secondDiv=null)),d.consume()}};var J=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);J.apply(this,arguments)};var X=(new Date).getTime(),ca=0,ka=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,c,g){ka.apply(this,arguments);c!=this.currentTerminalState?(X=(new Date).getTime(),ca=0):ca=(new Date).getTime()-X;this.currentTerminalState=
-c};var K=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<ca||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&K.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,c){d=null!=b&&0==b;var g=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
+this.secondDiv=null)),d.consume()}};var J=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);J.apply(this,arguments)};var ea=(new Date).getTime(),V=0,ja=mxEdgeHandler.prototype.updatePreviewState;mxEdgeHandler.prototype.updatePreviewState=function(b,d,c,g){ja.apply(this,arguments);c!=this.currentTerminalState?(ea=(new Date).getTime(),V=0):V=(new Date).getTime()-ea;this.currentTerminalState=
+c};var K=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(b){return null!=this.currentTerminalState&&b.getState()==this.currentTerminalState&&2E3<V||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&&K.apply(this,arguments)};mxEdgeHandler.prototype.createHandleShape=function(b,d,c){d=null!=b&&0==b;var g=this.state.getVisibleTerminalState(d);b=null!=b&&(0==b||b>=this.state.absolutePoints.length-
1||this.constructor==mxElbowEdgeHandler&&2==b)?this.graph.getConnectionConstraint(this.state,g,d):null;c=null!=(null!=b?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(d),b):null)?c?this.endFixedHandleImage:this.fixedHandleImage:null!=b&&null!=g?c?this.endTerminalHandleImage:this.terminalHandleImage:c?this.endHandleImage:this.handleImage;if(null!=c)return c=new mxImageShape(new mxRectangle(0,0,c.width,c.height),c.src),c.preserveImageAspect=!1,c;c=mxConstants.HANDLE_SIZE;this.preferHtml&&
---c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var na=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(b,d,c){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return na.apply(this,arguments)};var qa=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(b){if(null!=
-b&&1==b.length){var d=this.graph.getModel(),c=d.getParent(b[0]),g=this.graph.getCellGeometry(b[0]);if(d.isEdge(c)&&null!=g&&g.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return qa.apply(this,arguments)};var pa=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=pa.apply(this,arguments),d=[],c=0;c<b.length;c++)"1"!=mxUtils.getValue(b[c].style,
-"part","0")&&d.push(b[c]);return d};var ha=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),c=d.getParent(b.cell),g=this.graph.getCellGeometry(b.cell);return d.isEdge(c)&&null!=g&&g.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):ha.apply(this,arguments)};
-var sa=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(b,d){var c=this.graph.getModel(),g=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!c.isEdge(g)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&sa.apply(this,arguments)};mxVertexHandler.prototype.rotateClick=function(){var b=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),
+--c;return new mxRectangleShape(new mxRectangle(0,0,c,c),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var ma=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(b,d,c){this.handleImage=d==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle:d==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return ma.apply(this,arguments)};var pa=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(b){if(null!=
+b&&1==b.length){var d=this.graph.getModel(),c=d.getParent(b[0]),g=this.graph.getCellGeometry(b[0]);if(d.isEdge(c)&&null!=g&&g.relative&&(d=this.graph.view.getState(b[0]),null!=d&&2>d.width&&2>d.height&&null!=d.text&&null!=d.text.boundingBox))return mxRectangle.fromRectangle(d.text.boundingBox)}return pa.apply(this,arguments)};var oa=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var b=oa.apply(this,arguments),d=[],c=0;c<b.length;c++)"1"!=mxUtils.getValue(b[c].style,
+"part","0")&&d.push(b[c]);return d};var ga=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(b){var d=this.graph.getModel(),c=d.getParent(b.cell),g=this.graph.getCellGeometry(b.cell);return d.isEdge(c)&&null!=g&&g.relative&&2>b.width&&2>b.height&&null!=b.text&&null!=b.text.boundingBox?(d=b.text.unrotatedBoundingBox||b.text.boundingBox,new mxRectangle(Math.round(d.x),Math.round(d.y),Math.round(d.width),Math.round(d.height))):ga.apply(this,arguments)};
+var ra=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(b,d){var c=this.graph.getModel(),g=c.getParent(this.state.cell),e=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(d)==mxEvent.ROTATION_HANDLE||!c.isEdge(g)||null==e||!e.relative||null==this.state||2<=this.state.width||2<=this.state.height)&&ra.apply(this,arguments)};mxVertexHandler.prototype.rotateClick=function(){var b=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),
d=mxUtils.getValue(this.state.style,mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&b==mxConstants.NONE&&d==mxConstants.NONE?(b=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,b,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};var Y=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(b,d){Y.apply(this,
-arguments);null!=this.graph.graphHandler.first&&(null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display="none"),null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none"))};var Q=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(b,d){Q.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");
-null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="");this.blockDelayedSelection=null};var ta=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){ta.apply(this,arguments);var b=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));if(this.graph.isTable(this.state.cell))this.refreshMoveHandles();else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=
+arguments);null!=this.graph.graphHandler.first&&(null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display="none"),null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none"))};var P=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(b,d){P.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");
+null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="");this.blockDelayedSelection=null};var sa=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){sa.apply(this,arguments);var b=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));if(this.graph.isTable(this.state.cell))this.refreshMoveHandles();else if(1==this.graph.getSelectionCount()&&(this.graph.isTableCell(this.state.cell)||this.graph.isTableRow(this.state.cell))){this.cornerHandles=
[];for(var d=0;4>d;d++){var c=new mxRectangleShape(new mxRectangle(0,0,6,6),"#ffffff",mxConstants.HANDLE_STROKECOLOR);c.dialect=mxConstants.DIALECT_SVG;c.init(this.graph.view.getOverlayPane());this.cornerHandles.push(c)}}var g=mxUtils.bind(this,function(){null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this,function(b,d){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),
this.graph.getLinksForState(this.state));g()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(b,d){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);d=this.graph.getLinkForCell(this.state.cell);c=this.graph.getLinksForState(this.state);this.updateLinkHint(d,c);if(null!=d||null!=c&&0<c.length)b=!0;b&&this.redrawHandles()};
mxVertexHandler.prototype.updateLinkHint=function(d,c){try{if(null==d&&(null==c||0==c.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=d||null!=c&&0<c.length){null==this.linkHint&&(this.linkHint=b(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint),mxEvent.addListener(this.linkHint,"mouseenter",
mxUtils.bind(this,function(){this.graph.tooltipHandler.hide()})));this.linkHint.innerHTML="";if(null!=d&&(this.linkHint.appendChild(this.graph.createLinkForHint(d)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var g=document.createElement("img");g.setAttribute("src",Editor.editImage);g.setAttribute("title",mxResources.get("editLink"));g.setAttribute("width","11");g.setAttribute("height","11");g.style.marginLeft="10px";g.style.marginBottom="-1px";g.style.cursor="pointer";this.linkHint.appendChild(g);
mxEvent.addListener(g,"click",mxUtils.bind(this,function(b){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(b)}));this.linkHint.appendChildGraph.createRemoveIcon(mxResources.get("removeIt",[mxResources.get("link")]),mxUtils.bind(this,function(b){this.graph.setLinkForCell(this.state.cell,null);mxEvent.consume(b)}))}if(null!=c)for(g=0;g<c.length;g++){var e=document.createElement("div");e.style.marginTop=null!=d||0<g?"6px":"0px";e.appendChild(this.graph.createLinkForHint(c[g].getAttribute("href"),
-mxUtils.getTextContent(c[g])));this.linkHint.appendChild(e)}}}catch(ua){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var T=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){T.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var b=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");
+mxUtils.getTextContent(c[g])));this.linkHint.appendChild(e)}}}catch(ta){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var T=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){T.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.state.view.graph.connectionHandler.isEnabled()});var b=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");
null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(d,c){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));b();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var d=this.graph.getLinkForCell(this.state.cell),
-c=this.graph.getLinksForState(this.state);if(null!=d||null!=c&&0<c.length)this.updateLinkHint(d,c),this.redrawHandles()};var ja=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){ja.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var ma=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.left=
+c=this.graph.getLinksForState(this.state);if(null!=d||null!=c&&0<c.length)this.updateLinkHint(d,c),this.redrawHandles()};var ia=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){ia.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this,function(){return this.graph.connectionHandler.isEnabled()})};var la=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){if(null!=this.moveHandles)for(var b=0;b<this.moveHandles.length;b++)this.moveHandles[b].style.left=
this.moveHandles[b].rowState.x+this.moveHandles[b].rowState.width-5+"px",this.moveHandles[b].style.top=this.moveHandles[b].rowState.y+this.moveHandles[b].rowState.height/2-6+"px";if(null!=this.cornerHandles){var b=this.getSelectionBorderInset(),d=this.cornerHandles,c=d[0].bounds.height/2;d[0].bounds.x=this.state.x-d[0].bounds.width/2+b;d[0].bounds.y=this.state.y-c+b;d[0].redraw();d[1].bounds.x=d[0].bounds.x+this.state.width-2*b;d[1].bounds.y=d[0].bounds.y;d[1].redraw();d[2].bounds.x=d[0].bounds.x;
-d[2].bounds.y=this.state.y+this.state.height-2*b;d[2].redraw();d[3].bounds.x=d[1].bounds.x;d[3].bounds.y=d[2].bounds.y;d[3].redraw();for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.display=1==this.graph.getSelectionCount()?"":"none"}null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&this.index!=mxEvent.ROTATION_HANDLE?"none":"");ma.apply(this);null!=this.state&&
+d[2].bounds.y=this.state.y+this.state.height-2*b;d[2].redraw();d[3].bounds.x=d[1].bounds.x;d[3].bounds.y=d[2].bounds.y;d[3].redraw();for(b=0;b<this.cornerHandles.length;b++)this.cornerHandles[b].node.style.display=1==this.graph.getSelectionCount()?"":"none"}null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=null!=this.moveHandles||1!=this.graph.getSelectionCount()||null!=this.index&&this.index!=mxEvent.ROTATION_HANDLE?"none":"");la.apply(this);null!=this.state&&
null!=this.linkHint&&(b=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),d=new mxRectangle(this.state.x,this.state.y-22,this.state.width+24,this.state.height+22),c=mxUtils.getBoundingBox(d,this.state.style[mxConstants.STYLE_ROTATION]||"0",b),b=null!=c?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,d=null!=this.state.text?this.state.text.boundingBox:null,null==c&&(c=this.state),c=c.y+c.height,null!=d&&(c=Math.max(c,d.y+d.height)),this.linkHint.style.left=
-Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(c+this.verticalOffset/2+Editor.hintOffset)+"px")};var ra=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){ra.apply(this,arguments);if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)null!=this.moveHandles[b]&&null!=this.moveHandles[b].parentNode&&this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);this.moveHandles=null}if(null!=this.cornerHandles){for(b=
+Math.max(0,Math.round(b.x+(b.width-this.linkHint.clientWidth)/2))+"px",this.linkHint.style.top=Math.round(c+this.verticalOffset/2+Editor.hintOffset)+"px")};var qa=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){qa.apply(this,arguments);if(null!=this.moveHandles){for(var b=0;b<this.moveHandles.length;b++)null!=this.moveHandles[b]&&null!=this.moveHandles[b].parentNode&&this.moveHandles[b].parentNode.removeChild(this.moveHandles[b]);this.moveHandles=null}if(null!=this.cornerHandles){for(b=
0;b<this.cornerHandles.length;b++)null!=this.cornerHandles[b]&&null!=this.cornerHandles[b].node&&null!=this.cornerHandles[b].node.parentNode&&this.cornerHandles[b].node.parentNode.removeChild(this.cornerHandles[b].node);this.cornerHandles=null}null!=this.linkHint&&(null!=this.linkHint.parentNode&&this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),this.graph.getModel().removeListener(this.changeHandler),
this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler),this.editingHandler=null)};var S=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(S.apply(this),null!=this.state&&null!=this.linkHint)){var b=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(b=new mxRectangle(b.x,b.y,b.width,b.height),b.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(b.x+(b.width-
-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b.y+b.height+Editor.hintOffset)+"px"}};var oa=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){oa.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var da=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){da.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.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b.y+b.height+Editor.hintOffset)+"px"}};var na=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){na.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var ca=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ca.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),
this.graph.getSelectionModel().removeListener(this.changeHandler),this.changeHandler=null)}}();(function(){function b(b,d,c){mxShape.call(this);this.line=b;this.stroke=d;this.strokewidth=null!=c?c:1;this.updateBoundsFromLine()}function c(){mxSwimlane.call(this)}function e(){mxSwimlane.call(this)}function f(){mxCylinder.call(this)}function n(){mxCylinder.call(this)}function l(){mxActor.call(this)}function q(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function k(){mxCylinder.call(this)}function g(){mxCylinder.call(this)}function p(){mxShape.call(this)}function m(){mxShape.call(this)}
-function u(b,d,c,g){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=c;this.strokewidth=null!=g?g:1}function v(){mxActor.call(this)}function t(){mxCylinder.call(this)}function z(){mxCylinder.call(this)}function y(){mxActor.call(this)}function I(){mxActor.call(this)}function D(){mxActor.call(this)}function F(){mxActor.call(this)}function E(){mxActor.call(this)}function O(){mxActor.call(this)}function B(){mxActor.call(this)}function G(b,d){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
-this.defaultVariation=d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,G.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,G.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,G.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,G.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,G.prototype.curveTo);
-this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,G.prototype.arcTo)}function H(){mxRectangleShape.call(this)}function L(){mxRectangleShape.call(this)}function N(){mxActor.call(this)}function M(){mxActor.call(this)}function P(){mxActor.call(this)}function V(){mxRectangleShape.call(this)}function W(){mxRectangleShape.call(this)}function ga(){mxCylinder.call(this)}function ea(){mxShape.call(this)}function ba(){mxShape.call(this)}function x(){mxEllipse.call(this)}function C(){mxShape.call(this)}
-function J(){mxShape.call(this)}function X(){mxRectangleShape.call(this)}function ca(){mxShape.call(this)}function ka(){mxShape.call(this)}function K(){mxShape.call(this)}function na(){mxShape.call(this)}function qa(){mxShape.call(this)}function pa(){mxCylinder.call(this)}function ha(){mxCylinder.call(this)}function sa(){mxRectangleShape.call(this)}function Y(){mxDoubleEllipse.call(this)}function Q(){mxDoubleEllipse.call(this)}function ta(){mxArrowConnector.call(this);this.spacing=0}function T(){mxArrowConnector.call(this);
-this.spacing=0}function ja(){mxActor.call(this)}function ma(){mxRectangleShape.call(this)}function ra(){mxActor.call(this)}function S(){mxActor.call(this)}function oa(){mxActor.call(this)}function da(){mxActor.call(this)}function Z(){mxActor.call(this)}function la(){mxActor.call(this)}function ya(){mxActor.call(this)}function za(){mxActor.call(this)}function ua(){mxActor.call(this)}function fa(){mxActor.call(this)}function aa(){mxEllipse.call(this)}function R(){mxEllipse.call(this)}function Fa(){mxEllipse.call(this)}
+function u(b,d,c,g){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=c;this.strokewidth=null!=g?g:1}function v(){mxActor.call(this)}function t(){mxCylinder.call(this)}function z(){mxCylinder.call(this)}function y(){mxActor.call(this)}function I(){mxActor.call(this)}function D(){mxActor.call(this)}function G(){mxActor.call(this)}function F(){mxActor.call(this)}function O(){mxActor.call(this)}function B(){mxActor.call(this)}function E(b,d){this.canvas=b;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");
+this.defaultVariation=d;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,E.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,E.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,E.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,E.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,E.prototype.curveTo);
+this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,E.prototype.arcTo)}function H(){mxRectangleShape.call(this)}function L(){mxRectangleShape.call(this)}function N(){mxActor.call(this)}function M(){mxActor.call(this)}function R(){mxActor.call(this)}function W(){mxRectangleShape.call(this)}function X(){mxRectangleShape.call(this)}function fa(){mxCylinder.call(this)}function da(){mxShape.call(this)}function ba(){mxShape.call(this)}function x(){mxEllipse.call(this)}function C(){mxShape.call(this)}
+function J(){mxShape.call(this)}function ea(){mxRectangleShape.call(this)}function V(){mxShape.call(this)}function ja(){mxShape.call(this)}function K(){mxShape.call(this)}function ma(){mxShape.call(this)}function pa(){mxShape.call(this)}function oa(){mxCylinder.call(this)}function ga(){mxCylinder.call(this)}function ra(){mxRectangleShape.call(this)}function Y(){mxDoubleEllipse.call(this)}function P(){mxDoubleEllipse.call(this)}function sa(){mxArrowConnector.call(this);this.spacing=0}function T(){mxArrowConnector.call(this);
+this.spacing=0}function ia(){mxActor.call(this)}function la(){mxRectangleShape.call(this)}function qa(){mxActor.call(this)}function S(){mxActor.call(this)}function na(){mxActor.call(this)}function ca(){mxActor.call(this)}function Z(){mxActor.call(this)}function ka(){mxActor.call(this)}function ya(){mxActor.call(this)}function za(){mxActor.call(this)}function ta(){mxActor.call(this)}function ua(){mxActor.call(this)}function aa(){mxEllipse.call(this)}function Q(){mxEllipse.call(this)}function Fa(){mxEllipse.call(this)}
function Ga(){mxRhombus.call(this)}function wa(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function xa(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function Ha(){mxActor.call(this)}function Ca(){mxActor.call(this)}function Da(){mxActor.call(this)}function U(b,d,c,g){mxShape.call(this);this.bounds=b;this.fill=d;this.stroke=c;this.strokewidth=null!=g?g:1;this.rectStyle="square";this.size=10;this.absoluteCornerSize=!0;this.indent=2;this.rectOutline="single"}function Ea(){mxConnector.call(this)}
function Na(b,d,c,g,e,k,f,l,m,p){f+=m;var A=g.clone();g.x-=e*(2*f+m);g.y-=k*(2*f+m);e*=f+m;k*=f+m;return function(){b.ellipse(A.x-e-f,A.y-k-f,2*f,2*f);p?b.fillAndStroke():b.stroke()}}mxUtils.extend(b,mxShape);b.prototype.updateBoundsFromLine=function(){var b=null;if(null!=this.line)for(var d=0;d<this.line.length;d++){var c=this.line[d];null!=c&&(c=new mxRectangle(c.x,c.y,this.strokewidth,this.strokewidth),null==b?b=c:b.add(c))}this.bounds=null!=b?b:new mxRectangle};b.prototype.paintVertexShape=function(b,
d,c,g,e){this.paintTableLine(b,this.line,0,0)};b.prototype.paintTableLine=function(b,d,c,g){if(null!=d){var A=null;b.begin();for(var e=0;e<d.length;e++){var k=d[e];null!=k&&(null==A?b.moveTo(k.x+c,k.y+g):null!=A&&b.lineTo(k.x+c,k.y+g));A=k}b.end();b.stroke()}};b.prototype.intersectsRectangle=function(b){var d=!1;if(mxShape.prototype.intersectsRectangle.apply(this,arguments)&&null!=this.line)for(var c=null,g=0;g<this.line.length&&!d;g++){var A=this.line[g];null!=A&&null!=c&&(d=mxUtils.rectangleIntersectsSegment(b,
@@ -2778,16 +2778,16 @@ g,new mxRectangle(b.x,b.y+d,c,g-2*d);d*=c;return new mxRectangle(b.x+d,b.y,c-2*d
"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,b.height*d),0,0)}return null};u.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,"size",15);mxUtils.getValue(this.style,"lid",!0)||(d/=2);return new mxRectangle(0,Math.min(b.height*this.scale,2*d*this.scale),0,Math.max(0,.3*d*this.scale))}return null};t.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var d=mxUtils.getValue(this.style,
"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style,"labelInHeader",!1)){var c=mxUtils.getValue(this.style,"tabWidth",15)*this.scale,d=mxUtils.getValue(this.style,"tabHeight",15)*this.scale,g=mxUtils.getValue(this.style,"rounded",!1),e=mxUtils.getValue(this.style,"absoluteArcSize",!1),k=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));e||(k*=Math.min(b.width,b.height));k=Math.min(k,.5*b.width,.5*(b.height-d));g||(k=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?
new mxRectangle(k,0,Math.min(b.width,b.width-c),Math.min(b.height,b.height-d)):new mxRectangle(Math.min(b.width,b.width-c),0,k,Math.min(b.height,b.height-d))}return new mxRectangle(0,Math.min(b.height,d),0,0)}return null};z.prototype.getLabelMargins=function(b){return mxUtils.getValue(this.style,"boundedLbl",!1)&&null!=mxUtils.getValue(this.style,"umlStateConnection",null)?new mxRectangle(10*this.scale,0,0,0):null};g.prototype.getLabelMargins=function(b){if(mxUtils.getValue(this.style,"boundedLbl",
-!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,Math.max(0,d*this.scale))}return null};mxUtils.extend(F,mxActor);F.prototype.size=.2;F.prototype.fixedSize=20;F.prototype.isRoundable=function(){return!0};F.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
-"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(g,0),new mxPoint(g-d,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("parallelogram",F);mxUtils.extend(E,mxActor);E.prototype.size=.2;E.prototype.fixedSize=20;E.prototype.isRoundable=function(){return!0};E.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
-g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(g-d,0),new mxPoint(g,e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("trapezoid",E);mxUtils.extend(O,mxActor);O.prototype.size=.5;O.prototype.redrawPath=function(b,d,c,g,e){b.setFillColor(null);
+!1)){var d=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(b.height*this.scale,d*this.scale),0,Math.max(0,d*this.scale))}return null};mxUtils.extend(G,mxActor);G.prototype.size=.2;G.prototype.fixedSize=20;G.prototype.isRoundable=function(){return!0};G.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,
+"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(g,0),new mxPoint(g-d,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("parallelogram",G);mxUtils.extend(F,mxActor);F.prototype.size=.2;F.prototype.fixedSize=20;F.prototype.isRoundable=function(){return!0};F.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*
+g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(d,0),new mxPoint(g-d,0),new mxPoint(g,e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("trapezoid",F);mxUtils.extend(O,mxActor);O.prototype.size=.5;O.prototype.redrawPath=function(b,d,c,g,e){b.setFillColor(null);
d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(g,0),new mxPoint(d,0),new mxPoint(d,e/2),new mxPoint(0,e/2),new mxPoint(d,e/2),new mxPoint(d,e),new mxPoint(g,e)],this.isRounded,c,!1);b.end()};mxCellRenderer.registerShape("curlyBracket",O);mxUtils.extend(B,mxActor);B.prototype.redrawPath=function(b,d,c,g,e){b.setStrokeWidth(1);b.setFillColor(this.stroke);
-d=g/5;b.rect(0,0,d,e);b.fillAndStroke();b.rect(2*d,0,d,e);b.fillAndStroke();b.rect(4*d,0,d,e);b.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",B);G.prototype.moveTo=function(b,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;this.firstX=b;this.firstY=d};G.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)};
-G.prototype.quadTo=function(b,d,c,g){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=g};G.prototype.curveTo=function(b,d,c,g,e,k){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=k};G.prototype.arcTo=function(b,d,c,g,e,k,f){this.originalArcTo.apply(this.canvas,arguments);this.lastX=k;this.lastY=f};G.prototype.lineTo=function(b,d){if(null!=this.lastX&&null!=this.lastY){var c=function(b){return"number"===typeof b?b?0>b?-1:1:b===b?0:NaN:NaN},g=Math.abs(b-
+d=g/5;b.rect(0,0,d,e);b.fillAndStroke();b.rect(2*d,0,d,e);b.fillAndStroke();b.rect(4*d,0,d,e);b.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",B);E.prototype.moveTo=function(b,d){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;this.firstX=b;this.firstY=d};E.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};
+E.prototype.quadTo=function(b,d,c,g){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=c;this.lastY=g};E.prototype.curveTo=function(b,d,c,g,e,k){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=e;this.lastY=k};E.prototype.arcTo=function(b,d,c,g,e,k,f){this.originalArcTo.apply(this.canvas,arguments);this.lastX=k;this.lastY=f};E.prototype.lineTo=function(b,d){if(null!=this.lastX&&null!=this.lastY){var c=function(b){return"number"===typeof b?b?0>b?-1:1:b===b?0:NaN:NaN},g=Math.abs(b-
this.lastX),e=Math.abs(d-this.lastY),k=Math.sqrt(g*g+e*e);if(2>k){this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=d;return}var A=Math.round(k/10),f=this.defaultVariation;5>A&&(A=5,f/=3);for(var l=c(b-this.lastX)*g/A,c=c(d-this.lastY)*e/A,g=g/k,e=e/k,k=0;k<A;k++){var m=(Math.random()-.5)*f;this.originalLineTo.call(this.canvas,l*k+this.lastX-m*e,c*k+this.lastY-m*g)}this.originalLineTo.call(this.canvas,b,d)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=
-d};G.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var cb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(b){cb.apply(this,arguments);null==b.handJiggle&&(b.handJiggle=this.createHandJiggle(b))};var db=mxShape.prototype.afterPaint;
-mxShape.prototype.afterPaint=function(b){db.apply(this,arguments);null!=b.handJiggle&&(b.handJiggle.destroy(),delete b.handJiggle)};mxShape.prototype.createComicCanvas=function(b){return new G(b,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(b)};mxRhombus.prototype.defaultJiggle=2;var gb=mxRectangleShape.prototype.isHtmlAllowed;
-mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&gb.apply(this,arguments)};var hb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(b,d,c,g,e){if(null==b.handJiggle||b.handJiggle.constructor!=G)hb.apply(this,arguments);else{var k=!0;null!=this.style&&(k="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,
+d};E.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo};mxShape.prototype.defaultJiggle=1.5;var cb=mxShape.prototype.beforePaint;mxShape.prototype.beforePaint=function(b){cb.apply(this,arguments);null==b.handJiggle&&(b.handJiggle=this.createHandJiggle(b))};var db=mxShape.prototype.afterPaint;
+mxShape.prototype.afterPaint=function(b){db.apply(this,arguments);null!=b.handJiggle&&(b.handJiggle.destroy(),delete b.handJiggle)};mxShape.prototype.createComicCanvas=function(b){return new E(b,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle))};mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")?null:this.createComicCanvas(b)};mxRhombus.prototype.defaultJiggle=2;var gb=mxRectangleShape.prototype.isHtmlAllowed;
+mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.outline&&(null==this.style||"0"==mxUtils.getValue(this.style,"comic","0")&&"0"==mxUtils.getValue(this.style,"sketch","1"==urlParams.rough?"1":"0"))&&gb.apply(this,arguments)};var hb=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(b,d,c,g,e){if(null==b.handJiggle||b.handJiggle.constructor!=E)hb.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||(b.pointerEvents=!1),b.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?k=Math.min(g/2,Math.min(e/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(g*
k,e*k)),b.moveTo(d+k,c),b.lineTo(d+g-k,c),b.quadTo(d+g,c,d+g,c+k),b.lineTo(d+g,c+e-k),b.quadTo(d+g,c+e,d+g-k,c+e),b.lineTo(d+k,c+e),b.quadTo(d,c+e,d,c+e-k),b.lineTo(d,c+k),b.quadTo(d,c,d+k,c)):(b.moveTo(d,c),b.lineTo(d+g,c),b.lineTo(d+g,c+e),b.lineTo(d,c+e),b.lineTo(d,c)),b.close(),b.end(),b.fillAndStroke()}};mxUtils.extend(H,mxRectangleShape);H.prototype.size=.1;H.prototype.fixedSize=!1;H.prototype.isHtmlAllowed=function(){return!1};H.prototype.getLabelBounds=function(b){if(mxUtils.getValue(this.state.style,
mxConstants.STYLE_HORIZONTAL,!0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var d=b.width,c=b.height;b=new mxRectangle(b.x,b.y,d,c);var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(d*e,c*e));b.x+=Math.round(g);b.width-=Math.round(2*g)}return b};
@@ -2796,56 +2796,56 @@ arguments)};mxCellRenderer.registerShape("process",H);mxCellRenderer.registerSha
0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};N.prototype.isRoundable=function(){return!0};N.prototype.redrawPath=function(b,d,c,g,e){d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var k=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),A=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",
this.position2)))),f=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"base",this.base))));this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,e-c),new mxPoint(Math.min(g,k+f),e-c),new mxPoint(A,e),new mxPoint(Math.max(0,k),e-c),new mxPoint(0,e-c)],this.isRounded,d,!0,[4])};mxCellRenderer.registerShape("callout",N);mxUtils.extend(M,mxActor);M.prototype.size=.2;M.prototype.fixedSize=20;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(b,d,c,g,e){d=
"0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(0,e),new mxPoint(d,e/2)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("step",M);
-mxUtils.extend(P,mxHexagon);P.prototype.size=.25;P.prototype.fixedSize=20;P.prototype.isRoundable=function(){return!0};P.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,
-0),new mxPoint(g-d,0),new mxPoint(g,.5*e),new mxPoint(g-d,e),new mxPoint(d,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",P);mxUtils.extend(V,mxRectangleShape);V.prototype.isHtmlAllowed=function(){return!1};V.prototype.paintForeground=function(b,d,c,g,e){var k=Math.min(g/5,e/5)+1;b.begin();b.moveTo(d+g/2,c+k);b.lineTo(d+g/2,c+e-k);b.moveTo(d+k,c+e/2);b.lineTo(d+g-k,c+e/2);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
-V);var $a=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};mxRhombus.prototype.paintVertexShape=function(b,d,c,g,e){$a.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);d+=k;c+=k;g-=2*k;e-=2*k;0<g&&0<e&&(b.setShadow(!1),$a.apply(this,[b,d,c,g,e]))}};mxUtils.extend(W,mxRectangleShape);W.prototype.isHtmlAllowed=function(){return!1};W.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};W.prototype.paintForeground=function(b,d,c,g,e){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var k=
+mxUtils.extend(R,mxHexagon);R.prototype.size=.25;R.prototype.fixedSize=20;R.prototype.isRoundable=function(){return!0};R.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,
+0),new mxPoint(g-d,0),new mxPoint(g,.5*e),new mxPoint(g-d,e),new mxPoint(d,e),new mxPoint(0,.5*e)],this.isRounded,c,!0)};mxCellRenderer.registerShape("hexagon",R);mxUtils.extend(W,mxRectangleShape);W.prototype.isHtmlAllowed=function(){return!1};W.prototype.paintForeground=function(b,d,c,g,e){var k=Math.min(g/5,e/5)+1;b.begin();b.moveTo(d+g/2,c+k);b.lineTo(d+g/2,c+e-k);b.moveTo(d+k,c+e/2);b.lineTo(d+g-k,c+e/2);b.end();b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",
+W);var $a=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};mxRhombus.prototype.paintVertexShape=function(b,d,c,g,e){$a.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);d+=k;c+=k;g-=2*k;e-=2*k;0<g&&0<e&&(b.setShadow(!1),$a.apply(this,[b,d,c,g,e]))}};mxUtils.extend(X,mxRectangleShape);X.prototype.isHtmlAllowed=function(){return!1};X.prototype.getLabelBounds=function(b){if(1==this.style["double"]){var d=(Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(b.x+d,b.y+d,b.width-2*d,b.height-2*d)}return b};X.prototype.paintForeground=function(b,d,c,g,e){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);d+=k;c+=k;g-=2*k;e-=2*k;0<g&&0<e&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}b.setDashed(!1);var k=0,A;do{A=mxCellRenderer.defaultShapes[this.style["symbol"+k]];if(null!=A){var f=this.style["symbol"+k+"Align"],l=this.style["symbol"+k+"VerticalAlign"],m=this.style["symbol"+k+"Width"],p=this.style["symbol"+k+"Height"],x=this.style["symbol"+k+"Spacing"]||0,u=this.style["symbol"+k+"VSpacing"]||x,va=
this.style["symbol"+k+"ArcSpacing"];null!=va&&(va*=this.getArcSize(g+this.strokewidth,e+this.strokewidth),x+=va,u+=va);var va=d,Ja=c,va=f==mxConstants.ALIGN_CENTER?va+(g-m)/2:f==mxConstants.ALIGN_RIGHT?va+(g-m-x):va+x,Ja=l==mxConstants.ALIGN_MIDDLE?Ja+(e-p)/2:l==mxConstants.ALIGN_BOTTOM?Ja+(e-p-u):Ja+u;b.save();f=new A;f.style=this.style;A.prototype.paintVertexShape.call(f,b,va,Ja,m,p);b.restore()}k++}while(null!=A)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",
-W);mxUtils.extend(ga,mxCylinder);ga.prototype.redrawPath=function(b,d,c,g,e,k){k?(b.moveTo(0,0),b.lineTo(g/2,e/2),b.lineTo(g,0),b.end()):(b.moveTo(0,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",ga);mxUtils.extend(ea,mxShape);ea.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.ellipse(g/4,0,g/2,e/4);b.fillAndStroke();b.begin();b.moveTo(g/2,e/4);b.lineTo(g/2,2*e/3);b.moveTo(g/2,e/3);b.lineTo(0,e/3);b.moveTo(g/2,e/3);b.lineTo(g,e/3);
-b.moveTo(g/2,2*e/3);b.lineTo(0,e);b.moveTo(g/2,2*e/3);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",ea);mxUtils.extend(ba,mxShape);ba.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};ba.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(g/6,e/2);b.end();b.stroke();b.ellipse(g/6,0,5*g/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
+X);mxUtils.extend(fa,mxCylinder);fa.prototype.redrawPath=function(b,d,c,g,e,k){k?(b.moveTo(0,0),b.lineTo(g/2,e/2),b.lineTo(g,0),b.end()):(b.moveTo(0,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(0,e),b.close())};mxCellRenderer.registerShape("message",fa);mxUtils.extend(da,mxShape);da.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.ellipse(g/4,0,g/2,e/4);b.fillAndStroke();b.begin();b.moveTo(g/2,e/4);b.lineTo(g/2,2*e/3);b.moveTo(g/2,e/3);b.lineTo(0,e/3);b.moveTo(g/2,e/3);b.lineTo(g,e/3);
+b.moveTo(g/2,2*e/3);b.lineTo(0,e);b.moveTo(g/2,2*e/3);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlActor",da);mxUtils.extend(ba,mxShape);ba.prototype.getLabelMargins=function(b){return new mxRectangle(b.width/6,0,0,0)};ba.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,e/4);b.lineTo(0,3*e/4);b.end();b.stroke();b.begin();b.moveTo(0,e/2);b.lineTo(g/6,e/2);b.end();b.stroke();b.ellipse(g/6,0,5*g/6,e);b.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",
ba);mxUtils.extend(x,mxEllipse);x.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+g/8,c+e);b.lineTo(d+7*g/8,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("umlEntity",x);mxUtils.extend(C,mxShape);C.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(g,0);b.lineTo(0,e);b.moveTo(0,0);b.lineTo(g,e);b.end();b.stroke()};mxCellRenderer.registerShape("umlDestroy",C);mxUtils.extend(J,mxShape);
-J.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};J.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,0);b.end();b.stroke();b.ellipse(0,e/8,g,7*e/8);b.fillAndStroke()};J.prototype.paintForeground=function(b,d,c,g,e){b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,e/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(X,mxRectangleShape);X.prototype.size=
-40;X.prototype.isHtmlAllowed=function(){return!1};X.prototype.getLabelBounds=function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,d)};X.prototype.paintBackground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,b,d,
-c,g,k):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=X&&(f=new f,f.apply(this.state),b.save(),f.paintVertexShape(b,d,c,g,k),b.restore()));k<e&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(d+g/2,c+k),b.lineTo(d+g/2,c+e),b.end(),b.stroke())};X.prototype.paintForeground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,d,c,g,Math.min(e,
-k))};mxCellRenderer.registerShape("umlLifeline",X);mxUtils.extend(ca,mxShape);ca.prototype.width=60;ca.prototype.height=30;ca.prototype.corner=10;ca.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};ca.prototype.paintBackground=function(b,d,c,g,e){var k=this.corner,f=Math.min(g,Math.max(k,parseFloat(mxUtils.getValue(this.style,
+J.prototype.getLabelBounds=function(b){return new mxRectangle(b.x,b.y+b.height/8,b.width,7*b.height/8)};J.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,0);b.end();b.stroke();b.ellipse(0,e/8,g,7*e/8);b.fillAndStroke()};J.prototype.paintForeground=function(b,d,c,g,e){b.begin();b.moveTo(3*g/8,e/8*1.1);b.lineTo(5*g/8,e/4);b.end();b.stroke()};mxCellRenderer.registerShape("umlControl",J);mxUtils.extend(ea,mxRectangleShape);ea.prototype.size=
+40;ea.prototype.isHtmlAllowed=function(){return!1};ea.prototype.getLabelBounds=function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(b.x,b.y,b.width,d)};ea.prototype.paintBackground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),f=mxUtils.getValue(this.style,"participant");null==f||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,
+b,d,c,g,k):(f=this.state.view.graph.cellRenderer.getShape(f),null!=f&&f!=ea&&(f=new f,f.apply(this.state),b.save(),f.paintVertexShape(b,d,c,g,k),b.restore()));k<e&&(b.setDashed("1"==mxUtils.getValue(this.style,"lifelineDashed","1")),b.begin(),b.moveTo(d+g/2,c+k),b.lineTo(d+g/2,c+e),b.end(),b.stroke())};ea.prototype.paintForeground=function(b,d,c,g,e){var k=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,b,d,c,g,
+Math.min(e,k))};mxCellRenderer.registerShape("umlLifeline",ea);mxUtils.extend(V,mxShape);V.prototype.width=60;V.prototype.height=30;V.prototype.corner=10;V.prototype.getLabelMargins=function(b){return new mxRectangle(0,0,b.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),b.height-parseFloat(mxUtils.getValue(this.style,"height",this.height)*this.scale))};V.prototype.paintBackground=function(b,d,c,g,e){var k=this.corner,f=Math.min(g,Math.max(k,parseFloat(mxUtils.getValue(this.style,
"width",this.width)))),A=Math.min(e,Math.max(1.5*k,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),l=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);l!=mxConstants.NONE&&(b.setFillColor(l),b.rect(d,c,g,e),b.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!=mxConstants.NONE?(this.getGradientBounds(b,d,c,g,e),b.setGradient(this.fill,this.gradient,d,c,g,e,this.gradientDirection)):b.setFillColor(this.fill);b.begin();
-b.moveTo(d,c);b.lineTo(d+f,c);b.lineTo(d+f,c+Math.max(0,A-1.5*k));b.lineTo(d+Math.max(0,f-k),c+A);b.lineTo(d,c+A);b.close();b.fillAndStroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+g,c);b.lineTo(d+g,c+e);b.lineTo(d,c+e);b.lineTo(d,c+A);b.stroke()};mxCellRenderer.registerShape("umlFrame",ca);mxPerimeter.CenterPerimeter=function(b,d,c,g){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
-c,g){g=X.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;c.x<b.getCenterX()&&(d=-1*(d+1));return new mxPoint(b.getCenterX()+d,Math.min(b.y+b.height,Math.max(b.y+g,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,d,c,g){g=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
+b.moveTo(d,c);b.lineTo(d+f,c);b.lineTo(d+f,c+Math.max(0,A-1.5*k));b.lineTo(d+Math.max(0,f-k),c+A);b.lineTo(d,c+A);b.close();b.fillAndStroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+g,c);b.lineTo(d+g,c+e);b.lineTo(d,c+e);b.lineTo(d,c+A);b.stroke()};mxCellRenderer.registerShape("umlFrame",V);mxPerimeter.CenterPerimeter=function(b,d,c,g){return new mxPoint(b.getCenterX(),b.getCenterY())};mxStyleRegistry.putValue("centerPerimeter",mxPerimeter.CenterPerimeter);mxPerimeter.LifelinePerimeter=function(b,d,
+c,g){g=ea.prototype.size;null!=d&&(g=mxUtils.getValue(d.style,"size",g)*d.view.scale);d=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;c.x<b.getCenterX()&&(d=-1*(d+1));return new mxPoint(b.getCenterX()+d,Math.min(b.y+b.height,Math.max(b.y+g,c.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(b,d,c,g){g=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",
mxPerimeter.OrthogonalPerimeter);mxPerimeter.BackbonePerimeter=function(b,d,c,g){g=parseFloat(d.style[mxConstants.STYLE_STROKEWIDTH]||1)*d.view.scale/2-1;null!=d.style.backboneSize&&(g+=parseFloat(d.style.backboneSize)*d.view.scale/2-1);if("south"==d.style[mxConstants.STYLE_DIRECTION]||"north"==d.style[mxConstants.STYLE_DIRECTION])return c.x<b.getCenterX()&&(g=-1*(g+1)),new mxPoint(b.getCenterX()+g,Math.min(b.y+b.height,Math.max(b.y,c.y)));c.y<b.getCenterY()&&(g=-1*(g+1));return new mxPoint(Math.min(b.x+
b.width,Math.max(b.x,c.x)),b.getCenterY()+g)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(b,d,c,g){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(b,new mxRectangle(0,0,0,Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(d.style,"size",N.prototype.size))*d.view.scale))),d.style),d,c,g)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(b,
-d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?F.prototype.fixedSize:F.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(f+l,A+e),new mxPoint(f+
+d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?G.prototype.fixedSize:G.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(f+l,A+e),new mxPoint(f+
l,A+m),new mxPoint(f,A+m-e),new mxPoint(f,A)]):(e=e?Math.max(0,Math.min(.5*l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f+e,A),new mxPoint(f+l,A),new mxPoint(f+l-e,A+m),new mxPoint(f,A+m),new mxPoint(f+e,A)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);g&&(c.x<f||c.x>f+l?b.y=c.y:b.x=c.x);return mxUtils.getPerimeterPoint(A,b,c)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(b,d,c,g){var e="0"!=mxUtils.getValue(d.style,
-"fixedSize","0"),k=e?E.prototype.fixedSize:E.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(.5*l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f+e,A),new mxPoint(f+l-e,A),new mxPoint(f+l,A+m),new mxPoint(f,A+m),new mxPoint(f+e,A)]):d==mxConstants.DIRECTION_WEST?
+"fixedSize","0"),k=e?F.prototype.fixedSize:F.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height;d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(.5*l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f+e,A),new mxPoint(f+l-e,A),new mxPoint(f+l,A+m),new mxPoint(f,A+m),new mxPoint(f+e,A)]):d==mxConstants.DIRECTION_WEST?
(e=e?Math.max(0,Math.min(l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(f+l,A),new mxPoint(f+l-e,A+m),new mxPoint(f+e,A+m),new mxPoint(f,A)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A+e),new mxPoint(f+l,A),new mxPoint(f+l,A+m),new mxPoint(f,A+m-e),new mxPoint(f,A+e)]):(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(f+l,A+e),new mxPoint(f+l,A+m-e),new mxPoint(f,A+m),new mxPoint(f,
A)]);m=b.getCenterX();b=b.getCenterY();b=new mxPoint(m,b);g&&(c.x<f||c.x>f+l?b.y=c.y:b.x=c.x);return mxUtils.getPerimeterPoint(A,b,c)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(b,d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?M.prototype.fixedSize:M.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height,p=b.getCenterX();b=b.getCenterY();d=null!=
d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_EAST?(e=e?Math.max(0,Math.min(l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(f+l-e,A),new mxPoint(f+l,b),new mxPoint(f+l-e,A+m),new mxPoint(f,A+m),new mxPoint(f+e,b),new mxPoint(f,A)]):d==mxConstants.DIRECTION_WEST?(e=e?Math.max(0,Math.min(l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f+e,A),new mxPoint(f+l,A),new mxPoint(f+l-e,b),new mxPoint(f+
l,A+m),new mxPoint(f+e,A+m),new mxPoint(f,b),new mxPoint(f+e,A)]):d==mxConstants.DIRECTION_NORTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A+e),new mxPoint(p,A),new mxPoint(f+l,A+e),new mxPoint(f+l,A+m),new mxPoint(p,A+m-e),new mxPoint(f,A+m),new mxPoint(f,A+e)]):(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(f,A),new mxPoint(p,A+e),new mxPoint(f+l,A),new mxPoint(f+l,A+m-e),new mxPoint(p,A+m),new mxPoint(f,A+m-e),new mxPoint(f,A)]);p=new mxPoint(p,
-b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(A,p,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?P.prototype.fixedSize:P.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height,p=b.getCenterX();b=b.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
+b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(A,p,c)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(b,d,c,g){var e="0"!=mxUtils.getValue(d.style,"fixedSize","0"),k=e?R.prototype.fixedSize:R.prototype.size;null!=d&&(k=mxUtils.getValue(d.style,"size",k));e&&(k*=d.view.scale);var f=b.x,A=b.y,l=b.width,m=b.height,p=b.getCenterX();b=b.getCenterY();d=null!=d?mxUtils.getValue(d.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):
mxConstants.DIRECTION_EAST;d==mxConstants.DIRECTION_NORTH||d==mxConstants.DIRECTION_SOUTH?(e=e?Math.max(0,Math.min(m,k)):m*Math.max(0,Math.min(1,k)),A=[new mxPoint(p,A),new mxPoint(f+l,A+e),new mxPoint(f+l,A+m-e),new mxPoint(p,A+m),new mxPoint(f,A+m-e),new mxPoint(f,A+e),new mxPoint(p,A)]):(e=e?Math.max(0,Math.min(l,k)):l*Math.max(0,Math.min(1,k)),A=[new mxPoint(f+e,A),new mxPoint(f+l-e,A),new mxPoint(f+l,b),new mxPoint(f+l-e,A+m),new mxPoint(f+e,A+m),new mxPoint(f,b),new mxPoint(f+e,A)]);p=new mxPoint(p,
-b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(A,p,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(ka,mxShape);ka.prototype.size=10;ka.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,c);b.ellipse((g-k)/2,0,k,k);b.fillAndStroke();b.begin();b.moveTo(g/2,k);b.lineTo(g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",ka);mxUtils.extend(K,mxShape);
-K.prototype.size=10;K.prototype.inset=2;K.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.begin();b.moveTo(g/2,k+f);b.lineTo(g/2,e);b.end();b.stroke();b.begin();b.moveTo((g-k)/2-f,k/2);b.quadTo((g-k)/2-f,k+f,g/2,k+f);b.quadTo((g+k)/2+f,k+f,(g+k)/2+f,k/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",K);mxUtils.extend(na,mxShape);
-na.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",na);mxUtils.extend(qa,mxShape);qa.prototype.inset=2;qa.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.ellipse(0,k,g-2*k,e-2*k);b.fillAndStroke();b.begin();b.moveTo(g/2,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,
-g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",qa);mxUtils.extend(pa,mxCylinder);pa.prototype.jettyWidth=20;pa.prototype.jettyHeight=10;pa.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,A=Math.min(d,e-d),l=Math.min(A+2*d,e-d);k?(b.moveTo(c,A),b.lineTo(f,A),b.lineTo(f,A+d),b.lineTo(c,A+d),b.moveTo(c,
-l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(c,A),b.close());b.end()};mxCellRenderer.registerShape("module",pa);mxUtils.extend(ha,mxCylinder);ha.prototype.jettyWidth=32;ha.prototype.jettyHeight=12;ha.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
-"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,A=.3*e-d/2,l=.7*e-d/2;k?(b.moveTo(c,A),b.lineTo(f,A),b.lineTo(f,A+d),b.lineTo(c,A+d),b.moveTo(c,l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(c,A),b.close());b.end()};mxCellRenderer.registerShape("component",ha);mxUtils.extend(sa,mxRectangleShape);sa.prototype.paintForeground=
-function(b,d,c,g,e){var k=g/2,f=e/2,A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(d+k,c),new mxPoint(d+g,c+f),new mxPoint(d+k,c+e),new mxPoint(d,c+f)],this.isRounded,A,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",sa);mxUtils.extend(Y,mxDoubleEllipse);Y.prototype.outerStroke=!0;Y.prototype.paintVertexShape=function(b,d,c,g,e){var k=Math.min(4,
-Math.min(g/5,e/5));0<g&&0<e&&(b.ellipse(d+k,c+k,g-2*k,e-2*k),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,c,g,e),b.stroke())};mxCellRenderer.registerShape("endState",Y);mxUtils.extend(Q,Y);Q.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",Q);mxUtils.extend(ta,mxArrowConnector);ta.prototype.defaultWidth=4;ta.prototype.isOpenEnded=function(){return!0};ta.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
-this.strokewidth-1)};ta.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",ta);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=10;T.prototype.defaultArrowWidth=20;T.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};T.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};T.prototype.getEdgeWidth=
-function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",T);mxUtils.extend(ja,mxActor);ja.prototype.size=30;ja.prototype.isRoundable=function(){return!0};ja.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(g,
-0),new mxPoint(g,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("manualInput",ja);mxUtils.extend(ma,mxRectangleShape);ma.prototype.dx=20;ma.prototype.dy=20;ma.prototype.isHtmlAllowed=function(){return!1};ma.prototype.paintForeground=function(b,d,c,g,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var k=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(g*f,e*f));f=
-Math.max(k,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));k=Math.max(k,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(d,c+k);b.lineTo(d+g,c+k);b.end();b.stroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+f,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",ma);mxUtils.extend(ra,mxActor);ra.prototype.dx=20;ra.prototype.dy=20;ra.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,
-"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint(d,c),new mxPoint(d,e),new mxPoint(0,e)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("corner",ra);mxUtils.extend(S,mxActor);S.prototype.redrawPath=function(b,d,c,g,
-e){b.moveTo(0,0);b.lineTo(0,e);b.end();b.moveTo(g,0);b.lineTo(g,e);b.end();b.moveTo(0,e/2);b.lineTo(g,e/2);b.end()};mxCellRenderer.registerShape("crossbar",S);mxUtils.extend(oa,mxActor);oa.prototype.dx=20;oa.prototype.dy=20;oa.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,
-mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint((g+d)/2,c),new mxPoint((g+d)/2,e),new mxPoint((g-d)/2,e),new mxPoint((g-d)/2,c),new mxPoint(0,c)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("tee",oa);mxUtils.extend(da,mxActor);da.prototype.arrowWidth=.3;da.prototype.arrowSize=.2;da.prototype.redrawPath=function(b,d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
-this.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(0,k)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("singleArrow",da);mxUtils.extend(Z,mxActor);Z.prototype.redrawPath=function(b,
-d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(d,
-k),new mxPoint(d,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",Z);mxUtils.extend(la,mxActor);la.prototype.size=.1;la.prototype.fixedSize=20;la.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(g,0);b.quadTo(g-2*d,e/2,g,e);b.lineTo(d,
-e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",la);mxUtils.extend(ya,mxActor);ya.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",ya);mxUtils.extend(za,mxActor);za.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.quadTo(g/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",za);mxUtils.extend(ua,mxActor);
-ua.prototype.size=20;ua.prototype.isRoundable=function(){return!0};ua.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(g/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(g-d,0),new mxPoint(g,.8*d),new mxPoint(g,e),new mxPoint(0,e),new mxPoint(0,.8*d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("loopLimit",ua);mxUtils.extend(fa,
-mxActor);fa.prototype.size=.375;fa.prototype.isRoundable=function(){return!0};fa.prototype.redrawPath=function(b,d,c,g,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,e-d),new mxPoint(g/2,e),new mxPoint(0,e-d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",fa);mxUtils.extend(aa,
-mxEllipse);aa.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+g/2,c+e);b.lineTo(d+g,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",aa);mxUtils.extend(R,mxEllipse);R.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,c+e/2);b.lineTo(d+g,c+e/2);b.end();b.stroke();b.begin();b.moveTo(d+g/2,c);b.lineTo(d+g/2,c+e);b.end();
-b.stroke()};mxCellRenderer.registerShape("orEllipse",R);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d+.145*g,c+.145*e);b.lineTo(d+.855*g,c+.855*e);b.end();b.stroke();b.begin();b.moveTo(d+.855*g,c+.145*e);b.lineTo(d+.145*g,c+.855*e);b.end();b.stroke()};mxCellRenderer.registerShape("sumEllipse",Fa);mxUtils.extend(Ga,mxRhombus);Ga.prototype.paintVertexShape=function(b,d,c,
+b);g&&(c.x<f||c.x>f+l?p.y=c.y:p.x=c.x);return mxUtils.getPerimeterPoint(A,p,c)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(ja,mxShape);ja.prototype.size=10;ja.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size));b.translate(d,c);b.ellipse((g-k)/2,0,k,k);b.fillAndStroke();b.begin();b.moveTo(g/2,k);b.lineTo(g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("lollipop",ja);mxUtils.extend(K,mxShape);
+K.prototype.size=10;K.prototype.inset=2;K.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size)),f=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.begin();b.moveTo(g/2,k+f);b.lineTo(g/2,e);b.end();b.stroke();b.begin();b.moveTo((g-k)/2-f,k/2);b.quadTo((g-k)/2-f,k+f,g/2,k+f);b.quadTo((g+k)/2+f,k+f,(g+k)/2+f,k/2);b.end();b.stroke()};mxCellRenderer.registerShape("requires",K);mxUtils.extend(ma,mxShape);
+ma.prototype.paintBackground=function(b,d,c,g,e){b.translate(d,c);b.begin();b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.end();b.stroke()};mxCellRenderer.registerShape("requiredInterface",ma);mxUtils.extend(pa,mxShape);pa.prototype.inset=2;pa.prototype.paintBackground=function(b,d,c,g,e){var k=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;b.translate(d,c);b.ellipse(0,k,g-2*k,e-2*k);b.fillAndStroke();b.begin();b.moveTo(g/2,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,
+g/2,e);b.end();b.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",pa);mxUtils.extend(oa,mxCylinder);oa.prototype.jettyWidth=20;oa.prototype.jettyHeight=10;oa.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,A=Math.min(d,e-d),l=Math.min(A+2*d,e-d);k?(b.moveTo(c,A),b.lineTo(f,A),b.lineTo(f,A+d),b.lineTo(c,A+d),b.moveTo(c,
+l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(c,A),b.close());b.end()};mxCellRenderer.registerShape("module",oa);mxUtils.extend(ga,mxCylinder);ga.prototype.jettyWidth=32;ga.prototype.jettyHeight=12;ga.prototype.redrawPath=function(b,d,c,g,e,k){var f=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));d=parseFloat(mxUtils.getValue(this.style,
+"jettyHeight",this.jettyHeight));c=f/2;var f=c+f/2,A=.3*e-d/2,l=.7*e-d/2;k?(b.moveTo(c,A),b.lineTo(f,A),b.lineTo(f,A+d),b.lineTo(c,A+d),b.moveTo(c,l),b.lineTo(f,l),b.lineTo(f,l+d),b.lineTo(c,l+d)):(b.moveTo(c,0),b.lineTo(g,0),b.lineTo(g,e),b.lineTo(c,e),b.lineTo(c,l+d),b.lineTo(0,l+d),b.lineTo(0,l),b.lineTo(c,l),b.lineTo(c,A+d),b.lineTo(0,A+d),b.lineTo(0,A),b.lineTo(c,A),b.close());b.end()};mxCellRenderer.registerShape("component",ga);mxUtils.extend(ra,mxRectangleShape);ra.prototype.paintForeground=
+function(b,d,c,g,e){var k=g/2,f=e/2,A=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b.begin();this.addPoints(b,[new mxPoint(d+k,c),new mxPoint(d+g,c+f),new mxPoint(d+k,c+e),new mxPoint(d,c+f)],this.isRounded,A,!0);b.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",ra);mxUtils.extend(Y,mxDoubleEllipse);Y.prototype.outerStroke=!0;Y.prototype.paintVertexShape=function(b,d,c,g,e){var k=Math.min(4,
+Math.min(g/5,e/5));0<g&&0<e&&(b.ellipse(d+k,c+k,g-2*k,e-2*k),b.fillAndStroke());b.setShadow(!1);this.outerStroke&&(b.ellipse(d,c,g,e),b.stroke())};mxCellRenderer.registerShape("endState",Y);mxUtils.extend(P,Y);P.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState",P);mxUtils.extend(sa,mxArrowConnector);sa.prototype.defaultWidth=4;sa.prototype.isOpenEnded=function(){return!0};sa.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,
+this.strokewidth-1)};sa.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",sa);mxUtils.extend(T,mxArrowConnector);T.prototype.defaultWidth=10;T.prototype.defaultArrowWidth=20;T.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};T.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};T.prototype.getEdgeWidth=
+function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",T);mxUtils.extend(ia,mxActor);ia.prototype.size=30;ia.prototype.isRoundable=function(){return!0};ia.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size)));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e),new mxPoint(0,d),new mxPoint(g,
+0),new mxPoint(g,e)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("manualInput",ia);mxUtils.extend(la,mxRectangleShape);la.prototype.dx=20;la.prototype.dy=20;la.prototype.isHtmlAllowed=function(){return!1};la.prototype.paintForeground=function(b,d,c,g,e){mxRectangleShape.prototype.paintForeground.apply(this,arguments);var k=0;if(this.isRounded)var f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(g*f,e*f));f=
+Math.max(k,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));k=Math.max(k,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.begin();b.moveTo(d,c+k);b.lineTo(d+g,c+k);b.end();b.stroke();b.begin();b.moveTo(d+f,c);b.lineTo(d+f,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("internalStorage",la);mxUtils.extend(qa,mxActor);qa.prototype.dx=20;qa.prototype.dy=20;qa.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,
+"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint(d,c),new mxPoint(d,e),new mxPoint(0,e)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("corner",qa);mxUtils.extend(S,mxActor);S.prototype.redrawPath=function(b,d,c,g,
+e){b.moveTo(0,0);b.lineTo(0,e);b.end();b.moveTo(g,0);b.lineTo(g,e);b.end();b.moveTo(0,e/2);b.lineTo(g,e/2);b.end()};mxCellRenderer.registerShape("crossbar",S);mxUtils.extend(na,mxActor);na.prototype.dx=20;na.prototype.dy=20;na.prototype.redrawPath=function(b,d,c,g,e){d=Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,
+mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,c),new mxPoint((g+d)/2,c),new mxPoint((g+d)/2,e),new mxPoint((g-d)/2,e),new mxPoint((g-d)/2,c),new mxPoint(0,c)],this.isRounded,k,!0);b.end()};mxCellRenderer.registerShape("tee",na);mxUtils.extend(ca,mxActor);ca.prototype.arrowWidth=.3;ca.prototype.arrowSize=.2;ca.prototype.redrawPath=function(b,d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",
+this.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(0,k)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("singleArrow",ca);mxUtils.extend(Z,mxActor);Z.prototype.redrawPath=function(b,
+d,c,g,e){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth))));d=g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize))));c=(e-k)/2;var k=c+k,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,e/2),new mxPoint(d,0),new mxPoint(d,c),new mxPoint(g-d,c),new mxPoint(g-d,0),new mxPoint(g,e/2),new mxPoint(g-d,e),new mxPoint(g-d,k),new mxPoint(d,
+k),new mxPoint(d,e)],this.isRounded,f,!0);b.end()};mxCellRenderer.registerShape("doubleArrow",Z);mxUtils.extend(ka,mxActor);ka.prototype.size=.1;ka.prototype.fixedSize=20;ka.prototype.redrawPath=function(b,d,c,g,e){d="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):g*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.moveTo(d,0);b.lineTo(g,0);b.quadTo(g-2*d,e/2,g,e);b.lineTo(d,
+e);b.quadTo(d-2*d,e/2,d,0);b.close();b.end()};mxCellRenderer.registerShape("dataStorage",ka);mxUtils.extend(ya,mxActor);ya.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.close();b.end()};mxCellRenderer.registerShape("or",ya);mxUtils.extend(za,mxActor);za.prototype.redrawPath=function(b,d,c,g,e){b.moveTo(0,0);b.quadTo(g,0,g,e/2);b.quadTo(g,e,0,e);b.quadTo(g/2,e/2,0,0);b.close();b.end()};mxCellRenderer.registerShape("xor",za);mxUtils.extend(ta,mxActor);
+ta.prototype.size=20;ta.prototype.isRoundable=function(){return!0};ta.prototype.redrawPath=function(b,d,c,g,e){d=Math.min(g/2,Math.min(e,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(d,0),new mxPoint(g-d,0),new mxPoint(g,.8*d),new mxPoint(g,e),new mxPoint(0,e),new mxPoint(0,.8*d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("loopLimit",ta);mxUtils.extend(ua,
+mxActor);ua.prototype.size=.375;ua.prototype.isRoundable=function(){return!0};ua.prototype.redrawPath=function(b,d,c,g,e){d=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(b,[new mxPoint(0,0),new mxPoint(g,0),new mxPoint(g,e-d),new mxPoint(g/2,e),new mxPoint(0,e-d)],this.isRounded,c,!0);b.end()};mxCellRenderer.registerShape("offPageConnector",ua);mxUtils.extend(aa,
+mxEllipse);aa.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.begin();b.moveTo(d+g/2,c+e);b.lineTo(d+g,c+e);b.end();b.stroke()};mxCellRenderer.registerShape("tapeData",aa);mxUtils.extend(Q,mxEllipse);Q.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,c+e/2);b.lineTo(d+g,c+e/2);b.end();b.stroke();b.begin();b.moveTo(d+g/2,c);b.lineTo(d+g/2,c+e);b.end();
+b.stroke()};mxCellRenderer.registerShape("orEllipse",Q);mxUtils.extend(Fa,mxEllipse);Fa.prototype.paintVertexShape=function(b,d,c,g,e){mxEllipse.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d+.145*g,c+.145*e);b.lineTo(d+.855*g,c+.855*e);b.end();b.stroke();b.begin();b.moveTo(d+.855*g,c+.145*e);b.lineTo(d+.145*g,c+.855*e);b.end();b.stroke()};mxCellRenderer.registerShape("sumEllipse",Fa);mxUtils.extend(Ga,mxRhombus);Ga.prototype.paintVertexShape=function(b,d,c,
g,e){mxRhombus.prototype.paintVertexShape.apply(this,arguments);b.setShadow(!1);b.begin();b.moveTo(d,c+e/2);b.lineTo(d+g,c+e/2);b.end();b.stroke()};mxCellRenderer.registerShape("sortShape",Ga);mxUtils.extend(wa,mxEllipse);wa.prototype.paintVertexShape=function(b,d,c,g,e){b.begin();b.moveTo(d,c);b.lineTo(d+g,c);b.lineTo(d+g/2,c+e/2);b.close();b.fillAndStroke();b.begin();b.moveTo(d,c+e);b.lineTo(d+g,c+e);b.lineTo(d+g/2,c+e/2);b.close();b.fillAndStroke()};mxCellRenderer.registerShape("collate",wa);mxUtils.extend(Aa,
mxEllipse);Aa.prototype.paintVertexShape=function(b,d,c,g,e){var k=b.state.strokeWidth/2,f=10+2*k,l=c+e-f/2;b.begin();b.moveTo(d,c);b.lineTo(d,c+e);b.moveTo(d+k,l);b.lineTo(d+k+f,l-f/2);b.moveTo(d+k,l);b.lineTo(d+k+f,l+f/2);b.moveTo(d+k,l);b.lineTo(d+g-k,l);b.moveTo(d+g,c);b.lineTo(d+g,c+e);b.moveTo(d+g-k,l);b.lineTo(d+g-f-k,l-f/2);b.moveTo(d+g-k,l);b.lineTo(d+g-f-k,l+f/2);b.end();b.stroke()};mxCellRenderer.registerShape("dimension",Aa);mxUtils.extend(xa,mxEllipse);xa.prototype.drawHidden=!0;xa.prototype.paintVertexShape=
function(b,d,c,g,e){this.outline||b.setStrokeColor(null);if(null!=this.style){var k=b.pointerEvents,f=null!=this.fill&&this.fill!=mxConstants.NONE;"1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1")||f||(b.pointerEvents=!1);var l="1"==mxUtils.getValue(this.style,"top","1"),m="1"==mxUtils.getValue(this.style,"left","1"),A="1"==mxUtils.getValue(this.style,"right","1"),p="1"==mxUtils.getValue(this.style,"bottom","1");this.drawHidden||f||this.outline||l||A||p||m?(b.rect(d,c,g,e),b.fill(),
@@ -2860,9 +2860,9 @@ dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Ro
dispName:"Default"},{val:"square",dispName:"Square"},{val:"rounded",dispName:"Round"},{val:"snip",dispName:"Snip"},{val:"invRound",dispName:"Inv. Round"},{val:"fold",dispName:"Fold"}]}];U.prototype.paintVertexShape=function(b,d,c,g,e){b.translate(d,c);this.strictDrawShape(b,0,0,g,e)};U.prototype.strictDrawShape=function(b,d,c,g,e,k){var f=k&&k.rectStyle?k.rectStyle:mxUtils.getValue(this.style,"rectStyle",this.rectStyle),l=k&&k.absoluteCornerSize?k.absoluteCornerSize:mxUtils.getValue(this.style,"absoluteCornerSize",
this.absoluteCornerSize),m=k&&k.size?k.size:Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),p=k&&k.rectOutline?k.rectOutline:mxUtils.getValue(this.style,"rectOutline",this.rectOutline),x=k&&k.indent?k.indent:Math.max(0,Math.min(g,parseFloat(mxUtils.getValue(this.style,"indent",this.indent)))),u=k&&k.dashed?k.dashed:mxUtils.getValue(this.style,"dashed",!1),A=k&&k.dashPattern?k.dashPattern:mxUtils.getValue(this.style,"dashPattern",null),n=k&&k.relIndent?k.relIndent:
Math.max(0,Math.min(50,x)),t=k&&k.top?k.top:mxUtils.getValue(this.style,"top",!0),v=k&&k.right?k.right:mxUtils.getValue(this.style,"right",!0),y=k&&k.bottom?k.bottom:mxUtils.getValue(this.style,"bottom",!0),C=k&&k.left?k.left:mxUtils.getValue(this.style,"left",!0),z=k&&k.topLeftStyle?k.topLeftStyle:mxUtils.getValue(this.style,"topLeftStyle","default"),J=k&&k.topRightStyle?k.topRightStyle:mxUtils.getValue(this.style,"topRightStyle","default"),q=k&&k.bottomRightStyle?k.bottomRightStyle:mxUtils.getValue(this.style,
-"bottomRightStyle","default"),K=k&&k.bottomLeftStyle?k.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),B=k&&k.fillColor?k.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");k&&k.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var M=k&&k.strokeWidth?k.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),X=k&&k.fillColor2?k.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),ca=k&&k.gradientColor2?k.gradientColor2:mxUtils.getValue(this.style,
-"gradientColor2","none"),Ja=k&&k.gradientDirection2?k.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),va=k&&k.opacity?k.opacity:mxUtils.getValue(this.style,"opacity","100"),ka=Math.max(0,Math.min(50,m));k=U.prototype;b.setDashed(u);A&&""!=A&&b.setDashPattern(A);b.setStrokeWidth(M);m=Math.min(.5*e,.5*g,m);l||(m=ka*Math.min(g,e)/100);m=Math.min(m,.5*Math.min(g,e));l||(x=Math.min(n*Math.min(g,e)/100));x=Math.min(x,.5*Math.min(g,e)-m);(t||v||y||C)&&"frame"!=p&&(b.begin(),
-t?k.moveNW(b,d,c,g,e,f,z,m,C):b.moveTo(0,0),t&&k.paintNW(b,d,c,g,e,f,z,m,C),k.paintTop(b,d,c,g,e,f,J,m,v),v&&k.paintNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),y&&k.paintSE(b,d,c,g,e,f,q,m,v),k.paintBottom(b,d,c,g,e,f,K,m,C),C&&k.paintSW(b,d,c,g,e,f,K,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(X),u=l=va,"none"==X&&(l=0),"none"==ca&&(u=0),b.setGradient(X,ca,0,0,g,e,Ja,l,u),b.begin(),t?k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C):b.moveTo(x,0),k.paintLeftInner(b,
+"bottomRightStyle","default"),K=k&&k.bottomLeftStyle?k.bottomLeftStyle:mxUtils.getValue(this.style,"bottomLeftStyle","default"),B=k&&k.fillColor?k.fillColor:mxUtils.getValue(this.style,"fillColor","#ffffff");k&&k.strokeColor||mxUtils.getValue(this.style,"strokeColor","#000000");var M=k&&k.strokeWidth?k.strokeWidth:mxUtils.getValue(this.style,"strokeWidth","1"),V=k&&k.fillColor2?k.fillColor2:mxUtils.getValue(this.style,"fillColor2","none"),ea=k&&k.gradientColor2?k.gradientColor2:mxUtils.getValue(this.style,
+"gradientColor2","none"),Ja=k&&k.gradientDirection2?k.gradientDirection2:mxUtils.getValue(this.style,"gradientDirection2","south"),va=k&&k.opacity?k.opacity:mxUtils.getValue(this.style,"opacity","100"),ja=Math.max(0,Math.min(50,m));k=U.prototype;b.setDashed(u);A&&""!=A&&b.setDashPattern(A);b.setStrokeWidth(M);m=Math.min(.5*e,.5*g,m);l||(m=ja*Math.min(g,e)/100);m=Math.min(m,.5*Math.min(g,e));l||(x=Math.min(n*Math.min(g,e)/100));x=Math.min(x,.5*Math.min(g,e)-m);(t||v||y||C)&&"frame"!=p&&(b.begin(),
+t?k.moveNW(b,d,c,g,e,f,z,m,C):b.moveTo(0,0),t&&k.paintNW(b,d,c,g,e,f,z,m,C),k.paintTop(b,d,c,g,e,f,J,m,v),v&&k.paintNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),y&&k.paintSE(b,d,c,g,e,f,q,m,v),k.paintBottom(b,d,c,g,e,f,K,m,C),C&&k.paintSW(b,d,c,g,e,f,K,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),b.close(),b.fill(),b.setShadow(!1),b.setFillColor(V),u=l=va,"none"==V&&(l=0),"none"==ea&&(u=0),b.setGradient(V,ea,0,0,g,e,Ja,l,u),b.begin(),t?k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C):b.moveTo(x,0),k.paintLeftInner(b,
d,c,g,e,f,K,m,x,y,C),C&&y&&k.paintSWInner(b,d,c,g,e,f,K,m,x,y),k.paintBottomInner(b,d,c,g,e,f,q,m,x,v,y),y&&v&&k.paintSEInner(b,d,c,g,e,f,q,m,x),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,v),v&&t&&k.paintNEInner(b,d,c,g,e,f,J,m,x),k.paintTopInner(b,d,c,g,e,f,z,m,x,C,t),t&&C&&k.paintNWInner(b,d,c,g,e,f,z,m,x),b.fill(),"none"==B&&(b.begin(),k.paintFolds(b,d,c,g,e,f,z,J,q,K,m,t,v,y,C),b.stroke()));t||v||y||!C?t||v||!y||C?!t&&!v&&y&&C?"frame"!=p?(b.begin(),k.moveSE(b,d,c,g,e,f,q,m,v),k.paintBottom(b,d,c,g,
e,f,K,m,C),k.paintSW(b,d,c,g,e,f,K,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),"double"==p&&(k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,K,m,x,y,C),k.paintSWInner(b,d,c,g,e,f,K,m,x,y),k.paintBottomInner(b,d,c,g,e,f,q,m,x,v,y)),b.stroke()):(b.begin(),k.moveSE(b,d,c,g,e,f,q,m,v),k.paintBottom(b,d,c,g,e,f,K,m,C),k.paintSW(b,d,c,g,e,f,K,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),k.lineNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,K,m,x,y,C),k.paintSWInner(b,d,c,g,e,f,K,m,x,y),k.paintBottomInner(b,
d,c,g,e,f,q,m,x,v,y),b.close(),b.fillAndStroke()):t||!v||y||C?!t&&v&&!y&&C?"frame"!=p?(b.begin(),k.moveSW(b,d,c,g,e,f,z,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),"double"==p&&(k.moveNWInner(b,d,c,g,e,f,z,m,x,t,C),k.paintLeftInner(b,d,c,g,e,f,K,m,x,y,C)),b.stroke(),b.begin(),k.moveNE(b,d,c,g,e,f,J,m,t),k.paintRight(b,d,c,g,e,f,q,m,y),"double"==p&&(k.moveSEInner(b,d,c,g,e,f,q,m,x,y),k.paintRightInner(b,d,c,g,e,f,J,m,x,t,v)),b.stroke()):(b.begin(),k.moveSW(b,d,c,g,e,f,z,m,y),k.paintLeft(b,d,c,g,e,f,z,m,t),
@@ -2907,14 +2907,14 @@ b.moveTo(g.x-x/2-u/2,g.y-u/2+x/2);b.lineTo(g.x+u/2-3*x/2,g.y-3*u/2-x/2);b.stroke
b.moveTo(g.x-x/2-u/2,g.y-u/2+x/2);b.lineTo(g.x+u/2-3*x/2,g.y-3*u/2-x/2);b.moveTo(g.x-x/2+u/2,g.y-u/2-x/2);b.lineTo(g.x-u/2-3*x/2,g.y-3*u/2+x/2);b.stroke()}});mxMarker.addMarker("circle",Na);mxMarker.addMarker("circlePlus",function(b,d,c,g,e,k,f,m,l,p){var x=g.clone(),u=Na.apply(this,arguments),t=e*(f+2*l),n=k*(f+2*l);return function(){u.apply(this,arguments);b.begin();b.moveTo(x.x-e*l,x.y-k*l);b.lineTo(x.x-2*t+e*l,x.y-2*n+k*l);b.moveTo(x.x-t-n+k*l,x.y-n+t-e*l);b.lineTo(x.x+n-t-k*l,x.y-n-t+e*l);b.stroke()}});
mxMarker.addMarker("halfCircle",function(b,d,c,g,e,k,f,m,l,p){var x=e*(f+l+1),u=k*(f+l+1),t=g.clone();g.x-=x;g.y-=u;return function(){b.begin();b.moveTo(t.x-u,t.y+x);b.quadTo(g.x-u,g.y+x,g.x,g.y);b.quadTo(g.x+u,g.y-x,t.x+u,t.y-x);b.stroke()}});mxMarker.addMarker("async",function(b,d,c,g,e,k,f,m,l,p){d=e*l*1.118;c=k*l*1.118;e*=f+l;k*=f+l;var x=g.clone();x.x-=d;x.y-=c;g.x+=1*-e-d;g.y+=1*-k-c;return function(){b.begin();b.moveTo(x.x,x.y);m?b.lineTo(x.x-e-k/2,x.y-k+e/2):b.lineTo(x.x+k/2-e,x.y-k-e/2);
b.lineTo(x.x-e,x.y-k);b.close();p?b.fillAndStroke():b.stroke()}});mxMarker.addMarker("openAsync",function(b){b=null!=b?b:2;return function(d,c,g,e,k,f,m,l,p,x){k*=m+p;f*=m+p;var u=e.clone();return function(){d.begin();d.moveTo(u.x,u.y);l?d.lineTo(u.x-k-f/b,u.y-f+k/b):d.lineTo(u.x+f/b-k,u.y-f-k/b);d.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var ab=function(b,d,c){return Ma(b,["width"],d,function(d,g,e,k,f){f=b.shape.getEdgeWidth()*b.view.scale+c;return new mxPoint(k.x+g*d/4+e*f/2,k.y+
-e*d/4-g*f/2)},function(d,g,e,k,f,m){d=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,f.x,f.y,m.x,m.y));b.style.width=Math.round(2*d)/b.view.scale-c})},Ma=function(b,d,c,g,e){return ia(b,d,function(d){var e=b.absolutePoints,k=e.length-1;d=b.view.translate;var f=b.view.scale,m=c?e[0]:e[k],e=c?e[1]:e[k-1],k=e.x-m.x,l=e.y-m.y,p=Math.sqrt(k*k+l*l),m=g.call(this,p,k/p,l/p,m,e);return new mxPoint(m.x/f-d.x,m.y/f-d.y)},function(d,g,k){var f=b.absolutePoints,m=f.length-1;d=b.view.translate;var l=b.view.scale,p=c?f[0]:
-f[m],f=c?f[1]:f[m-1],m=f.x-p.x,x=f.y-p.y,u=Math.sqrt(m*m+x*x);g.x=(g.x+d.x)*l;g.y=(g.y+d.y)*l;e.call(this,u,m/u,x/u,p,f,g,k)})},Va=function(b){return function(d){return[ia(d,["arrowWidth","arrowSize"],function(d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",da.prototype.arrowWidth))),g=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",da.prototype.arrowSize)));return new mxPoint(d.x+(1-g)*d.width,d.y+(1-c)*d.height/2)},function(d,c){this.state.style.arrowWidth=
-Math.max(0,Math.min(1,Math.abs(d.y+d.height/2-c.y)/d.height*2));this.state.style.arrowSize=Math.max(0,Math.min(b,(d.x+d.width-c.x)/d.width))})]}},Wa=function(b){return function(d){return[ia(d,["size"],function(d){var c=Math.max(0,Math.min(.5*d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(d.x,d.y+c)},function(b,d){this.state.style.size=Math.max(0,d.y-b.y)},!0)]}},Ta=function(b,d,c){return function(g){var e=[ia(g,["size"],function(c){var g=Math.max(0,Math.min(c.width,
-Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*b;return new mxPoint(c.x+g,c.y+g)},function(d,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,c.x-d.x),Math.min(d.height,c.y-d.y)))/b)},!1)];c&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ia(g));return e}},Oa=function(b,d,c,g,e){c=null!=c?c:.5;return function(k){var f=[ia(k,["size"],function(d){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,g=parseFloat(mxUtils.getValue(this.state.style,
-"size",c?e:b));return new mxPoint(d.x+Math.max(0,Math.min(.5*d.width,g*(c?1:d.width))),d.getCenterY())},function(b,d,g){b=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(c,(d.x-b.x)/b.width));this.state.style.size=b},!1,g)];d&&mxUtils.getValue(k.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(Ia(k));return f}},Xa=function(b,d,c){b=null!=b?b:.5;return function(g){var e=[ia(g,["size"],function(g){var e=null!=c?"0"!=mxUtils.getValue(this.state.style,"fixedSize",
+e*d/4-g*f/2)},function(d,g,e,k,f,m){d=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,f.x,f.y,m.x,m.y));b.style.width=Math.round(2*d)/b.view.scale-c})},Ma=function(b,d,c,g,e){return ha(b,d,function(d){var e=b.absolutePoints,k=e.length-1;d=b.view.translate;var f=b.view.scale,m=c?e[0]:e[k],e=c?e[1]:e[k-1],k=e.x-m.x,l=e.y-m.y,p=Math.sqrt(k*k+l*l),m=g.call(this,p,k/p,l/p,m,e);return new mxPoint(m.x/f-d.x,m.y/f-d.y)},function(d,g,k){var f=b.absolutePoints,m=f.length-1;d=b.view.translate;var l=b.view.scale,p=c?f[0]:
+f[m],f=c?f[1]:f[m-1],m=f.x-p.x,x=f.y-p.y,u=Math.sqrt(m*m+x*x);g.x=(g.x+d.x)*l;g.y=(g.y+d.y)*l;e.call(this,u,m/u,x/u,p,f,g,k)})},Va=function(b){return function(d){return[ha(d,["arrowWidth","arrowSize"],function(d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",ca.prototype.arrowWidth))),g=Math.max(0,Math.min(b,mxUtils.getValue(this.state.style,"arrowSize",ca.prototype.arrowSize)));return new mxPoint(d.x+(1-g)*d.width,d.y+(1-c)*d.height/2)},function(d,c){this.state.style.arrowWidth=
+Math.max(0,Math.min(1,Math.abs(d.y+d.height/2-c.y)/d.height*2));this.state.style.arrowSize=Math.max(0,Math.min(b,(d.x+d.width-c.x)/d.width))})]}},Wa=function(b){return function(d){return[ha(d,["size"],function(d){var c=Math.max(0,Math.min(.5*d.height,parseFloat(mxUtils.getValue(this.state.style,"size",b))));return new mxPoint(d.x,d.y+c)},function(b,d){this.state.style.size=Math.max(0,d.y-b.y)},!0)]}},Ta=function(b,d,c){return function(g){var e=[ha(g,["size"],function(c){var g=Math.max(0,Math.min(c.width,
+Math.min(c.height,parseFloat(mxUtils.getValue(this.state.style,"size",d)))))*b;return new mxPoint(c.x+g,c.y+g)},function(d,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(d.width,c.x-d.x),Math.min(d.height,c.y-d.y)))/b)},!1)];c&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ia(g));return e}},Oa=function(b,d,c,g,e){c=null!=c?c:.5;return function(k){var f=[ha(k,["size"],function(d){var c=null!=e?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,g=parseFloat(mxUtils.getValue(this.state.style,
+"size",c?e:b));return new mxPoint(d.x+Math.max(0,Math.min(.5*d.width,g*(c?1:d.width))),d.getCenterY())},function(b,d,g){b=null!=e&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?d.x-b.x:Math.max(0,Math.min(c,(d.x-b.x)/b.width));this.state.style.size=b},!1,g)];d&&mxUtils.getValue(k.style,mxConstants.STYLE_ROUNDED,!1)&&f.push(Ia(k));return f}},Xa=function(b,d,c){b=null!=b?b:.5;return function(g){var e=[ha(g,["size"],function(g){var e=null!=c?"0"!=mxUtils.getValue(this.state.style,"fixedSize",
"0"):null,k=Math.max(0,parseFloat(mxUtils.getValue(this.state.style,"size",e?c:d)));return new mxPoint(g.x+Math.min(.75*g.width*b,k*(e?.75:.75*g.width)),g.y+g.height/4)},function(d,g){var e=null!=c&&"0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?g.x-d.x:Math.max(0,Math.min(b,(g.x-d.x)/d.width*.75));this.state.style.size=e},!1,!0)];mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&e.push(Ia(g));return e}},La=function(){return function(b){var d=[];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,
-!1)&&d.push(Ia(b));return d}},Ia=function(b,d){return ia(b,[mxConstants.STYLE_ARCSIZE],function(c){var g=null!=d?d:c.height/8;if("1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+g)}e=Math.max(0,parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/
-2,c.height/2),Math.min(c.width,c.height)*e),c.y+g)},function(d,c,g){"1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(d.width,2*(d.x+d.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(d.width-c.x+d.x)/Math.min(d.width,d.height))))})},ia=function(b,d,c,g,e,k,f){var m=new mxHandle(b,null,mxVertexHandler.prototype.secondaryHandleImage);m.execute=function(b){for(var c=
+!1)&&d.push(Ia(b));return d}},Ia=function(b,d){return ha(b,[mxConstants.STYLE_ARCSIZE],function(c){var g=null!=d?d:c.height/8;if("1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var e=mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;return new mxPoint(c.x+c.width-Math.min(c.width/2,e),c.y+g)}e=Math.max(0,parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(c.x+c.width-Math.min(Math.max(c.width/
+2,c.height/2),Math.min(c.width,c.height)*e),c.y+g)},function(d,c,g){"1"==mxUtils.getValue(b.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(d.width,2*(d.x+d.width-c.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.min(50,Math.max(0,100*(d.width-c.x+d.x)/Math.min(d.width,d.height))))})},ha=function(b,d,c,g,e,k,f){var m=new mxHandle(b,null,mxVertexHandler.prototype.secondaryHandleImage);m.execute=function(b){for(var c=
0;c<d.length;c++)this.copyStyle(d[c]);f&&f(b)};m.getPosition=c;m.setPosition=g;m.ignoreGrid=null!=e?e:!0;if(k){var l=m.positionChanged;m.positionChanged=function(){l.apply(this,arguments);b.view.invalidate(this.state.cell);b.view.validate()}}return m},Pa={link:function(b){return[ab(b,!0,10),ab(b,!1,10)]},flexArrow:function(b){var d=b.view.graph.gridSize/b.view.scale,c=[];mxUtils.getValue(b.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(c.push(Ma(b,["width",mxConstants.STYLE_STARTSIZE,
mxConstants.STYLE_ENDSIZE],!0,function(d,c,g,e,k){d=(b.shape.getEdgeWidth()-b.shape.strokewidth)*b.view.scale;k=3*mxUtils.getNumber(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+c*(k+b.shape.strokewidth*b.view.scale)+g*d/2,e.y+g*(k+b.shape.strokewidth*b.view.scale)-c*d/2)},function(c,g,e,k,f,m,l){c=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,f.x,f.y,m.x,m.y));g=mxUtils.ptLineDist(k.x,k.y,k.x+e,k.y-g,m.x,m.y);b.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*
(g-b.shape.strokewidth)/3)/100/b.view.scale;b.style.width=Math.round(2*c)/b.view.scale;if(mxEvent.isShiftDown(l.getEvent())||mxEvent.isControlDown(l.getEvent()))b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE];mxEvent.isAltDown(l.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_STARTSIZE])-parseFloat(b.style[mxConstants.STYLE_ENDSIZE]))<d/6&&(b.style[mxConstants.STYLE_STARTSIZE]=b.style[mxConstants.STYLE_ENDSIZE])})),c.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,
@@ -2925,28 +2925,28 @@ c*(k+b.shape.strokewidth*b.view.scale)-g*d/2,e.y+g*(k+b.shape.strokewidth*b.view
mxEvent.isAltDown(l.getEvent())||Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE])})),c.push(Ma(b,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(d,c,g,e,k){d=(b.shape.getEndArrowWidth()-b.shape.strokewidth)*b.view.scale;k=3*mxUtils.getNumber(b.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*b.view.scale;return new mxPoint(e.x+
c*(k+b.shape.strokewidth*b.view.scale)-g*d/2,e.y+g*(k+b.shape.strokewidth*b.view.scale)+c*d/2)},function(c,g,e,k,f,m,l){c=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,f.x,f.y,m.x,m.y));g=mxUtils.ptLineDist(k.x,k.y,k.x+e,k.y-g,m.x,m.y);b.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(g-b.shape.strokewidth)/3)/100/b.view.scale;b.style.endWidth=Math.max(0,Math.round(2*c)-b.shape.getEdgeWidth())/b.view.scale;if(mxEvent.isShiftDown(l.getEvent())||mxEvent.isControlDown(l.getEvent()))b.style[mxConstants.STYLE_STARTSIZE]=
b.style[mxConstants.STYLE_ENDSIZE],b.style.startWidth=b.style.endWidth;mxEvent.isAltDown(l.getEvent())||(Math.abs(parseFloat(b.style[mxConstants.STYLE_ENDSIZE])-parseFloat(b.style[mxConstants.STYLE_STARTSIZE]))<d/6&&(b.style[mxConstants.STYLE_ENDSIZE]=b.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(b.style.endWidth)-parseFloat(b.style.startWidth))<d&&(b.style.endWidth=b.style.startWidth))})));return c},swimlane:function(b){var d=[];if(mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED)){var c=
-parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(Ia(b,c/2))}d.push(ia(b,[mxConstants.STYLE_STARTSIZE],function(d){var c=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,c))):new mxPoint(d.x+Math.max(0,Math.min(d.width,c)),d.getCenterY())},function(d,c){b.style[mxConstants.STYLE_STARTSIZE]=
+parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));d.push(Ia(b,c/2))}d.push(ha(b,[mxConstants.STYLE_STARTSIZE],function(d){var c=parseFloat(mxUtils.getValue(b.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(b.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(d.getCenterX(),d.y+Math.max(0,Math.min(d.height,c))):new mxPoint(d.x+Math.max(0,Math.min(d.width,c)),d.getCenterY())},function(d,c){b.style[mxConstants.STYLE_STARTSIZE]=
1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0,Math.min(d.height,c.y-d.y))):Math.round(Math.max(0,Math.min(d.width,c.x-d.x)))},!1,null,function(d){var c=b.view.graph;if(!mxEvent.isShiftDown(d.getEvent())&&!mxEvent.isControlDown(d.getEvent())&&(c.isTableRow(b.cell)||c.isTableCell(b.cell))){d=c.getSwimlaneDirection(b.style);for(var g=c.model.getParent(b.cell),g=c.model.getChildCells(g,!0),e=[],k=0;k<g.length;k++)g[k]!=b.cell&&c.isSwimlane(g[k])&&c.getSwimlaneDirection(c.getCurrentCellStyle(g[k]))==
-d&&e.push(g[k]);c.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],e)}}));return d},label:La(),ext:La(),rectangle:La(),triangle:La(),rhombus:La(),umlLifeline:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",X.prototype.size))));return new mxPoint(b.getCenterX(),b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},umlFrame:function(b){return[ia(b,
-["width","height"],function(b){var d=Math.max(ca.prototype.corner,Math.min(b.width,mxUtils.getValue(this.state.style,"width",ca.prototype.width))),c=Math.max(1.5*ca.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",ca.prototype.height)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.width=Math.round(Math.max(ca.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*ca.prototype.corner,Math.min(b.height,d.y-b.y)))},
-!1)]},process:function(b){var d=[ia(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",H.prototype.size));return d?new mxPoint(b.x+c,b.y+b.height/4):new mxPoint(b.x+b.width*c,b.y+b.height/4)},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*b.width,d.x-b.x)):Math.max(0,Math.min(.5,(d.x-b.x)/b.width));this.state.style.size=c},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,
-!1)&&d.push(Ia(b));return d},cross:function(b){return[ia(b,["size"],function(b){var d=Math.min(b.width,b.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",Ca.prototype.size)))*d/2;return new mxPoint(b.getCenterX()-d,b.getCenterY()-d)},function(b,d){var c=Math.min(b.width,b.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,b.getCenterY()-d.y)/c*2,Math.max(0,b.getCenterX()-d.x)/c*2)))})]},note:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,
-Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},note2:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},
-function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ia(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",ja.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));
-return d},dataStorage:function(b){return[ia(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",d?la.prototype.fixedSize:la.prototype.size));return new mxPoint(b.x+b.width-c*(d?1:b.width),b.getCenterY())},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=c},!1)]},callout:function(b){var d=
-[ia(b,["size","position"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",N.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",N.prototype.position)));mxUtils.getValue(this.state.style,"base",N.prototype.base);return new mxPoint(b.x+c*b.width,b.y+b.height-d)},function(b,d){mxUtils.getValue(this.state.style,"base",N.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(b.height,b.y+b.height-d.y)));this.state.style.position=
-Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ia(b,["position2"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",N.prototype.position2)));return new mxPoint(b.x+d*b.width,b.y+b.height)},function(b,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ia(b,["base"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",N.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
+d&&e.push(g[k]);c.setCellStyles(mxConstants.STYLE_STARTSIZE,b.style[mxConstants.STYLE_STARTSIZE],e)}}));return d},label:La(),ext:La(),rectangle:La(),triangle:La(),rhombus:La(),umlLifeline:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",ea.prototype.size))));return new mxPoint(b.getCenterX(),b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},umlFrame:function(b){return[ha(b,
+["width","height"],function(b){var d=Math.max(V.prototype.corner,Math.min(b.width,mxUtils.getValue(this.state.style,"width",V.prototype.width))),c=Math.max(1.5*V.prototype.corner,Math.min(b.height,mxUtils.getValue(this.state.style,"height",V.prototype.height)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.width=Math.round(Math.max(V.prototype.corner,Math.min(b.width,d.x-b.x)));this.state.style.height=Math.round(Math.max(1.5*V.prototype.corner,Math.min(b.height,d.y-b.y)))},!1)]},
+process:function(b){var d=[ha(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",H.prototype.size));return d?new mxPoint(b.x+c,b.y+b.height/4):new mxPoint(b.x+b.width*c,b.y+b.height/4)},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(.5*b.width,d.x-b.x)):Math.max(0,Math.min(.5,(d.x-b.x)/b.width));this.state.style.size=c},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,
+!1)&&d.push(Ia(b));return d},cross:function(b){return[ha(b,["size"],function(b){var d=Math.min(b.width,b.height),d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",Ca.prototype.size)))*d/2;return new mxPoint(b.getCenterX()-d,b.getCenterY()-d)},function(b,d){var c=Math.min(b.width,b.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,b.getCenterY()-d.y)/c*2,Math.max(0,b.getCenterX()-d.x)/c*2)))})]},note:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,
+Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",k.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},note2:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size)))));return new mxPoint(b.x+b.width-d,b.y+d)},
+function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(b.width,b.x+b.width-d.x),Math.min(b.height,d.y-b.y))))})]},manualInput:function(b){var d=[ha(b,["size"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",ia.prototype.size)));return new mxPoint(b.x+b.width/4,b.y+3*d/4)},function(b,d){this.state.style.size=Math.round(Math.max(0,Math.min(b.height,4*(d.y-b.y)/3)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));
+return d},dataStorage:function(b){return[ha(b,["size"],function(b){var d="0"!=mxUtils.getValue(this.state.style,"fixedSize","0"),c=parseFloat(mxUtils.getValue(this.state.style,"size",d?ka.prototype.fixedSize:ka.prototype.size));return new mxPoint(b.x+b.width-c*(d?1:b.width),b.getCenterY())},function(b,d){var c="0"!=mxUtils.getValue(this.state.style,"fixedSize","0")?Math.max(0,Math.min(b.width,b.x+b.width-d.x)):Math.max(0,Math.min(1,(b.x+b.width-d.x)/b.width));this.state.style.size=c},!1)]},callout:function(b){var d=
+[ha(b,["size","position"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",N.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",N.prototype.position)));mxUtils.getValue(this.state.style,"base",N.prototype.base);return new mxPoint(b.x+c*b.width,b.y+b.height-d)},function(b,d){mxUtils.getValue(this.state.style,"base",N.prototype.base);this.state.style.size=Math.round(Math.max(0,Math.min(b.height,b.y+b.height-d.y)));this.state.style.position=
+Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ha(b,["position2"],function(b){var d=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position2",N.prototype.position2)));return new mxPoint(b.x+d*b.width,b.y+b.height)},function(b,d){this.state.style.position2=Math.round(100*Math.max(0,Math.min(1,(d.x-b.x)/b.width)))/100},!1),ha(b,["base"],function(b){var d=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"size",N.prototype.size))),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,
"position",N.prototype.position))),g=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"base",N.prototype.base)));return new mxPoint(b.x+Math.min(b.width,c*b.width+g),b.y+b.height-d)},function(b,d){var c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"position",N.prototype.position)));this.state.style.base=Math.round(Math.max(0,Math.min(b.width,d.x-b.x-c*b.width)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));return d},internalStorage:function(b){var d=
-[ia(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ma.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ma.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));return d},module:function(b){return[ia(b,
-["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",pa.prototype.jettyWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"jettyHeight",pa.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*c)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ia(b,
-["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",ra.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",ra.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},tee:function(b){return[ia(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
-"dx",oa.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",oa.prototype.dy)));return new mxPoint(b.x+(b.width+d)/2,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,2*Math.min(b.width/2,d.x-b.x-b.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},singleArrow:Va(1),doubleArrow:Va(.5),folder:function(b){return[ia(b,["tabWidth","tabHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
+[ha(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",la.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",la.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)];mxUtils.getValue(b.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(Ia(b));return d},module:function(b){return[ha(b,
+["jettyWidth","jettyHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"jettyWidth",oa.prototype.jettyWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"jettyHeight",oa.prototype.jettyHeight)));return new mxPoint(b.x+d/2,b.y+2*c)},function(b,d){this.state.style.jettyWidth=Math.round(2*Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.jettyHeight=Math.round(Math.max(0,Math.min(b.height,d.y-b.y))/2)})]},corner:function(b){return[ha(b,
+["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,"dx",qa.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",qa.prototype.dy)));return new mxPoint(b.x+d,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,Math.min(b.width,d.x-b.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},tee:function(b){return[ha(b,["dx","dy"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
+"dx",na.prototype.dx))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"dy",na.prototype.dy)));return new mxPoint(b.x+(b.width+d)/2,b.y+c)},function(b,d){this.state.style.dx=Math.round(Math.max(0,2*Math.min(b.width/2,d.x-b.x-b.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},singleArrow:Va(1),doubleArrow:Va(.5),folder:function(b){return[ha(b,["tabWidth","tabHeight"],function(b){var d=Math.max(0,Math.min(b.width,mxUtils.getValue(this.state.style,
"tabWidth",t.prototype.tabWidth))),c=Math.max(0,Math.min(b.height,mxUtils.getValue(this.state.style,"tabHeight",t.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",t.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(d=b.width-d);return new mxPoint(b.x+d,b.y+c)},function(b,d){var c=Math.max(0,Math.min(b.width,d.x-b.x));mxUtils.getValue(this.state.style,"tabPosition",t.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=b.width-c);this.state.style.tabWidth=Math.round(c);this.state.style.tabHeight=
-Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},document:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",D.prototype.size))));return new mxPoint(b.x+3*b.width/4,b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},tape:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",I.prototype.size))));
-return new mxPoint(b.getCenterX(),b.y+d*b.height/2)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(d.y-b.y)/b.height*2))},!1)]},isoCube2:function(b){return[ia(b,["isoAngle"],function(b){var d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",p.isoAngle))))*Math.PI/200;return new mxPoint(b.x,b.y+Math.min(b.width*Math.tan(d),.5*b.height))},function(b,d){this.state.style.isoAngle=Math.max(0,50*(d.y-b.y)/b.height)},!0)]},cylinder2:Wa(m.prototype.size),cylinder3:Wa(u.prototype.size),
-offPageConnector:function(b){return[ia(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",fa.prototype.size))));return new mxPoint(b.getCenterX(),b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},"mxgraph.basic.rect":function(b){var d=[Graph.createHandle(b,["size"],function(b){var d=Math.max(0,Math.min(b.width/2,b.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));
+Math.round(Math.max(0,Math.min(b.height,d.y-b.y)))},!1)]},document:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",D.prototype.size))));return new mxPoint(b.x+3*b.width/4,b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},tape:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",I.prototype.size))));
+return new mxPoint(b.getCenterX(),b.y+d*b.height/2)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(d.y-b.y)/b.height*2))},!1)]},isoCube2:function(b){return[ha(b,["isoAngle"],function(b){var d=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",p.isoAngle))))*Math.PI/200;return new mxPoint(b.x,b.y+Math.min(b.width*Math.tan(d),.5*b.height))},function(b,d){this.state.style.isoAngle=Math.max(0,50*(d.y-b.y)/b.height)},!0)]},cylinder2:Wa(m.prototype.size),cylinder3:Wa(u.prototype.size),
+offPageConnector:function(b){return[ha(b,["size"],function(b){var d=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ua.prototype.size))));return new mxPoint(b.getCenterX(),b.y+(1-d)*b.height)},function(b,d){this.state.style.size=Math.max(0,Math.min(1,(b.y+b.height-d.y)/b.height))},!1)]},"mxgraph.basic.rect":function(b){var d=[Graph.createHandle(b,["size"],function(b){var d=Math.max(0,Math.min(b.width/2,b.height/2,parseFloat(mxUtils.getValue(this.state.style,"size",this.size))));
return new mxPoint(b.x+d,b.y+d)},function(b,d){this.state.style.size=Math.round(100*Math.max(0,Math.min(b.height/2,b.width/2,d.x-b.x)))/100})];b=Graph.createHandle(b,["indent"],function(b){var d=Math.max(0,Math.min(100,parseFloat(mxUtils.getValue(this.state.style,"indent",this.dx2))));return new mxPoint(b.x+.75*b.width,b.y+d*b.height/200)},function(b,d){this.state.style.indent=Math.round(100*Math.max(0,Math.min(100,200*(d.y-b.y)/b.height)))/100});d.push(b);return d},step:Oa(M.prototype.size,!0,null,
-!0,M.prototype.fixedSize),hexagon:Oa(P.prototype.size,!0,.5,!0,P.prototype.fixedSize),curlyBracket:Oa(O.prototype.size,!1),display:Oa(Da.prototype.size,!1),cube:Ta(1,f.prototype.size,!1),card:Ta(.5,y.prototype.size,!0),loopLimit:Ta(.5,ua.prototype.size,!0),trapezoid:Xa(.5,E.prototype.size,E.prototype.fixedSize),parallelogram:Xa(1,F.prototype.size,F.prototype.fixedSize)};Graph.createHandle=ia;Graph.handleFactory=Pa;var eb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=
+!0,M.prototype.fixedSize),hexagon:Oa(R.prototype.size,!0,.5,!0,R.prototype.fixedSize),curlyBracket:Oa(O.prototype.size,!1),display:Oa(Da.prototype.size,!1),cube:Ta(1,f.prototype.size,!1),card:Ta(.5,y.prototype.size,!0),loopLimit:Ta(.5,ta.prototype.size,!0),trapezoid:Xa(.5,F.prototype.size,F.prototype.fixedSize),parallelogram:Xa(1,G.prototype.size,G.prototype.fixedSize)};Graph.createHandle=ha;Graph.handleFactory=Pa;var eb=mxVertexHandler.prototype.createCustomHandles;mxVertexHandler.prototype.createCustomHandles=
function(){var b=eb.apply(this,arguments);if(this.graph.isCellRotatable(this.state.cell)){var d=this.state.style.shape;null==mxCellRenderer.defaultShapes[d]&&null==mxStencilRegistry.getStencil(d)?d=mxConstants.SHAPE_RECTANGLE:this.state.view.graph.isSwimlane(this.state.cell)&&(d=mxConstants.SHAPE_SWIMLANE);d=Pa[d];null==d&&null!=this.state.shape&&this.state.shape.isRoundable()&&(d=Pa[mxConstants.SHAPE_RECTANGLE]);null!=d&&(d=d(this.state),null!=d&&(b=null==b?d:b.concat(d)))}return b};mxEdgeHandler.prototype.createCustomHandles=
function(){var b=this.state.style.shape;null==mxCellRenderer.defaultShapes[b]&&null==mxStencilRegistry.getStencil(b)&&(b=mxConstants.SHAPE_CONNECTOR);b=Pa[b];return null!=b?b(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Qa=new mxPoint(1,0),Ra=new mxPoint(1,0),Ya=mxUtils.toRadians(-30),Qa=mxUtils.getRotatedPoint(Qa,Math.cos(Ya),Math.sin(Ya)),Za=mxUtils.toRadians(-150),Ra=mxUtils.getRotatedPoint(Ra,Math.cos(Za),Math.sin(Za));mxEdgeStyle.IsometricConnector=function(b,
d,c,g,e){var k=b.view;g=null!=g&&0<g.length?g[0]:null;var f=b.absolutePoints,m=f[0],f=f[f.length-1];null!=g&&(g=k.transformControlPoint(b,g));null==m&&null!=d&&(m=new mxPoint(d.getCenterX(),d.getCenterY()));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));var l=Qa.x,p=Qa.y,x=Ra.x,u=Ra.y,t="horizontal"==mxUtils.getValue(b.style,"elbow","horizontal");if(null!=f&&null!=m){b=function(b,d,c){b-=n.x;var g=d-n.y;d=(u*b-x*g)/(l*u-p*x);b=(p*b-l*g)/(p*x-l*u);t?(c&&(n=new mxPoint(n.x+l*d,n.y+
@@ -2958,7 +2958,7 @@ arguments)};l.prototype.constraints=[];q.prototype.getConstraints=function(b,d,c
0),!1,null,d,.5*(c-g)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-g)));d>=2*g&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};mxRectangleShape.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(.25,
0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(.25,
1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0)];mxEllipse.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(0,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(0,
-.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];xa.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;V.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;k.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,Math.min(c,parseFloat(mxUtils.getValue(this.style,
+.5),!0),new mxConnectionConstraint(new mxPoint(1,.5))];xa.prototype.constraints=mxRectangleShape.prototype.constraints;mxImageShape.prototype.constraints=mxRectangleShape.prototype.constraints;mxSwimlane.prototype.constraints=mxRectangleShape.prototype.constraints;W.prototype.constraints=mxRectangleShape.prototype.constraints;mxLabel.prototype.constraints=mxRectangleShape.prototype.constraints;k.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,Math.min(c,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-g),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*g,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c+g)));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,
1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));d>=2*g&&b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));return b};y.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,Math.min(c,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),0));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,g,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c+g)));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,1),!1));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));d>=2*g&&b.push(new mxConnectionConstraint(new mxPoint(.5,
@@ -2969,38 +2969,38 @@ parseFloat(mxUtils.getValue(this.style,"size",this.size))));b.push(new mxConnect
1),!1,null,0,.29*-d));b.push(new mxConnectionConstraint(new mxPoint(.145,1),!1,null,0,.29*-d));return b};t.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?(b.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),e))):(b.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-.5*g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,0)),b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,e)),b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,.5*(d-g),e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,
-0,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};ma.prototype.constraints=mxRectangleShape.prototype.constraints;la.prototype.constraints=
-mxRectangleShape.prototype.constraints;aa.prototype.constraints=mxEllipse.prototype.constraints;R.prototype.constraints=mxEllipse.prototype.constraints;Fa.prototype.constraints=mxEllipse.prototype.constraints;Ba.prototype.constraints=mxEllipse.prototype.constraints;ja.prototype.constraints=mxRectangleShape.prototype.constraints;Ha.prototype.constraints=mxRectangleShape.prototype.constraints;Da.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(d,c/2),e=Math.min(d-g,Math.max(0,parseFloat(mxUtils.getValue(this.style,
+0,.25*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.75*(c-e)+e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c));b.push(new mxConnectionConstraint(new mxPoint(.25,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(.75,1),!1));return b};la.prototype.constraints=mxRectangleShape.prototype.constraints;ka.prototype.constraints=
+mxRectangleShape.prototype.constraints;aa.prototype.constraints=mxEllipse.prototype.constraints;Q.prototype.constraints=mxEllipse.prototype.constraints;Fa.prototype.constraints=mxEllipse.prototype.constraints;Ba.prototype.constraints=mxEllipse.prototype.constraints;ia.prototype.constraints=mxRectangleShape.prototype.constraints;Ha.prototype.constraints=mxRectangleShape.prototype.constraints;Da.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(d,c/2),e=Math.min(d-g,Math.max(0,parseFloat(mxUtils.getValue(this.style,
"size",this.size)))*d);b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-g),0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-g,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e+d-g),c));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,e,c));return b};pa.prototype.getConstraints=function(b,d,c){d=parseFloat(mxUtils.getValue(b,"jettyWidth",pa.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,"jettyHeight",pa.prototype.jettyHeight));var g=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,
+0),!1,null,e,c));return b};oa.prototype.getConstraints=function(b,d,c){d=parseFloat(mxUtils.getValue(b,"jettyWidth",oa.prototype.jettyWidth))/2;b=parseFloat(mxUtils.getValue(b,"jettyHeight",oa.prototype.jettyHeight));var g=[new mxConnectionConstraint(new mxPoint(0,0),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(1,0),!0),new mxConnectionConstraint(new mxPoint(1,
.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(0,1),!1,null,d),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(1,1),!0),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-.5*b,1.5*b)),new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,Math.min(c-
-.5*b,3.5*b))];c>5*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,d));c>8*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,d));c>15*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,d));return g};ua.prototype.constraints=mxRectangleShape.prototype.constraints;fa.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),
-new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];ea.prototype.constraints=
-[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];ha.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,
+.5*b,3.5*b))];c>5*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.75),!1,null,d));c>8*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,d));c>15*b&&g.push(new mxConnectionConstraint(new mxPoint(0,.25),!1,null,d));return g};ta.prototype.constraints=mxRectangleShape.prototype.constraints;ua.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),
+new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];da.prototype.constraints=
+[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];ga.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,
0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,
0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];I.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,
.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];M.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(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,
1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!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)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,
-.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];ka.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[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(.5,
+.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];ja.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[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(.5,
0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,
.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.375,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.625,1),!0)];mxCloud.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.25),!1),new mxConnectionConstraint(new mxPoint(.4,.1),!1),new mxConnectionConstraint(new mxPoint(.16,.55),!1),new mxConnectionConstraint(new mxPoint(.07,.4),!1),new mxConnectionConstraint(new mxPoint(.31,.8),!1),new mxConnectionConstraint(new mxPoint(.13,
-.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];F.prototype.constraints=mxRectangleShape.prototype.constraints;E.prototype.constraints=mxRectangleShape.prototype.constraints;D.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,
-0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;oa.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,
+.77),!1),new mxConnectionConstraint(new mxPoint(.8,.8),!1),new mxConnectionConstraint(new mxPoint(.55,.95),!1),new mxConnectionConstraint(new mxPoint(.875,.5),!1),new mxConnectionConstraint(new mxPoint(.96,.7),!1),new mxConnectionConstraint(new mxPoint(.625,.2),!1),new mxConnectionConstraint(new mxPoint(.88,.25),!1)];G.prototype.constraints=mxRectangleShape.prototype.constraints;F.prototype.constraints=mxRectangleShape.prototype.constraints;D.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,
+0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxArrow.prototype.constraints=null;na.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,
Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,
null,.75*d+.25*g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),.5*(c+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),c));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-g),c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-g),.5*(c+e)));b.push(new mxConnectionConstraint(new mxPoint(0,0),
-!1,null,.5*(d-g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d-.25*g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return b};ra.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),
+!1,null,.5*(d-g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*d-.25*g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*e));return b};qa.prototype.getConstraints=function(b,d,c){b=[];var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),e=Math.max(0,Math.min(c,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));b.push(new mxConnectionConstraint(new mxPoint(0,0),
!1));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(1,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+g),e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,.5*(c+e)));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,g,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,c));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,1),!1));return b};S.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,
-.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];da.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
+.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];ca.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d-e),c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,c-g));return b};Z.prototype.getConstraints=function(b,d,c){b=[];var g=c*Math.max(0,Math.min(1,
-parseFloat(mxUtils.getValue(this.style,"arrowWidth",da.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",da.prototype.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),
+parseFloat(mxUtils.getValue(this.style,"arrowWidth",ca.prototype.arrowWidth)))),e=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",ca.prototype.arrowSize)))),g=(c-g)/2;b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,0));b.push(new mxConnectionConstraint(new mxPoint(1,.5),
!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d-e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*d,c-g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c));return b};Ca.prototype.getConstraints=function(b,d,c){b=[];var g=Math.min(c,d),e=Math.max(0,Math.min(g,g*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=(c-e)/2,k=g+e,f=(d-e)/2,e=f+e;b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,f,0));b.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,0));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c-.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,c));b.push(new mxConnectionConstraint(new mxPoint(.5,1),!1));b.push(new mxConnectionConstraint(new mxPoint(0,
0),!1,null,e,c));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,c-.5*g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));b.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+e),k));b.push(new mxConnectionConstraint(new mxPoint(0,
-0),!1,null,f,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,g));return b};X.prototype.constraints=null;ya.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,
+0),!1,null,f,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,g));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));b.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*f,k));b.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,f,g));return b};ea.prototype.constraints=null;ya.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)];za.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)];na.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];qa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(b){this.editorUi=b;this.actions={};this.init()}
+.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ma.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];pa.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(b){this.editorUi=b;this.actions={};this.init()}
Actions.prototype.init=function(){function b(b){l.escape();b=l.deleteCells(l.getDeletableCells(l.getSelectionCells()),b);null!=b&&l.setSelectionCells(b)}function c(){if(!l.isSelectionEmpty()){l.getModel().beginUpdate();try{for(var b=l.getSelectionCells(),d=0;d<b.length;d++)l.cellLabelChanged(b[d],"")}finally{l.getModel().endUpdate()}}}function e(b,d,c,e,k){k.getModel().beginUpdate();try{var g=k.getCellGeometry(b);null!=g&&c&&e&&(c/=e,g=g.clone(),1<c?g.height=g.width/c:g.width=g.height*c,k.getModel().setGeometry(b,
g));k.setCellStyles(mxConstants.STYLE_CLIP_PATH,d,[b]);k.setCellStyles(mxConstants.STYLE_ASPECT,"fixed",[b])}finally{k.getModel().endUpdate()}}var f=this.editorUi,n=f.editor,l=n.graph,q=function(){return Action.prototype.isEnabled.apply(this,arguments)&&l.isEnabled()};this.addAction("new...",function(){l.openLink(f.getUrl())});this.addAction("open...",function(){window.openNew=!0;window.openKey="open";f.openFile()});this.addAction("smartFit",function(){l.popupMenuHandler.hideMenu();var b=l.view.scale,
d=l.view.translate.x,c=l.view.translate.y;f.actions.get("resetView").funct();1E-5>Math.abs(b-l.view.scale)&&d==l.view.translate.x&&c==l.view.translate.y&&f.actions.get(l.pageVisible?"fitPage":"fitWindow").funct()});this.addAction("keyPressEnter",function(){l.isEnabled()&&(l.isSelectionEmpty()?f.actions.get("smartFit").funct():l.startEditingAtCell())});this.addAction("import...",function(){window.openNew=!1;window.openKey="import";window.openFile=new OpenFile(mxUtils.bind(this,function(){f.hideDialog()}));
@@ -3063,7 +3063,7 @@ p&&(l.setSelectionCells(p),l.scrollCellToVisible(p[0]))}}},l.cellEditor.isConten
!0))}}).isEnabled=q;d=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(f,document.body.offsetWidth-280,120,212,200),this.layersWindow.window.addListener("show",mxUtils.bind(this,function(){f.fireEvent(new mxEventObject("layers"));this.layersWindow.window.fit()})),this.layersWindow.window.addListener("hide",function(){f.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),f.fireEvent(new mxEventObject("layers")),
this.layersWindow.init()):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));d=this.addAction("formatPanel",mxUtils.bind(this,function(){f.toggleFormatPanel()}),null,null,Editor.ctrlKey+"+Shift+P");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return 0<f.formatWidth}));
d=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(f,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",mxUtils.bind(this,function(){f.fireEvent(new mxEventObject("outline"));this.outlineWindow.window.fit()})),this.outlineWindow.window.addListener("hide",function(){f.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0),f.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),
-null,null,Editor.ctrlKey+"+Shift+O");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("connectionPoints...",function(){var b=l.getSelectionCell();l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&null!=b&&(b=new ConnectionPointsDialog(f,b),f.showDialog(b.container,300,390,!0,!0),b.init())}).isEnabled=q};
+null,null,Editor.ctrlKey+"+Shift+O");d.setToggleAction(!0);d.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}));this.addAction("editConnectionPoints...",function(){var b=l.getSelectionCell();if(l.isEnabled()&&!l.isCellLocked(l.getDefaultParent())&&null!=b){var d=new ConnectionPointsDialog(f,b);f.showDialog(d.container,350,450,!0,!0,function(){d.destroy()});d.init()}}).isEnabled=q};
Actions.prototype.addAction=function(b,c,e,f,n){var l;"..."==b.substring(b.length-3)?(b=b.substring(0,b.length-3),l=mxResources.get(b)+"..."):l=mxResources.get(b);return this.put(b,new Action(l,c,e,f,n))};Actions.prototype.put=function(b,c){return this.actions[b]=c};Actions.prototype.get=function(b){return this.actions[b]};function Action(b,c,e,f,n){mxEventSource.call(this);this.label=b;this.funct=this.createFunction(c);this.enabled=null!=e?e:!0;this.iconCls=f;this.shortcut=n;this.visible=!0}
mxUtils.extend(Action,mxEventSource);Action.prototype.createFunction=function(b){return b};Action.prototype.setEnabled=function(b){this.enabled!=b&&(this.enabled=b,this.fireEvent(new mxEventObject("stateChanged")))};Action.prototype.isEnabled=function(){return this.enabled};Action.prototype.setToggleAction=function(b){this.toggleAction=b};Action.prototype.setSelectedCallback=function(b){this.selectedCallback=b};Action.prototype.isSelected=function(){return this.selectedCallback()};DrawioFile=function(b,c){mxEventSource.call(this);this.ui=b;this.shadowData=this.data=c||"";this.shadowPages=null;this.created=(new Date).getTime();this.stats={opened:0,merged:0,fileMerged:0,fileReloaded:0,conflicts:0,timeouts:0,saved:0,closed:0,destroyed:0,joined:0,checksumErrors:0,bytesSent:0,bytesReceived:0,msgSent:0,msgReceived:0,cacheHits:0,cacheMiss:0,cacheFail:0}};DrawioFile.SYNC=urlParams.sync||"auto";DrawioFile.LAST_WRITE_WINS=!0;mxUtils.extend(DrawioFile,mxEventSource);
DrawioFile.prototype.allChangesSavedKey="allChangesSaved";DrawioFile.prototype.savingSpinnerKey="saving";DrawioFile.prototype.savingStatusKey="saving";DrawioFile.prototype.autosaveDelay=1500;DrawioFile.prototype.maxAutosaveDelay=3E4;DrawioFile.prototype.optimisticSyncDelay=300;DrawioFile.prototype.autosaveThread=null;DrawioFile.prototype.lastAutosave=null;DrawioFile.prototype.lastSaved=null;DrawioFile.prototype.lastChanged=null;DrawioFile.prototype.opened=null;DrawioFile.prototype.modified=!1;
@@ -3192,61 +3192,61 @@ Editor.createRoughCanvas=function(b){var d=rough.canvas({getContext:function(){r
c.filled?b.fill():b.stroke()};return d};(function(){function b(d,c,g){this.canvas=d;this.rc=c;this.shape=g;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.originalBegin=this.canvas.begin;this.canvas.begin=mxUtils.bind(this,b.prototype.begin);this.originalEnd=this.canvas.end;this.canvas.end=mxUtils.bind(this,b.prototype.end);this.originalRect=this.canvas.rect;this.canvas.rect=mxUtils.bind(this,b.prototype.rect);this.originalRoundrect=this.canvas.roundrect;this.canvas.roundrect=
mxUtils.bind(this,b.prototype.roundrect);this.originalEllipse=this.canvas.ellipse;this.canvas.ellipse=mxUtils.bind(this,b.prototype.ellipse);this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,b.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,b.prototype.moveTo);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,b.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo;this.canvas.curveTo=mxUtils.bind(this,
b.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,b.prototype.arcTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,b.prototype.close);this.originalFill=this.canvas.fill;this.canvas.fill=mxUtils.bind(this,b.prototype.fill);this.originalStroke=this.canvas.stroke;this.canvas.stroke=mxUtils.bind(this,b.prototype.stroke);this.originalFillAndStroke=this.canvas.fillAndStroke;this.canvas.fillAndStroke=mxUtils.bind(this,b.prototype.fillAndStroke);
-this.path=[];this.passThrough=!1}b.prototype.moveOp="M";b.prototype.lineOp="L";b.prototype.quadOp="Q";b.prototype.curveOp="C";b.prototype.closeOp="Z";b.prototype.getStyle=function(b,d){var c=1;if(null!=this.shape.state){var g=this.shape.state.cell.id;if(null!=g)for(var e=0;e<g.length;e++)c=(c<<5)-c+g.charCodeAt(e)<<0}c={strokeWidth:this.canvas.state.strokeWidth,seed:c,preserveVertices:!0};g=this.rc.getDefaultOptions();c.stroke=b?"none"===this.canvas.state.strokeColor?"transparent":this.canvas.state.strokeColor:
-"none";e=null;(c.filled=d)?(c.fill="none"===this.canvas.state.fillColor?"":this.canvas.state.fillColor,e="none"===this.canvas.state.gradientColor?null:this.canvas.state.gradientColor):c.fill="";c.bowing=mxUtils.getValue(this.shape.style,"bowing",g.bowing);c.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",g.hachureAngle);c.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",g.curveFitting);c.roughness=mxUtils.getValue(this.shape.style,"jiggle",g.roughness);c.simplification=
-mxUtils.getValue(this.shape.style,"simplification",g.simplification);c.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",g.disableMultiStroke);c.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",g.disableMultiStrokeFill);var k=mxUtils.getValue(this.shape.style,"hachureGap",-1);c.hachureGap="auto"==k?-1:k;c.dashGap=mxUtils.getValue(this.shape.style,"dashGap",k);c.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",k);c.zigzagOffset=mxUtils.getValue(this.shape.style,
-"zigzagOffset",k);k=mxUtils.getValue(this.shape.style,"fillWeight",-1);c.fillWeight="auto"==k?-1:k;k=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==k&&(k=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),k=null!=c.fill&&(null!=e||null!=k&&c.fill==k)?"solid":g.fillStyle);c.fillStyle=k;return c};b.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,arguments):this.path=[]};
-b.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};b.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var b=2;b<arguments.length;b+=2)this.lastX=arguments[b-1],this.lastY=arguments[b],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};b.prototype.lineTo=function(b,d){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,b,d),this.lastX=
-b,this.lastY=d)};b.prototype.moveTo=function(b,d){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,b,d),this.lastX=b,this.lastY=d,this.firstX=b,this.firstY=d)};b.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};b.prototype.quadTo=function(b,d,c,g){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,b,d,c,g),this.lastX=c,this.lastY=g)};b.prototype.curveTo=
-function(b,d,c,g,e,k){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,b,d,c,g,e,k),this.lastX=e,this.lastY=k)};b.prototype.arcTo=function(b,d,c,g,e,k,f){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var l=mxUtils.arcToCurves(this.lastX,this.lastY,b,d,c,g,e,k,f);if(null!=l)for(var m=0;m<l.length;m+=6)this.curveTo(l[m],l[m+1],l[m+2],l[m+3],l[m+4],l[m+5]);this.lastX=k;this.lastY=f}};b.prototype.rect=function(b,d,c,g){this.passThrough?
-this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(b,d,c,g,this.getStyle(!0,!0)))};b.prototype.ellipse=function(b,d,c,g){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(b+c/2,d+g/2,c,g,this.getStyle(!0,!0)))};b.prototype.roundrect=function(b,d,c,g,e,k){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(b+e,d),this.lineTo(b+c-e,d),
-this.quadTo(b+c,d,b+c,d+k),this.lineTo(b+c,d+g-k),this.quadTo(b+c,d+g,b+c-e,d+g),this.lineTo(b+e,d+g),this.quadTo(b,d+g,b,d+g-k),this.lineTo(b,d+k),this.quadTo(b,d,b+e,d))};b.prototype.drawPath=function(b){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),b)}catch(na){}this.passThrough=!1}else if(null!=this.nextShape){for(var d in b)this.nextShape.options[d]=b[d];null==b.stroke&&delete this.nextShape.options.stroke;b.filled||delete this.nextShape.options.fill;this.passThrough=
-!0;this.rc.draw(this.nextShape);this.passThrough=!1}};b.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};b.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};b.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!0))};b.prototype.destroy=function(){this.canvas.lineTo=
-this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo;this.canvas.close=this.originalClose;this.canvas.fill=this.originalFill;this.canvas.stroke=this.originalStroke;this.canvas.fillAndStroke=this.originalFillAndStroke;this.canvas.begin=this.originalBegin;this.canvas.end=this.originalEnd;this.canvas.rect=this.originalRect;this.canvas.ellipse=
-this.originalEllipse;this.canvas.roundrect=this.originalRoundrect};mxShape.prototype.createRoughCanvas=function(d){return new b(d,Editor.createRoughCanvas(d),this)};var d=mxShape.prototype.createHandJiggle;mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?d.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(b):this.createRoughCanvas(b)};var c=mxImageShape.prototype.paintVertexShape;
-mxImageShape.prototype.paintVertexShape=function(b,d,g,e,k){null!=b.handJiggle&&b.handJiggle.passThrough||c.apply(this,arguments)};var g=mxShape.prototype.paint;mxShape.prototype.paint=function(d){var c=d.addTolerance,e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=d.handJiggle&&d.handJiggle.constructor==b&&!this.outline){d.save();var k=this.fill,f=this.stroke;this.stroke=this.fill=null;var l=this.configurePointerEvents,m=d.setStrokeColor;
-d.setStrokeColor=function(){};var p=d.setFillColor;d.setFillColor=function(){};e||null==k||(this.configurePointerEvents=function(){});d.handJiggle.passThrough=!0;g.apply(this,arguments);d.handJiggle.passThrough=!1;d.setFillColor=p;d.setStrokeColor=m;this.configurePointerEvents=l;this.stroke=f;this.fill=k;d.restore();e&&null!=k&&(d.addTolerance=function(){})}g.apply(this,arguments);d.addTolerance=c};var e=mxShape.prototype.paintGlassEffect;mxShape.prototype.paintGlassEffect=function(d,c,g,k,f,l){null!=
-d.handJiggle&&d.handJiggle.constructor==b?(d.handJiggle.passThrough=!0,e.apply(this,arguments),d.handJiggle.passThrough=!1):e.apply(this,arguments)}})();Editor.fastCompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:Graph.arrayBufferToString(pako.deflateRaw(b))};Editor.fastDecompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:pako.inflateRaw(Graph.stringToArrayBuffer(atob(b)),{to:"string"})};Editor.extractGraphModel=function(b,d,c){if(null!=b&&"undefined"!==
-typeof pako){var g=b.ownerDocument.getElementsByTagName("div"),e=[];if(null!=g&&0<g.length)for(var k=0;k<g.length;k++)if("mxgraph"==g[k].getAttribute("class")){e.push(g[k]);break}0<e.length&&(g=e[0].getAttribute("data-mxgraph"),null!=g?(e=JSON.parse(g),null!=e&&null!=e.xml&&(b=mxUtils.parseXml(e.xml),b=b.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(g=mxUtils.getTextContent(e[0]),g=Graph.decompress(g,null,c),0<g.length&&(b=mxUtils.parseXml(g),b=b.documentElement))))}if(null!=
-b&&"svg"==b.nodeName)if(g=b.getAttribute("content"),null!=g&&"<"!=g.charAt(0)&&"%"!=g.charAt(0)&&(g=unescape(window.atob?atob(g):Base64.decode(cont,g))),null!=g&&"%"==g.charAt(0)&&(g=decodeURIComponent(g)),null!=g&&0<g.length)b=mxUtils.parseXml(g).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==b||d||(e=null,"diagram"==b.nodeName?e=b:"mxfile"==b.nodeName&&(g=b.getElementsByTagName("diagram"),0<g.length&&(e=g[Math.max(0,Math.min(g.length-1,urlParams.page||0))])),null!=
-e&&(b=Editor.parseDiagramNode(e,c)));null==b||"mxGraphModel"==b.nodeName||d&&"mxfile"==b.nodeName||(b=null);return b};Editor.parseDiagramNode=function(b,d){var c=mxUtils.trim(mxUtils.getTextContent(b)),g=null;0<c.length?(c=Graph.decompress(c,null,d),null!=c&&0<c.length&&(g=mxUtils.parseXml(c).documentElement)):(c=mxUtils.getChildNodes(b),0<c.length&&(g=mxUtils.createXmlDocument(),g.appendChild(g.importNode(c[0],!0)),g=g.documentElement));return g};Editor.getDiagramNodeXml=function(b){var d=mxUtils.getTextContent(b),
-c=null;0<d.length?c=Graph.decompress(d):null!=b.firstChild&&(c=mxUtils.getXml(b.firstChild));return c};Editor.extractGraphModelFromPdf=function(b){b=b.substring(b.indexOf(",")+1);b=window.atob&&!mxClient.IS_SF?atob(b):Base64.decode(b,!0);if("%PDF-1.7"==b.substring(0,8)){var d=b.indexOf("EmbeddedFile");if(-1<d){var c=b.indexOf("stream",d)+9;if(0<b.substring(d,c).indexOf("application#2Fvnd.jgraph.mxfile"))return d=b.indexOf("endstream",c-1),pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(c,d)),
-{to:"string"})}return null}for(var c=null,d="",g=0,e=0,k=[],f=null;e<b.length;){var l=b.charCodeAt(e),e=e+1;10!=l&&(d+=String.fromCharCode(l));l=="/Subject (%3Cmxfile".charCodeAt(g)?g++:g=0;if(19==g){var m=b.indexOf("%3C%2Fmxfile%3E)",e)+15,e=e-9;if(m>e){c=b.substring(e,m);break}}10==l&&("endobj"==d?f=null:"obj"==d.substring(d.length-3,d.length)||"xref"==d||"trailer"==d?(f=[],k[d.split(" ")[0]]=f):null!=f&&f.push(d),d="")}null==c&&(c=Editor.extractGraphModelFromXref(k));null!=c&&(c=decodeURIComponent(c.replace(/\\\(/g,
-"(").replace(/\\\)/g,")")));return c};Editor.extractGraphModelFromXref=function(b){var d=b.trailer,c=null;null!=d&&(d=/.* \/Info (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(d=b[d[1]],null!=d&&(d=/.* \/Subject (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(b=b[d[1]],null!=b&&(b=b.join("\n"),c=b.substring(1,b.length-1))))));return c};Editor.extractParserError=function(b,d){var c=null,g=null!=b?b.getElementsByTagName("parsererror"):null;null!=g&&0<g.length&&(c=d||mxResources.get("invalidChars"),
-g=g[0].getElementsByTagName("div"),0<g.length&&(c=mxUtils.getTextContent(g[0])));return null!=c?mxUtils.trim(c):c};Editor.addRetryToError=function(b,d){if(null!=b){var c=null!=b.error?b.error:b;null==c.retry&&(c.retry=d)}};Editor.configure=function(b,d){if(null!=b){Editor.config=b;Editor.configVersion=b.version;Menus.prototype.defaultFonts=b.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=b.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=
-b.defaultColors||ColorDialog.prototype.defaultColors;ColorDialog.prototype.colorNames=b.colorNames||ColorDialog.prototype.colorNames;StyleFormatPanel.prototype.defaultColorSchemes=b.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=b.defaultEdgeLength||Graph.prototype.defaultEdgeLength;DrawioFile.prototype.autosaveDelay=b.autosaveDelay||DrawioFile.prototype.autosaveDelay;null!=b.templateFile&&(EditorUi.templateFile=b.templateFile);null!=b.styles&&
-(Array.isArray(b.styles)?Editor.styles=b.styles:EditorUi.debug("Configuration Error: Array expected for styles"));null!=b.globalVars&&(Editor.globalVars=b.globalVars);null!=b.compressXml&&(Editor.compressXml=b.compressXml);null!=b.includeDiagram&&(Editor.defaultIncludeDiagram=b.includeDiagram);null!=b.simpleLabels&&(Editor.simpleLabels=b.simpleLabels);null!=b.oneDriveInlinePicker&&(Editor.oneDriveInlinePicker=b.oneDriveInlinePicker);null!=b.darkColor&&(Editor.darkColor=b.darkColor);null!=b.lightColor&&
-(Editor.lightColor=b.lightColor);null!=b.settingsName&&(Editor.configurationKey="."+b.settingsName+"-configuration",Editor.settingsKey="."+b.settingsName+"-config",mxSettings.key=Editor.settingsKey);b.customFonts&&(Menus.prototype.defaultFonts=b.customFonts.concat(Menus.prototype.defaultFonts));b.customPresetColors&&(ColorDialog.prototype.presetColors=b.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=b.customColorSchemes&&(StyleFormatPanel.prototype.defaultColorSchemes=b.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));
-if(null!=b.css){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b.css));var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(c,g)}null!=b.libraries&&(Sidebar.prototype.customEntries=b.libraries);null!=b.enabledLibraries&&(Array.isArray(b.enabledLibraries)?Sidebar.prototype.enabledLibraries=b.enabledLibraries:EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=b.defaultLibraries&&(Sidebar.prototype.defaultEntries=
-b.defaultLibraries);null!=b.defaultCustomLibraries&&(Editor.defaultCustomLibraries=b.defaultCustomLibraries);null!=b.enableCustomLibraries&&(Editor.enableCustomLibraries=b.enableCustomLibraries);null!=b.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=b.defaultVertexStyle);null!=b.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=b.defaultEdgeStyle);null!=b.defaultPageVisible&&(Graph.prototype.defaultPageVisible=b.defaultPageVisible);null!=b.defaultGridEnabled&&(Graph.prototype.defaultGridEnabled=
-b.defaultGridEnabled);null!=b.zoomWheel&&(Graph.zoomWheel=b.zoomWheel);null!=b.zoomFactor&&(c=parseFloat(b.zoomFactor),!isNaN(c)&&1<c?Graph.prototype.zoomFactor=c:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=b.gridSteps&&(c=parseInt(b.gridSteps),!isNaN(c)&&0<c?mxGraphView.prototype.gridSteps=c:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));null!=b.pageFormat&&(c=parseInt(b.pageFormat.width),g=parseInt(b.pageFormat.height),!isNaN(c)&&0<c&&
-!isNaN(g)&&0<g?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,c,g),mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):EditorUi.debug("Configuration Error: {width: int, height: int} expected for pageFormat"));b.thumbWidth&&(Sidebar.prototype.thumbWidth=b.thumbWidth);b.thumbHeight&&(Sidebar.prototype.thumbHeight=b.thumbHeight);b.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml=b.emptyLibraryXml);b.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=b.emptyDiagramXml);b.sidebarWidth&&
-(EditorUi.prototype.hsplitPosition=b.sidebarWidth);b.sidebarTitles&&(Sidebar.prototype.sidebarTitles=b.sidebarTitles);b.sidebarTitleSize&&(c=parseInt(b.sidebarTitleSize),!isNaN(c)&&0<c?Sidebar.prototype.sidebarTitleSize=c:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));b.fontCss&&("string"===typeof b.fontCss?Editor.configureFontCss(b.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));null!=b.autosaveDelay&&(c=parseInt(b.autosaveDelay),!isNaN(c)&&
-0<c?DrawioFile.prototype.autosaveDelay=c:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));if(null!=b.plugins&&!d)for(App.initPluginCallback(),c=0;c<b.plugins.length;c++)mxscript(b.plugins[c]);null!=b.maxImageBytes&&(EditorUi.prototype.maxImageBytes=b.maxImageBytes);null!=b.maxImageSize&&(EditorUi.prototype.maxImageSize=b.maxImageSize)}};Editor.configureFontCss=function(b){if(null!=b){Editor.prototype.fontCss=b;var d=document.getElementsByTagName("script")[0];if(null!=d&&
-null!=d.parentNode){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b));d.parentNode.insertBefore(c,d);b=b.split("url(");for(c=1;c<b.length;c++){var g=b[c].indexOf(")"),g=Editor.trimCssUrl(b[c].substring(0,g)),e=document.createElement("link");e.setAttribute("rel","preload");e.setAttribute("href",g);e.setAttribute("as","font");e.setAttribute("crossorigin","");d.parentNode.insertBefore(e,d)}}}};Editor.trimCssUrl=function(b){return b.replace(RegExp("^[\\s\"']+",
-"g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";Editor.GUID_LENGTH=20;Editor.guid=function(b){b=null!=b?b:Editor.GUID_LENGTH;for(var d=[],c=0;c<b;c++)d.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return d.join("")};Editor.prototype.timeout=25E3;Editor.prototype.useForeignObjectForMath=!0;Editor.prototype.editButtonLink=
-null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(d){d=null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var c=d.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],g=c.getElementsByTagName("div");null!=g&&0<g.length&&(c=g[0]);throw{message:mxUtils.getTextContent(c)};}if("mxGraphModel"==d.nodeName){c=d.getAttribute("style")||
-"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),null!=g&&(e=new mxCodec(g.ownerDocument),e.decode(g,this.graph.getStylesheet())));else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var e=new mxCodec(g.ownerDocument);e.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=
-c;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");c=d.getAttribute("backgroundImage");null!=c?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(c)):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==d.getAttribute("shadow"),
-!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),g=0;g<c.length;g++)this.graph.addExtFont(c[g].name,c[g].url)}catch(ca){console.log("ExtFonts format error: "+ca.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=
-function(b,d){b=null!=b?b:!0;var g=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&g.setAttribute("style",this.graph.currentStyle);var e=this.graph.getBackgroundImageObject(this.graph.backgroundImage,d);null!=e&&g.setAttribute("backgroundImage",JSON.stringify(e));g.setAttribute("math",this.graph.mathEnabled?"1":"0");g.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(e=this.graph.extFonts.map(function(b){return b.name+
-"^"+b.url}),g.setAttribute("extFonts",e.join("|")));return g};Editor.prototype.isDataSvg=function(b){try{var d=mxUtils.parseXml(b).documentElement.getAttribute("content");if(null!=d&&(null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var c=mxUtils.parseXml(d).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(X){}return!1};Editor.prototype.extractGraphModel=
-function(b,d,c){return Editor.extractGraphModel.apply(this,arguments)};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};
-var f=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){f.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.mathJaxWebkitCss="div.MathJax_SVG_Display { position: static; }\nspan.MathJax_SVG { position: static !important; }";
-Editor.initMath=function(b,d){if("undefined"===typeof window.MathJax){b=(null!=b?b:DRAW_MATH_URL+"/MathJax.js")+"?config=TeX-MML-AM_"+("html"==urlParams["math-output"]?"HTMLorMML":"SVG")+"-full";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(b){window.setTimeout(function(){"hidden"!=b.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,b])},0)};var c=null!=urlParams["math-font"]?decodeURIComponent(urlParams["math-font"]):"TeX";d=null!=d?d:{"HTML-CSS":{availableFonts:[c],imageFont:null},
-SVG:{font:c,useFontCache:!1},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(d);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};
-Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var g=Editor.prototype.init;Editor.prototype.init=function(){g.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,d){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var e=document.createElement("script");e.setAttribute("type","text/javascript");e.setAttribute("src",
-b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var k=document.createElement("style");k.type="text/css";k.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(k)}}catch(K){}}};Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;
+this.path=[];this.passThrough=!1}b.prototype.moveOp="M";b.prototype.lineOp="L";b.prototype.quadOp="Q";b.prototype.curveOp="C";b.prototype.closeOp="Z";b.prototype.getStyle=function(b,d){var c=1;if(null!=this.shape.state){var g=this.shape.state.cell.id;if(null!=g)for(var e=0;e<g.length;e++)c=(c<<5)-c+g.charCodeAt(e)<<0}c={strokeWidth:this.canvas.state.strokeWidth,seed:c,preserveVertices:!0};g=this.rc.getDefaultOptions();c.stroke=b?this.canvas.state.strokeColor===mxConstants.NONE?"transparent":this.canvas.state.strokeColor:
+mxConstants.NONE;e=null;(c.filled=d)?(c.fill=this.canvas.state.fillColor===mxConstants.NONE?"":this.canvas.state.fillColor,e=this.canvas.state.gradientColor===mxConstants.NONE?null:this.canvas.state.gradientColor):c.fill="";c.bowing=mxUtils.getValue(this.shape.style,"bowing",g.bowing);c.hachureAngle=mxUtils.getValue(this.shape.style,"hachureAngle",g.hachureAngle);c.curveFitting=mxUtils.getValue(this.shape.style,"curveFitting",g.curveFitting);c.roughness=mxUtils.getValue(this.shape.style,"jiggle",
+g.roughness);c.simplification=mxUtils.getValue(this.shape.style,"simplification",g.simplification);c.disableMultiStroke=mxUtils.getValue(this.shape.style,"disableMultiStroke",g.disableMultiStroke);c.disableMultiStrokeFill=mxUtils.getValue(this.shape.style,"disableMultiStrokeFill",g.disableMultiStrokeFill);var k=mxUtils.getValue(this.shape.style,"hachureGap",-1);c.hachureGap="auto"==k?-1:k;c.dashGap=mxUtils.getValue(this.shape.style,"dashGap",k);c.dashOffset=mxUtils.getValue(this.shape.style,"dashOffset",
+k);c.zigzagOffset=mxUtils.getValue(this.shape.style,"zigzagOffset",k);k=mxUtils.getValue(this.shape.style,"fillWeight",-1);c.fillWeight="auto"==k?-1:k;k=mxUtils.getValue(this.shape.style,"fillStyle","auto");"auto"==k&&(k=mxUtils.hex2rgb(null!=this.shape.state?this.shape.state.view.graph.shapeBackgroundColor:Editor.isDarkMode()?Editor.darkColor:"#ffffff"),k=null!=c.fill&&(null!=e||null!=k&&c.fill==k)?"solid":g.fillStyle);c.fillStyle=k;return c};b.prototype.begin=function(){this.passThrough?this.originalBegin.apply(this.canvas,
+arguments):this.path=[]};b.prototype.end=function(){this.passThrough&&this.originalEnd.apply(this.canvas,arguments)};b.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var b=2;b<arguments.length;b+=2)this.lastX=arguments[b-1],this.lastY=arguments[b],this.path.push(this.canvas.format(this.lastX)),this.path.push(this.canvas.format(this.lastY))};b.prototype.lineTo=function(b,d){this.passThrough?this.originalLineTo.apply(this.canvas,arguments):(this.addOp(this.lineOp,
+b,d),this.lastX=b,this.lastY=d)};b.prototype.moveTo=function(b,d){this.passThrough?this.originalMoveTo.apply(this.canvas,arguments):(this.addOp(this.moveOp,b,d),this.lastX=b,this.lastY=d,this.firstX=b,this.firstY=d)};b.prototype.close=function(){this.passThrough?this.originalClose.apply(this.canvas,arguments):this.addOp(this.closeOp)};b.prototype.quadTo=function(b,d,c,g){this.passThrough?this.originalQuadTo.apply(this.canvas,arguments):(this.addOp(this.quadOp,b,d,c,g),this.lastX=c,this.lastY=g)};
+b.prototype.curveTo=function(b,d,c,g,e,k){this.passThrough?this.originalCurveTo.apply(this.canvas,arguments):(this.addOp(this.curveOp,b,d,c,g,e,k),this.lastX=e,this.lastY=k)};b.prototype.arcTo=function(b,d,c,g,e,k,f){if(this.passThrough)this.originalArcTo.apply(this.canvas,arguments);else{var l=mxUtils.arcToCurves(this.lastX,this.lastY,b,d,c,g,e,k,f);if(null!=l)for(var m=0;m<l.length;m+=6)this.curveTo(l[m],l[m+1],l[m+2],l[m+3],l[m+4],l[m+5]);this.lastX=k;this.lastY=f}};b.prototype.rect=function(b,
+d,c,g){this.passThrough?this.originalRect.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.rectangle(b,d,c,g,this.getStyle(!0,!0)))};b.prototype.ellipse=function(b,d,c,g){this.passThrough?this.originalEllipse.apply(this.canvas,arguments):(this.path=[],this.nextShape=this.rc.generator.ellipse(b+c/2,d+g/2,c,g,this.getStyle(!0,!0)))};b.prototype.roundrect=function(b,d,c,g,e,k){this.passThrough?this.originalRoundrect.apply(this.canvas,arguments):(this.begin(),this.moveTo(b+
+e,d),this.lineTo(b+c-e,d),this.quadTo(b+c,d,b+c,d+k),this.lineTo(b+c,d+g-k),this.quadTo(b+c,d+g,b+c-e,d+g),this.lineTo(b+e,d+g),this.quadTo(b,d+g,b,d+g-k),this.lineTo(b,d+k),this.quadTo(b,d,b+e,d))};b.prototype.drawPath=function(b){if(0<this.path.length){this.passThrough=!0;try{this.rc.path(this.path.join(" "),b)}catch(ma){}this.passThrough=!1}else if(null!=this.nextShape){for(var d in b)this.nextShape.options[d]=b[d];b.stroke!=mxConstants.NONE&&null!=b.stroke||delete this.nextShape.options.stroke;
+b.filled||delete this.nextShape.options.fill;this.passThrough=!0;this.rc.draw(this.nextShape);this.passThrough=!1}};b.prototype.stroke=function(){this.passThrough?this.originalStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,!1))};b.prototype.fill=function(){this.passThrough?this.originalFill.apply(this.canvas,arguments):this.drawPath(this.getStyle(!1,!0))};b.prototype.fillAndStroke=function(){this.passThrough?this.originalFillAndStroke.apply(this.canvas,arguments):this.drawPath(this.getStyle(!0,
+!0))};b.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo;this.canvas.close=this.originalClose;this.canvas.fill=this.originalFill;this.canvas.stroke=this.originalStroke;this.canvas.fillAndStroke=this.originalFillAndStroke;this.canvas.begin=this.originalBegin;this.canvas.end=this.originalEnd;
+this.canvas.rect=this.originalRect;this.canvas.ellipse=this.originalEllipse;this.canvas.roundrect=this.originalRoundrect};mxShape.prototype.createRoughCanvas=function(d){return new b(d,Editor.createRoughCanvas(d),this)};var d=mxShape.prototype.createHandJiggle;mxShape.prototype.createHandJiggle=function(b){return this.outline||null==this.style||"0"==mxUtils.getValue(this.style,"sketch","0")?d.apply(this,arguments):"comic"==mxUtils.getValue(this.style,"sketchStyle","rough")?this.createComicCanvas(b):
+this.createRoughCanvas(b)};var c=mxImageShape.prototype.paintVertexShape;mxImageShape.prototype.paintVertexShape=function(b,d,g,e,k){null!=b.handJiggle&&b.handJiggle.passThrough||c.apply(this,arguments)};var g=mxShape.prototype.paint;mxShape.prototype.paint=function(d){var c=d.addTolerance,e=!0;null!=this.style&&(e="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(null!=d.handJiggle&&d.handJiggle.constructor==b&&!this.outline){d.save();var k=this.fill,f=this.stroke;this.stroke=
+this.fill=null;var l=this.configurePointerEvents,m=d.setStrokeColor;d.setStrokeColor=function(){};var p=d.setFillColor;d.setFillColor=function(){};e||null==k||(this.configurePointerEvents=function(){});d.handJiggle.passThrough=!0;g.apply(this,arguments);d.handJiggle.passThrough=!1;d.setFillColor=p;d.setStrokeColor=m;this.configurePointerEvents=l;this.stroke=f;this.fill=k;d.restore();e&&null!=k&&(d.addTolerance=function(){})}g.apply(this,arguments);d.addTolerance=c};var e=mxShape.prototype.paintGlassEffect;
+mxShape.prototype.paintGlassEffect=function(d,c,g,k,f,l){null!=d.handJiggle&&d.handJiggle.constructor==b?(d.handJiggle.passThrough=!0,e.apply(this,arguments),d.handJiggle.passThrough=!1):e.apply(this,arguments)}})();Editor.fastCompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:Graph.arrayBufferToString(pako.deflateRaw(b))};Editor.fastDecompress=function(b){return null==b||0==b.length||"undefined"===typeof pako?b:pako.inflateRaw(Graph.stringToArrayBuffer(atob(b)),{to:"string"})};
+Editor.extractGraphModel=function(b,d,c){if(null!=b&&"undefined"!==typeof pako){var g=b.ownerDocument.getElementsByTagName("div"),e=[];if(null!=g&&0<g.length)for(var k=0;k<g.length;k++)if("mxgraph"==g[k].getAttribute("class")){e.push(g[k]);break}0<e.length&&(g=e[0].getAttribute("data-mxgraph"),null!=g?(e=JSON.parse(g),null!=e&&null!=e.xml&&(b=mxUtils.parseXml(e.xml),b=b.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(g=mxUtils.getTextContent(e[0]),g=Graph.decompress(g,null,c),0<
+g.length&&(b=mxUtils.parseXml(g),b=b.documentElement))))}if(null!=b&&"svg"==b.nodeName)if(g=b.getAttribute("content"),null!=g&&"<"!=g.charAt(0)&&"%"!=g.charAt(0)&&(g=unescape(window.atob?atob(g):Base64.decode(cont,g))),null!=g&&"%"==g.charAt(0)&&(g=decodeURIComponent(g)),null!=g&&0<g.length)b=mxUtils.parseXml(g).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==b||d||(e=null,"diagram"==b.nodeName?e=b:"mxfile"==b.nodeName&&(g=b.getElementsByTagName("diagram"),0<g.length&&
+(e=g[Math.max(0,Math.min(g.length-1,urlParams.page||0))])),null!=e&&(b=Editor.parseDiagramNode(e,c)));null==b||"mxGraphModel"==b.nodeName||d&&"mxfile"==b.nodeName||(b=null);return b};Editor.parseDiagramNode=function(b,d){var c=mxUtils.trim(mxUtils.getTextContent(b)),g=null;0<c.length?(c=Graph.decompress(c,null,d),null!=c&&0<c.length&&(g=mxUtils.parseXml(c).documentElement)):(c=mxUtils.getChildNodes(b),0<c.length&&(g=mxUtils.createXmlDocument(),g.appendChild(g.importNode(c[0],!0)),g=g.documentElement));
+return g};Editor.getDiagramNodeXml=function(b){var d=mxUtils.getTextContent(b),c=null;0<d.length?c=Graph.decompress(d):null!=b.firstChild&&(c=mxUtils.getXml(b.firstChild));return c};Editor.extractGraphModelFromPdf=function(b){b=b.substring(b.indexOf(",")+1);b=window.atob&&!mxClient.IS_SF?atob(b):Base64.decode(b,!0);if("%PDF-1.7"==b.substring(0,8)){var d=b.indexOf("EmbeddedFile");if(-1<d){var c=b.indexOf("stream",d)+9;if(0<b.substring(d,c).indexOf("application#2Fvnd.jgraph.mxfile"))return d=b.indexOf("endstream",
+c-1),pako.inflateRaw(Graph.stringToArrayBuffer(b.substring(c,d)),{to:"string"})}return null}for(var c=null,d="",g=0,e=0,k=[],f=null;e<b.length;){var l=b.charCodeAt(e),e=e+1;10!=l&&(d+=String.fromCharCode(l));l=="/Subject (%3Cmxfile".charCodeAt(g)?g++:g=0;if(19==g){var m=b.indexOf("%3C%2Fmxfile%3E)",e)+15,e=e-9;if(m>e){c=b.substring(e,m);break}}10==l&&("endobj"==d?f=null:"obj"==d.substring(d.length-3,d.length)||"xref"==d||"trailer"==d?(f=[],k[d.split(" ")[0]]=f):null!=f&&f.push(d),d="")}null==c&&(c=
+Editor.extractGraphModelFromXref(k));null!=c&&(c=decodeURIComponent(c.replace(/\\\(/g,"(").replace(/\\\)/g,")")));return c};Editor.extractGraphModelFromXref=function(b){var d=b.trailer,c=null;null!=d&&(d=/.* \/Info (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(d=b[d[1]],null!=d&&(d=/.* \/Subject (\d+) (\d+) R/g.exec(d.join("\n")),null!=d&&0<d.length&&(b=b[d[1]],null!=b&&(b=b.join("\n"),c=b.substring(1,b.length-1))))));return c};Editor.extractParserError=function(b,d){var c=null,g=null!=
+b?b.getElementsByTagName("parsererror"):null;null!=g&&0<g.length&&(c=d||mxResources.get("invalidChars"),g=g[0].getElementsByTagName("div"),0<g.length&&(c=mxUtils.getTextContent(g[0])));return null!=c?mxUtils.trim(c):c};Editor.addRetryToError=function(b,d){if(null!=b){var c=null!=b.error?b.error:b;null==c.retry&&(c.retry=d)}};Editor.configure=function(b,d){if(null!=b){Editor.config=b;Editor.configVersion=b.version;Menus.prototype.defaultFonts=b.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=
+b.presetColors||ColorDialog.prototype.presetColors;ColorDialog.prototype.defaultColors=b.defaultColors||ColorDialog.prototype.defaultColors;ColorDialog.prototype.colorNames=b.colorNames||ColorDialog.prototype.colorNames;StyleFormatPanel.prototype.defaultColorSchemes=b.defaultColorSchemes||StyleFormatPanel.prototype.defaultColorSchemes;Graph.prototype.defaultEdgeLength=b.defaultEdgeLength||Graph.prototype.defaultEdgeLength;DrawioFile.prototype.autosaveDelay=b.autosaveDelay||DrawioFile.prototype.autosaveDelay;
+null!=b.templateFile&&(EditorUi.templateFile=b.templateFile);null!=b.styles&&(Array.isArray(b.styles)?Editor.styles=b.styles:EditorUi.debug("Configuration Error: Array expected for styles"));null!=b.globalVars&&(Editor.globalVars=b.globalVars);null!=b.compressXml&&(Editor.compressXml=b.compressXml);null!=b.includeDiagram&&(Editor.defaultIncludeDiagram=b.includeDiagram);null!=b.simpleLabels&&(Editor.simpleLabels=b.simpleLabels);null!=b.oneDriveInlinePicker&&(Editor.oneDriveInlinePicker=b.oneDriveInlinePicker);
+null!=b.darkColor&&(Editor.darkColor=b.darkColor);null!=b.lightColor&&(Editor.lightColor=b.lightColor);null!=b.settingsName&&(Editor.configurationKey="."+b.settingsName+"-configuration",Editor.settingsKey="."+b.settingsName+"-config",mxSettings.key=Editor.settingsKey);b.customFonts&&(Menus.prototype.defaultFonts=b.customFonts.concat(Menus.prototype.defaultFonts));b.customPresetColors&&(ColorDialog.prototype.presetColors=b.customPresetColors.concat(ColorDialog.prototype.presetColors));null!=b.customColorSchemes&&
+(StyleFormatPanel.prototype.defaultColorSchemes=b.customColorSchemes.concat(StyleFormatPanel.prototype.defaultColorSchemes));if(null!=b.css){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b.css));var g=document.getElementsByTagName("script")[0];g.parentNode.insertBefore(c,g)}null!=b.libraries&&(Sidebar.prototype.customEntries=b.libraries);null!=b.enabledLibraries&&(Array.isArray(b.enabledLibraries)?Sidebar.prototype.enabledLibraries=b.enabledLibraries:
+EditorUi.debug("Configuration Error: Array expected for enabledLibraries"));null!=b.defaultLibraries&&(Sidebar.prototype.defaultEntries=b.defaultLibraries);null!=b.defaultCustomLibraries&&(Editor.defaultCustomLibraries=b.defaultCustomLibraries);null!=b.enableCustomLibraries&&(Editor.enableCustomLibraries=b.enableCustomLibraries);null!=b.defaultVertexStyle&&(Graph.prototype.defaultVertexStyle=b.defaultVertexStyle);null!=b.defaultEdgeStyle&&(Graph.prototype.defaultEdgeStyle=b.defaultEdgeStyle);null!=
+b.defaultPageVisible&&(Graph.prototype.defaultPageVisible=b.defaultPageVisible);null!=b.defaultGridEnabled&&(Graph.prototype.defaultGridEnabled=b.defaultGridEnabled);null!=b.zoomWheel&&(Graph.zoomWheel=b.zoomWheel);null!=b.zoomFactor&&(c=parseFloat(b.zoomFactor),!isNaN(c)&&1<c?Graph.prototype.zoomFactor=c:EditorUi.debug("Configuration Error: Float > 1 expected for zoomFactor"));null!=b.gridSteps&&(c=parseInt(b.gridSteps),!isNaN(c)&&0<c?mxGraphView.prototype.gridSteps=c:EditorUi.debug("Configuration Error: Int > 0 expected for gridSteps"));
+null!=b.pageFormat&&(c=parseInt(b.pageFormat.width),g=parseInt(b.pageFormat.height),!isNaN(c)&&0<c&&!isNaN(g)&&0<g?(mxGraph.prototype.defaultPageFormat=new mxRectangle(0,0,c,g),mxGraph.prototype.pageFormat=mxGraph.prototype.defaultPageFormat):EditorUi.debug("Configuration Error: {width: int, height: int} expected for pageFormat"));b.thumbWidth&&(Sidebar.prototype.thumbWidth=b.thumbWidth);b.thumbHeight&&(Sidebar.prototype.thumbHeight=b.thumbHeight);b.emptyLibraryXml&&(EditorUi.prototype.emptyLibraryXml=
+b.emptyLibraryXml);b.emptyDiagramXml&&(EditorUi.prototype.emptyDiagramXml=b.emptyDiagramXml);b.sidebarWidth&&(EditorUi.prototype.hsplitPosition=b.sidebarWidth);b.sidebarTitles&&(Sidebar.prototype.sidebarTitles=b.sidebarTitles);b.sidebarTitleSize&&(c=parseInt(b.sidebarTitleSize),!isNaN(c)&&0<c?Sidebar.prototype.sidebarTitleSize=c:EditorUi.debug("Configuration Error: Int > 0 expected for sidebarTitleSize"));b.fontCss&&("string"===typeof b.fontCss?Editor.configureFontCss(b.fontCss):EditorUi.debug("Configuration Error: String expected for fontCss"));
+null!=b.autosaveDelay&&(c=parseInt(b.autosaveDelay),!isNaN(c)&&0<c?DrawioFile.prototype.autosaveDelay=c:EditorUi.debug("Configuration Error: Int > 0 expected for autosaveDelay"));if(null!=b.plugins&&!d)for(App.initPluginCallback(),c=0;c<b.plugins.length;c++)mxscript(b.plugins[c]);null!=b.maxImageBytes&&(EditorUi.prototype.maxImageBytes=b.maxImageBytes);null!=b.maxImageSize&&(EditorUi.prototype.maxImageSize=b.maxImageSize)}};Editor.configureFontCss=function(b){if(null!=b){Editor.prototype.fontCss=
+b;var d=document.getElementsByTagName("script")[0];if(null!=d&&null!=d.parentNode){var c=document.createElement("style");c.setAttribute("type","text/css");c.appendChild(document.createTextNode(b));d.parentNode.insertBefore(c,d);b=b.split("url(");for(c=1;c<b.length;c++){var g=b[c].indexOf(")"),g=Editor.trimCssUrl(b[c].substring(0,g)),e=document.createElement("link");e.setAttribute("rel","preload");e.setAttribute("href",g);e.setAttribute("as","font");e.setAttribute("crossorigin","");d.parentNode.insertBefore(e,
+d)}}}};Editor.trimCssUrl=function(b){return b.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$","g"),"")};Editor.GOOGLE_FONTS="https://fonts.googleapis.com/css?family=";Editor.GUID_ALPHABET="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";Editor.GUID_LENGTH=20;Editor.guid=function(b){b=null!=b?b:Editor.GUID_LENGTH;for(var d=[],c=0;c<b;c++)d.push(Editor.GUID_ALPHABET.charAt(Math.floor(Math.random()*Editor.GUID_ALPHABET.length)));return d.join("")};Editor.prototype.timeout=
+25E3;Editor.prototype.useForeignObjectForMath=!0;Editor.prototype.editButtonLink=null!=urlParams.edit?decodeURIComponent(urlParams.edit):null;Editor.prototype.crossOriginImages=!mxClient.IS_IE;var b=Editor.prototype.setGraphXml;Editor.prototype.setGraphXml=function(d){d=null!=d&&"mxlibrary"!=d.nodeName?this.extractGraphModel(d):null;if(null!=d){var c=d.getElementsByTagName("parsererror");if(null!=c&&0<c.length){var c=c[0],g=c.getElementsByTagName("div");null!=g&&0<g.length&&(c=g[0]);throw{message:mxUtils.getTextContent(c)};
+}if("mxGraphModel"==d.nodeName){c=d.getAttribute("style")||"default-style2";if("1"==urlParams.embed||null!=c&&""!=c)c!=this.graph.currentStyle&&(g=null!=this.graph.themes?this.graph.themes[c]:mxUtils.load(STYLE_PATH+"/"+c+".xml").getDocumentElement(),null!=g&&(e=new mxCodec(g.ownerDocument),e.decode(g,this.graph.getStylesheet())));else if(g=null!=this.graph.themes?this.graph.themes["default-old"]:mxUtils.load(STYLE_PATH+"/default-old.xml").getDocumentElement(),null!=g){var e=new mxCodec(g.ownerDocument);
+e.decode(g,this.graph.getStylesheet())}this.graph.currentStyle=c;this.graph.mathEnabled="1"==urlParams.math||"1"==d.getAttribute("math");c=d.getAttribute("backgroundImage");null!=c?this.graph.setBackgroundImage(this.graph.parseBackgroundImage(c)):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();
+this.graph.setShadowVisible("1"==d.getAttribute("shadow"),!1);if(c=d.getAttribute("extFonts"))try{for(c=c.split("|").map(function(b){b=b.split("^");return{name:b[0],url:b[1]}}),g=0;g<c.length;g++)this.graph.addExtFont(c[g].name,c[g].url)}catch(V){console.log("ExtFonts format error: "+V.message)}else null!=this.graph.extFonts&&0<this.graph.extFonts.length&&(this.graph.extFonts=[])}b.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};
+};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(b,d){b=null!=b?b:!0;var g=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&g.setAttribute("style",this.graph.currentStyle);var e=this.graph.getBackgroundImageObject(this.graph.backgroundImage,d);null!=e&&g.setAttribute("backgroundImage",JSON.stringify(e));g.setAttribute("math",this.graph.mathEnabled?"1":"0");g.setAttribute("shadow",this.graph.shadowVisible?"1":"0");null!=this.graph.extFonts&&
+0<this.graph.extFonts.length&&(e=this.graph.extFonts.map(function(b){return b.name+"^"+b.url}),g.setAttribute("extFonts",e.join("|")));return g};Editor.prototype.isDataSvg=function(b){try{var d=mxUtils.parseXml(b).documentElement.getAttribute("content");if(null!=d&&(null!=d&&"<"!=d.charAt(0)&&"%"!=d.charAt(0)&&(d=unescape(window.atob?atob(d):Base64.decode(cont,d))),null!=d&&"%"==d.charAt(0)&&(d=decodeURIComponent(d)),null!=d&&0<d.length)){var c=mxUtils.parseXml(d).documentElement;return"mxfile"==
+c.nodeName||"mxGraphModel"==c.nodeName}}catch(ea){}return!1};Editor.prototype.extractGraphModel=function(b,d,c){return Editor.extractGraphModel.apply(this,arguments)};var e=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0=null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&
+this.graph.isCssTransformsSupported();this.graph.updateCssTransform();e.apply(this,arguments)};var f=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){f.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.mathJaxWebkitCss=
+"div.MathJax_SVG_Display { position: static; }\nspan.MathJax_SVG { position: static !important; }";Editor.initMath=function(b,d){if("undefined"===typeof window.MathJax){b=(null!=b?b:DRAW_MATH_URL+"/MathJax.js")+"?config=TeX-MML-AM_"+("html"==urlParams["math-output"]?"HTMLorMML":"SVG")+"-full";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(b){window.setTimeout(function(){"hidden"!=b.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,b])},0)};var c=null!=urlParams["math-font"]?decodeURIComponent(urlParams["math-font"]):
+"TeX";d=null!=d?d:{"HTML-CSS":{availableFonts:[c],imageFont:null},SVG:{font:c,useFontCache:!1},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(d);MathJax.Hub.Register.StartupHook("Begin",function(){for(var b=0;b<Editor.mathJaxQueue.length;b++)Editor.doMathJaxRender(Editor.mathJaxQueue[b])})}};Editor.MathJaxRender=function(b){"undefined"!==typeof MathJax&&
+"undefined"!==typeof MathJax.Hub?Editor.doMathJaxRender(b):Editor.mathJaxQueue.push(b)};Editor.MathJaxClear=function(){Editor.mathJaxQueue=[]};var g=Editor.prototype.init;Editor.prototype.init=function(){g.apply(this,arguments);this.graph.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,d){null!=this.graph.container&&this.graph.mathEnabled&&!this.graph.blockMathRender&&Editor.MathJaxRender(this.graph.container)}))};c=document.getElementsByTagName("script");if(null!=c&&0<c.length){var e=document.createElement("script");
+e.setAttribute("type","text/javascript");e.setAttribute("src",b);c[0].parentNode.appendChild(e)}try{if(mxClient.IS_GC||mxClient.IS_SF){var k=document.createElement("style");k.type="text/css";k.innerHTML=Editor.mathJaxWebkitCss;document.getElementsByTagName("head")[0].appendChild(k)}}catch(K){}}};Editor.prototype.csvToArray=function(b){if(!/^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/.test(b))return null;
var d=[];b.replace(/(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g,function(b,c,g,e){void 0!==c?d.push(c.replace(/\\'/g,"'")):void 0!==g?d.push(g.replace(/\\"/g,'"')):void 0!==e&&d.push(e);return""});/,\s*$/.test(b)&&d.push("");return d};Editor.prototype.isCorsEnabledForUrl=function(b){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||b.substring(0,window.location.origin.length)==window.location.origin)return!0;null!=urlParams.cors&&
null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(b)||"https://raw.githubusercontent.com/"===b.substring(0,34)||"https://fonts.googleapis.com/"===b.substring(0,29)||"https://fonts.gstatic.com/"===b.substring(0,26)};Editor.prototype.createImageUrlConverter=function(){var b=new mxUrlConverter;b.updateBaseUrl();var d=b.convert,c=this;b.convert=function(g){if(null!=g){var e="http://"==g.substring(0,7)||"https://"==
g.substring(0,8);e&&!navigator.onLine?g=Editor.svgBrokenImage.src:!e||g.substring(0,b.baseUrl.length)==b.baseUrl||c.crossOriginImages&&c.isCorsEnabledForUrl(g)?"chrome-extension://"==g.substring(0,19)||mxClient.IS_CHROMEAPP||(g=d.apply(this,arguments)):g=PROXY_URL+"?url="+encodeURIComponent(g)}return g};return b};Editor.createSvgDataUri=function(b){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(b)))};Editor.prototype.convertImageToDataUri=function(b,d){try{var c=!0,g=window.setTimeout(mxUtils.bind(this,
function(){c=!1;d(Editor.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(b))mxUtils.get(b,mxUtils.bind(this,function(b){window.clearTimeout(g);c&&d(Editor.createSvgDataUri(b.getText()))}),function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)});else{var e=new Image;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(g);if(c)try{var b=document.createElement("canvas"),k=b.getContext("2d");b.height=e.height;b.width=e.width;k.drawImage(e,0,0);
-d(b.toDataURL())}catch(na){d(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)};e.src=b}}catch(ka){d(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,d,c,g){null==g&&(g=this.createImageUrlConverter());var e=0,k=c||{};c=mxUtils.bind(this,function(c,f){for(var l=b.getElementsByTagName(c),m=0;m<l.length;m++)mxUtils.bind(this,function(c){try{if(null!=c){var l=g.convert(c.getAttribute(f));if(null!=l&&"data:"!=l.substring(0,5)){var m=
-k[l];null==m?(e++,this.convertImageToDataUri(l,function(g){null!=g&&(k[l]=g,c.setAttribute(f,g));e--;0==e&&d(b)})):c.setAttribute(f,m)}else null!=l&&c.setAttribute(f,l)}}catch(Q){}})(l[m])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,g=b.length,e,k,f;c<g;){e=b.charCodeAt(c++)&255;if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&
+d(b.toDataURL())}catch(ma){d(Editor.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(g);c&&d(Editor.svgBrokenImage.src)};e.src=b}}catch(ja){d(Editor.svgBrokenImage.src)}};Editor.prototype.convertImages=function(b,d,c,g){null==g&&(g=this.createImageUrlConverter());var e=0,k=c||{};c=mxUtils.bind(this,function(c,f){for(var l=b.getElementsByTagName(c),m=0;m<l.length;m++)mxUtils.bind(this,function(c){try{if(null!=c){var l=g.convert(c.getAttribute(f));if(null!=l&&"data:"!=l.substring(0,5)){var m=
+k[l];null==m?(e++,this.convertImageToDataUri(l,function(g){null!=g&&(k[l]=g,c.setAttribute(f,g));e--;0==e&&d(b)})):c.setAttribute(f,m)}else null!=l&&c.setAttribute(f,l)}}catch(P){}})(l[m])});c("image","xlink:href");c("img","src");0==e&&d(b)};Editor.base64Encode=function(b){for(var d="",c=0,g=b.length,e,k,f;c<g;){e=b.charCodeAt(c++)&255;if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&
3)<<4);d+="==";break}k=b.charCodeAt(c++);if(c==g){d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&3)<<4|(k&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);d+="=";break}f=b.charCodeAt(c++);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e>>2);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&
3)<<4|(k&240)>>4);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(f&192)>>6);d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f&63)}return d};Editor.prototype.loadUrl=function(b,d,c,g,e,k,f,l){try{var m=!f&&(g||/(\.png)($|\?)/i.test(b)||/(\.jpe?g)($|\?)/i.test(b)||/(\.gif)($|\?)/i.test(b)||/(\.pdf)($|\?)/i.test(b));e=null!=e?e:!0;var p=mxUtils.bind(this,function(){mxUtils.get(b,mxUtils.bind(this,function(b){if(200<=b.getStatus()&&
299>=b.getStatus()){if(null!=d){var g=b.getText();if(m){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){b=mxUtilsBinaryToArray(b.request.responseBody).toArray();for(var g=Array(b.length),e=0;e<b.length;e++)g[e]=String.fromCharCode(b[e]);g=g.join("")}k=null!=k?k:"data:image/png;base64,";g=k+Editor.base64Encode(g)}d(g)}}else null!=c&&(0==b.getStatus()?c({message:mxResources.get("accessDenied")},b):c({message:mxResources.get("error")+" "+b.getStatus()},
-b))}),function(b){null!=c&&c({message:mxResources.get("error")+" "+b.getStatus()})},m,this.timeout,function(){e&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:p})},l)});p()}catch(ha){null!=c&&c(ha)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var g=null!=b?b.lastIndexOf("/"):-1;0<=g&&(b=b.substring(0,g+1));var g=document.getElementsByTagName("base"),e=null;null!=g&&0<g.length&&(e=g[0].getAttribute("href"));
+b))}),function(b){null!=c&&c({message:mxResources.get("error")+" "+b.getStatus()})},m,this.timeout,function(){e&&null!=c&&c({code:App.ERROR_TIMEOUT,retry:p})},l)});p()}catch(ga){null!=c&&c(ga)}};Editor.prototype.absoluteCssFonts=function(b){var d=null;if(null!=b){var c=b.split("url(");if(0<c.length){d=[c[0]];b=window.location.pathname;var g=null!=b?b.lastIndexOf("/"):-1;0<=g&&(b=b.substring(0,g+1));var g=document.getElementsByTagName("base"),e=null;null!=g&&0<g.length&&(e=g[0].getAttribute("href"));
for(var k=1;k<c.length;k++)if(g=c[k].indexOf(")"),0<g){var f=Editor.trimCssUrl(c[k].substring(0,g));this.graph.isRelativeUrl(f)&&(f=null!=e?e+f:window.location.protocol+"//"+window.location.hostname+("/"==f.charAt(0)?"":b)+f);d.push('url("'+f+'"'+c[k].substring(g))}else d.push(c[k])}else d=[b]}return null!=d?d.join(""):null};Editor.prototype.mapFontUrl=function(b,d,c){/^https?:\/\//.test(d)&&!this.isCorsEnabledForUrl(d)&&(d=PROXY_URL+"?url="+encodeURIComponent(d));c(b,d)};Editor.prototype.embedCssFonts=
function(b,d){var c=b.split("url("),g=0;null==this.cachedFonts&&(this.cachedFonts={});var e=mxUtils.bind(this,function(){if(0==g){for(var b=[c[0]],e=1;e<c.length;e++){var k=c[e].indexOf(")");b.push('url("');b.push(this.cachedFonts[Editor.trimCssUrl(c[e].substring(0,k))]);b.push('"'+c[e].substring(k))}d(b.join(""))}});if(0<c.length){for(var k=1;k<c.length;k++){var f=c[k].indexOf(")"),l=null,m=c[k].indexOf("format(",f);0<m&&(l=Editor.trimCssUrl(c[k].substring(m+7,c[k].indexOf(")",m))));mxUtils.bind(this,
function(b){if(null==this.cachedFonts[b]){this.cachedFonts[b]=b;g++;var d="application/x-font-ttf";if("svg"==l||/(\.svg)($|\?)/i.test(b))d="image/svg+xml";else if("otf"==l||"embedded-opentype"==l||/(\.otf)($|\?)/i.test(b))d="application/x-font-opentype";else if("woff"==l||/(\.woff)($|\?)/i.test(b))d="application/font-woff";else if("woff2"==l||/(\.woff2)($|\?)/i.test(b))d="application/font-woff2";else if("eot"==l||/(\.eot)($|\?)/i.test(b))d="application/vnd.ms-fontobject";else if("sfnt"==l||/(\.sfnt)($|\?)/i.test(b))d=
@@ -3256,9 +3256,9 @@ Editor.prototype.createGoogleFontCache=function(){var b={},d;for(d in Graph.font
0<g.indexOf("MathJax")&&b[0].appendChild(d[c].cloneNode(!0))}};Editor.prototype.addFontCss=function(b,d){d=null!=d?d:this.absoluteCssFonts(this.fontCss);if(null!=d){var c=b.getElementsByTagName("defs"),g=b.ownerDocument;0==c.length?(c=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"defs"):g.createElement("defs"),null!=b.firstChild?b.insertBefore(c,b.firstChild):b.appendChild(c)):c=c[0];g=null!=g.createElementNS?g.createElementNS(mxConstants.NS_SVG,"style"):g.createElement("style");g.setAttribute("type",
"text/css");mxUtils.setTextContent(g,d);c.appendChild(g)}};Editor.prototype.isExportToCanvas=function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport};Editor.prototype.getMaxCanvasScale=function(b,d,c){var g=mxClient.IS_FF?8192:16384;return Math.min(c,Math.min(g/b,g/d))};Editor.prototype.exportToCanvas=function(b,d,c,g,e,k,f,l,m,p,u,n,t,v,y,z,q,B){try{k=null!=k?k:!0;f=null!=f?f:!0;n=null!=n?n:this.graph;t=null!=t?t:0;var x=m?null:n.background;x==mxConstants.NONE&&(x=null);null==x&&(x=g);null==
x&&0==m&&(x=z?this.graph.defaultPageBackgroundColor:"#ffffff");this.convertImages(n.getSvg(null,null,t,v,null,f,null,null,null,p,null,z,q,B),mxUtils.bind(this,function(c){try{var g=new Image;g.onload=mxUtils.bind(this,function(){try{var f=function(){mxClient.IS_SF?window.setTimeout(function(){v.drawImage(g,0,0);b(m,c)},0):(v.drawImage(g,0,0),b(m,c))},m=document.createElement("canvas"),p=parseInt(c.getAttribute("width")),u=parseInt(c.getAttribute("height"));l=null!=l?l:1;null!=d&&(l=k?Math.min(1,Math.min(3*
-d/(4*u),d/p)):d/p);l=this.getMaxCanvasScale(p,u,l);p=Math.ceil(l*p);u=Math.ceil(l*u);m.setAttribute("width",p);m.setAttribute("height",u);var v=m.getContext("2d");null!=x&&(v.beginPath(),v.rect(0,0,p,u),v.fillStyle=x,v.fill());1!=l&&v.scale(l,l);if(y){var z=n.view,q=z.scale;z.scale=1;var C=btoa(unescape(encodeURIComponent(z.createSvgGrid(z.gridColor))));z.scale=q;var C="data:image/svg+xml;base64,"+C,B=n.gridSize*z.gridSteps*l,K=n.getGraphBounds(),M=z.translate.x*q,J=z.translate.y*q,G=M+(K.x-M)/q-
-t,P=J+(K.y-J)/q-t,N=new Image;N.onload=function(){try{for(var b=-Math.round(B-mxUtils.mod((M-G)*l,B)),d=-Math.round(B-mxUtils.mod((J-P)*l,B));b<p;b+=B)for(var c=d;c<u;c+=B)v.drawImage(N,b/l,c/l);f()}catch(Ea){null!=e&&e(Ea)}};N.onerror=function(b){null!=e&&e(b)};N.src=C}else f()}catch(Ca){null!=e&&e(Ca)}});g.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(c);this.graph.mathEnabled&&this.addMathCss(c);var f=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,
-this.resolvedFontCss),g.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(Z){null!=e&&e(Z)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(f)}catch(la){null!=e&&e(la)}}))}catch(Z){null!=e&&e(Z)}}),c,u)}catch(S){null!=e&&e(S)}};Editor.crcTable=[];for(var n=0;256>n;n++)for(var l=n,q=0;8>q;q++)l=1==(l&1)?3988292384^l>>>1:l>>>1,Editor.crcTable[n]=l;Editor.updateCRC=function(b,d,c,g){for(var e=0;e<g;e++)b=Editor.crcTable[(b^d.charCodeAt(c+e))&255]^
+d/(4*u),d/p)):d/p);l=this.getMaxCanvasScale(p,u,l);p=Math.ceil(l*p);u=Math.ceil(l*u);m.setAttribute("width",p);m.setAttribute("height",u);var v=m.getContext("2d");null!=x&&(v.beginPath(),v.rect(0,0,p,u),v.fillStyle=x,v.fill());1!=l&&v.scale(l,l);if(y){var z=n.view,q=z.scale;z.scale=1;var C=btoa(unescape(encodeURIComponent(z.createSvgGrid(z.gridColor))));z.scale=q;var C="data:image/svg+xml;base64,"+C,B=n.gridSize*z.gridSteps*l,K=n.getGraphBounds(),M=z.translate.x*q,J=z.translate.y*q,E=M+(K.x-M)/q-
+t,R=J+(K.y-J)/q-t,N=new Image;N.onload=function(){try{for(var b=-Math.round(B-mxUtils.mod((M-E)*l,B)),d=-Math.round(B-mxUtils.mod((J-R)*l,B));b<p;b+=B)for(var c=d;c<u;c+=B)v.drawImage(N,b/l,c/l);f()}catch(Ea){null!=e&&e(Ea)}};N.onerror=function(b){null!=e&&e(b)};N.src=C}else f()}catch(Ca){null!=e&&e(Ca)}});g.onerror=function(b){null!=e&&e(b)};p&&this.graph.addSvgShadow(c);this.graph.mathEnabled&&this.addMathCss(c);var f=mxUtils.bind(this,function(){try{null!=this.resolvedFontCss&&this.addFontCss(c,
+this.resolvedFontCss),g.src=Editor.createSvgDataUri(mxUtils.getXml(c))}catch(Z){null!=e&&e(Z)}});this.embedExtFonts(mxUtils.bind(this,function(b){try{null!=b&&this.addFontCss(c,b),this.loadFonts(f)}catch(ka){null!=e&&e(ka)}}))}catch(Z){null!=e&&e(Z)}}),c,u)}catch(S){null!=e&&e(S)}};Editor.crcTable=[];for(var n=0;256>n;n++)for(var l=n,q=0;8>q;q++)l=1==(l&1)?3988292384^l>>>1:l>>>1,Editor.crcTable[n]=l;Editor.updateCRC=function(b,d,c,g){for(var e=0;e<g;e++)b=Editor.crcTable[(b^d.charCodeAt(c+e))&255]^
b>>>8;return b};Editor.crc32=function(b){for(var d=-1,c=0;c<b.length;c++)d=d>>>8^Editor.crcTable[(d^b.charCodeAt(c))&255];return(d^-1)>>>0};Editor.writeGraphModelToPng=function(b,d,c,g,e){function k(b,d){var c=m;m+=d;return b.substring(c,m)}function f(b){b=k(b,4);return b.charCodeAt(3)+(b.charCodeAt(2)<<8)+(b.charCodeAt(1)<<16)+(b.charCodeAt(0)<<24)}function l(b){return String.fromCharCode(b>>24&255,b>>16&255,b>>8&255,b&255)}b=b.substring(b.indexOf(",")+1);b=window.atob?atob(b):Base64.decode(b,!0);
var m=0;if(k(b,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(k(b,4),"IHDR"!=k(b,4))null!=e&&e();else{k(b,17);e=b.substring(0,m);do{var p=f(b);if("IDAT"==k(b,4)){e=b.substring(0,m-8);"pHYs"==d&&"dpi"==c?(c=Math.round(g/.0254),c=l(c)+l(c)+String.fromCharCode(1)):c=c+String.fromCharCode(0)+("zTXt"==d?String.fromCharCode(0):"")+g;g=4294967295;g=Editor.updateCRC(g,d,0,4);g=Editor.updateCRC(g,c,0,c.length);e+=l(c.length)+d+c+l(g^4294967295);e+=b.substring(m-8,
b.length);break}e+=b.substring(m-8,m-4+p);k(b,p);k(b,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://www.diagrams.net/doc/faq/save-file-formats";var d=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(b,c){d.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var k=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){k.apply(this,
@@ -3291,7 +3291,7 @@ stroke:"#3700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"
font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf",gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28",stroke:"#d79b00",gradient:"#ffa500"},
{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes=null;StyleFormatPanel.prototype.findCommonProperties=
function(b,d,c){if(null!=d){var g=function(b){if(null!=b)if(c)for(var g=0;g<b.length;g++)d[b[g].name]=b[g];else for(var e in d){for(var k=!1,g=0;g<b.length;g++)if(b[g].name==e&&b[g].type==d[e].type){k=!0;break}k||delete d[e]}},e=this.editorUi.editor.graph.view.getState(b);null!=e&&null!=e.shape&&(e.shape.commonCustomPropAdded||(e.shape.commonCustomPropAdded=!0,e.shape.customProperties=e.shape.customProperties||[],e.cell.vertex?Array.prototype.push.apply(e.shape.customProperties,Editor.commonVertexProperties):
-Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),g(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{g(JSON.parse(b))}catch(ka){}}};var v=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.editorUi.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));v.apply(this,arguments);if(Editor.enableCustomProperties){for(var d=
+Array.prototype.push.apply(e.shape.customProperties,Editor.commonEdgeProperties)),g(e.shape.customProperties));b=b.getAttribute("customProperties");if(null!=b)try{g(JSON.parse(b))}catch(ja){}}};var v=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var b=this.editorUi.getSelectionState();"image"!=b.style.shape&&!b.containsLabel&&0<b.cells.length&&this.container.appendChild(this.addStyles(this.createPanel()));v.apply(this,arguments);if(Editor.enableCustomProperties){for(var d=
{},c=b.vertices,g=b.edges,e=0;e<c.length;e++)this.findCommonProperties(c[e],d,0==e);for(e=0;e<g.length;e++)this.findCommonProperties(g[e],d,0==c.length&&0==e);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(d).length&&this.container.appendChild(this.addProperties(this.createPanel(),d,b))}};var t=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(b){this.addActions(b,["copyStyle","pasteStyle"]);return t.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=
!0;StyleFormatPanel.prototype.addProperties=function(b,d,c){function g(b,d,c,g){n.getModel().beginUpdate();try{var e=[],k=[];if(null!=c.index){for(var f=[],l=c.parentRow.nextSibling;l&&l.getAttribute("data-pName")==b;)f.push(l.getAttribute("data-pValue")),l=l.nextSibling;c.index<f.length?null!=g?f.splice(g,1):f[c.index]=d:f.push(d);null!=c.size&&f.length>c.size&&(f=f.slice(0,c.size));d=f.join(",");null!=c.countProperty&&(n.setCellStyles(c.countProperty,f.length,n.getSelectionCells()),e.push(c.countProperty),
k.push(f.length))}n.setCellStyles(b,d,n.getSelectionCells());e.push(b);k.push(d);if(null!=c.dependentProps)for(b=0;b<c.dependentProps.length;b++){var m=c.dependentPropsDefVal[b],p=c.dependentPropsVals[b];if(p.length>d)p=p.slice(0,d);else for(var t=p.length;t<d;t++)p.push(m);p=p.join(",");n.setCellStyles(c.dependentProps[b],p,n.getSelectionCells());e.push(c.dependentProps[b]);k.push(p)}if("function"==typeof c.onChange)c.onChange(n,d);u.editorUi.fireEvent(new mxEventObject("styleChanged","keys",e,"values",
@@ -3306,8 +3306,8 @@ q[t],x.val==c){mxUtils.write(z,mxResources.get(x.dispName,null,x.dispName));brea
b.appendChild(f);mxEvent.addListener(f,"keypress",function(b){13==b.keyCode&&k()});f.focus();mxEvent.addListener(f,"blur",function(){k()})})));p.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(u,function(b){g(d,"",p,p.index);mxEvent.consume(b)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",z.appendChild(t));y.appendChild(z);return y}var u=this,n=this.editorUi.editor.graph,t=[];b.style.position="relative";b.style.padding="0";var v=document.createElement("table");
v.className="geProperties";v.style.whiteSpace="nowrap";v.style.width="100%";var x=document.createElement("tr");x.className="gePropHeader";var y=document.createElement("th");y.className="gePropHeaderCell";var z=document.createElement("img");z.src=Sidebar.prototype.expandedImage;z.style.verticalAlign="middle";y.appendChild(z);mxUtils.write(y,mxResources.get("property"));x.style.cursor="pointer";var q=function(){var d=v.querySelectorAll(".gePropNonHeaderRow"),c;if(u.editorUi.propertiesCollapsed){z.src=
Sidebar.prototype.collapsedImage;c="none";for(var g=b.childNodes.length-1;0<=g;g--)try{var e=b.childNodes[g],k=e.nodeName.toUpperCase();"INPUT"!=k&&"SELECT"!=k||b.removeChild(e)}catch(Ga){}}else z.src=Sidebar.prototype.expandedImage,c="";for(g=0;g<d.length;g++)d[g].style.display=c};mxEvent.addListener(x,"click",function(){u.editorUi.propertiesCollapsed=!u.editorUi.propertiesCollapsed;q()});x.appendChild(y);y=document.createElement("th");y.className="gePropHeaderCell";y.innerHTML=mxResources.get("value");
-x.appendChild(y);v.appendChild(x);var B=!1,C=!1,x=null;1==c.vertices.length&&0==c.edges.length?x=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(x=c.edges[0].id);null!=x&&v.appendChild(p("id",mxUtils.htmlEntities(x),{dispName:"ID",type:"readOnly"},!0,!1));for(var M in d)if(x=d[M],"function"!=typeof x.isVisible||x.isVisible(c,this)){var G=null!=c.style[M]?mxUtils.htmlEntities(c.style[M]+""):null!=x.getDefaultValue?x.getDefaultValue(c,this):x.defVal;if("separator"==x.type)C=!C;else{if("staticArr"==
-x.type)x.size=parseInt(c.style[x.sizeProperty]||d[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var P=x.dependentProps,J=[],N=[],y=0;y<P.length;y++){var H=c.style[P[y]];N.push(d[P[y]].subDefVal);J.push(null!=H?H.split(","):[])}x.dependentPropsDefVal=N;x.dependentPropsVals=J}v.appendChild(p(M,G,x,B,C));B=!B}}for(y=0;y<t.length;y++)for(x=t[y],d=x.parentRow,c=0;c<x.values.length;c++)M=p(x.name,x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:c,defVal:x.defVal,
+x.appendChild(y);v.appendChild(x);var B=!1,C=!1,x=null;1==c.vertices.length&&0==c.edges.length?x=c.vertices[0].id:0==c.vertices.length&&1==c.edges.length&&(x=c.edges[0].id);null!=x&&v.appendChild(p("id",mxUtils.htmlEntities(x),{dispName:"ID",type:"readOnly"},!0,!1));for(var M in d)if(x=d[M],"function"!=typeof x.isVisible||x.isVisible(c,this)){var E=null!=c.style[M]?mxUtils.htmlEntities(c.style[M]+""):null!=x.getDefaultValue?x.getDefaultValue(c,this):x.defVal;if("separator"==x.type)C=!C;else{if("staticArr"==
+x.type)x.size=parseInt(c.style[x.sizeProperty]||d[x.sizeProperty].defVal)||0;else if(null!=x.dependentProps){for(var R=x.dependentProps,J=[],N=[],y=0;y<R.length;y++){var H=c.style[R[y]];N.push(d[R[y]].subDefVal);J.push(null!=H?H.split(","):[])}x.dependentPropsDefVal=N;x.dependentPropsVals=J}v.appendChild(p(M,E,x,B,C));B=!B}}for(y=0;y<t.length;y++)for(x=t[y],d=x.parentRow,c=0;c<x.values.length;c++)M=p(x.name,x.values[c],{type:x.type,parentRow:x.parentRow,isDeletable:x.isDeletable,index:c,defVal:x.defVal,
countProperty:x.countProperty,size:x.size},0==c%2,x.flipBkg),d.parentNode.insertBefore(M,d.nextSibling),d=M;b.appendChild(v);q();return b};StyleFormatPanel.prototype.addStyles=function(b){function d(b){mxEvent.addListener(b,"mouseenter",function(){b.style.opacity="1"});mxEvent.addListener(b,"mouseleave",function(){b.style.opacity="0.5"})}var c=this.editorUi,g=c.editor.graph,e=document.createElement("div");e.style.whiteSpace="nowrap";e.style.paddingLeft="24px";e.style.paddingRight="20px";b.style.paddingLeft=
"16px";b.style.paddingBottom="6px";b.style.position="relative";b.appendChild(e);var 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(" "),f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.position="relative";f.style.textAlign="center";f.style.width="210px";for(var l=[],m=0;m<this.defaultColorSchemes.length;m++){var p=document.createElement("div");p.style.display=
"inline-block";p.style.width="6px";p.style.height="6px";p.style.marginLeft="4px";p.style.marginRight="3px";p.style.borderRadius="3px";p.style.cursor="pointer";p.style.background="transparent";p.style.border="1px solid #b5b6b7";mxUtils.bind(this,function(b){mxEvent.addListener(p,"click",mxUtils.bind(this,function(){u(b)}))})(m);l.push(p);f.appendChild(p)}var u=mxUtils.bind(this,function(b){null!=l[b]&&(null!=this.format.currentScheme&&null!=l[this.format.currentScheme]&&(l[this.format.currentScheme].style.background=
@@ -3341,19 +3341,19 @@ u.style.overflow="hidden";u.style.whiteSpace="nowrap";u.style.textOverflow="elli
"100%";var p=document.createElement("div");p.style.boxSizing="border-box";p.style.borderRadius="4px";p.style.userSelect="none";p.style.overflow="auto";p.style.position="absolute";p.style.left="10px";p.style.right="10px";p.style.top="10px";p.style.border=f.isEnabled()?"1px solid #808080":"none";p.style.bottom=f.isEnabled()?"48px":"10px";m.appendChild(p);var u=mxUtils.button(mxResources.get("reset"),function(b){f.hiddenTags=[];mxEvent.isShiftDown(b)||(l=f.hiddenTags.slice());g();f.refresh()});u.setAttribute("title",
mxResources.get("reset"));u.className="geBtn";u.style.margin="0 4px 0 0";var n=mxUtils.button(mxResources.get("add"),function(){null!=c&&c(l,function(b){l=b;t()})});n.setAttribute("title",mxResources.get("add"));n.className="geBtn";n.style.margin="0";f.addListener(mxEvent.ROOT,function(){l=f.hiddenTags.slice()});var t=mxUtils.bind(this,function(d,c){if(b()){for(var g=f.getAllTags(),e=0;e<g.length;e++)0>mxUtils.indexOf(l,g[e])&&l.push(g[e]);l.sort();f.isSelectionEmpty()?k(l):k(l,f.getCommonTagsForCells(f.getSelectionCells()))}});
f.selectionModel.addListener(mxEvent.CHANGE,t);f.model.addListener(mxEvent.CHANGE,t);f.addListener(mxEvent.REFRESH,t);var v=document.createElement("div");v.style.boxSizing="border-box";v.style.whiteSpace="nowrap";v.style.position="absolute";v.style.overflow="hidden";v.style.bottom="0px";v.style.height="42px";v.style.right="10px";v.style.left="10px";f.isEnabled()&&(v.appendChild(u),v.appendChild(n),m.appendChild(v));return{div:m,refresh:t}};Graph.prototype.getCustomFonts=function(){var b=this.extFonts,
-b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");d=Graph.getFontUrl(b,d);for(var g=0;g<c.length;g++)c[g].getAttribute("face")==b&&c[g].getAttribute("data-font-src")!=d&&c[g].setAttribute("data-font-src",d)}};var F=Graph.prototype.isFastZoomEnabled;
-Graph.prototype.isFastZoomEnabled=function(){return F.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var d in b)this.globalVars[d]=b[d]}catch(J){null!=window.console&&console.log("Error in vars URL parameter: "+J)}};Graph.prototype.getExportVariables=
-function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var E=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var d=E.apply(this,arguments);null==d&&null!=this.globalVars&&(d=this.globalVars[b]);return d};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};
+b=null!=b?b.slice():[],d;for(d in Graph.customFontElements){var c=Graph.customFontElements[d];b.push({name:c.name,url:c.url})}return b};Graph.prototype.setFont=function(b,d){Graph.addFont(b,d);document.execCommand("fontname",!1,b);if(null!=d){var c=this.cellEditor.textarea.getElementsByTagName("font");d=Graph.getFontUrl(b,d);for(var g=0;g<c.length;g++)c[g].getAttribute("face")==b&&c[g].getAttribute("data-font-src")!=d&&c[g].setAttribute("data-font-src",d)}};var G=Graph.prototype.isFastZoomEnabled;
+Graph.prototype.isFastZoomEnabled=function(){return G.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars=Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var b=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=b)for(var d in b)this.globalVars[d]=b[d]}catch(J){null!=window.console&&console.log("Error in vars URL parameter: "+J)}};Graph.prototype.getExportVariables=
+function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var F=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(b){var d=F.apply(this,arguments);null==d&&null!=this.globalVars&&(d=this.globalVars[b]);return d};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var b=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(b.ownerDocument)).decode(b)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};
var O=Graph.prototype.getSvg;Graph.prototype.getSvg=function(b,d,c,g,e,k,f,l,m,p,u,n,t,v){var x=null,y=null,z=null;n||null==this.themes||"darkTheme"!=this.defaultThemeName||(x=this.stylesheet,y=this.shapeForegroundColor,z=this.shapeBackgroundColor,this.shapeForegroundColor="darkTheme"==this.defaultThemeName?"#000000":Editor.lightColor,this.shapeBackgroundColor="darkTheme"==this.defaultThemeName?"#ffffff":Editor.darkColor,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var q=O.apply(this,
-arguments),B=this.getCustomFonts();if(u&&0<B.length){var M=q.ownerDocument,C=null!=M.createElementNS?M.createElementNS(mxConstants.NS_SVG,"style"):M.createElement("style");null!=M.setAttributeNS?C.setAttributeNS("type","text/css"):C.setAttribute("type","text/css");for(var K="",G="",P=0;P<B.length;P++){var N=B[P].name,H=B[P].url;Graph.isCssFontUrl(H)?K+="@import url("+H+");\n":G+='@font-face {\nfont-family: "'+N+'";\nsrc: url("'+H+'");\n}\n'}C.appendChild(M.createTextNode(K+G));q.getElementsByTagName("defs")[0].appendChild(C)}null!=
+arguments),B=this.getCustomFonts();if(u&&0<B.length){var M=q.ownerDocument,C=null!=M.createElementNS?M.createElementNS(mxConstants.NS_SVG,"style"):M.createElement("style");null!=M.setAttributeNS?C.setAttributeNS("type","text/css"):C.setAttribute("type","text/css");for(var K="",E="",R=0;R<B.length;R++){var N=B[R].name,H=B[R].url;Graph.isCssFontUrl(H)?K+="@import url("+H+");\n":E+='@font-face {\nfont-family: "'+N+'";\nsrc: url("'+H+'");\n}\n'}C.appendChild(M.createTextNode(K+E));q.getElementsByTagName("defs")[0].appendChild(C)}null!=
x&&(this.shapeBackgroundColor=z,this.shapeForegroundColor=y,this.stylesheet=x,this.refresh());return q};var B=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var b=B.apply(this,arguments);if(this.mathEnabled){var d=b.drawText;b.drawText=function(b,c){if(null!=b.text&&null!=b.text.value&&b.text.checkBounds()&&(mxUtils.isNode(b.text.value)||b.text.dialect==mxConstants.DIALECT_STRICTHTML)){var g=b.text.getContentNode();if(null!=g){g=g.cloneNode(!0);if(g.getElementsByTagNameNS)for(var e=
-g.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=g.innerHTML&&(e=b.text.value,b.text.value=g.innerHTML,d.apply(this,arguments),b.text.value=e)}}else d.apply(this,arguments)}}return b};var G=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){G.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,
+g.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<e.length;)e[0].parentNode.removeChild(e[0]);null!=g.innerHTML&&(e=b.text.value,b.text.value=g.innerHTML,d.apply(this,arguments),b.text.value=e)}}else d.apply(this,arguments)}}return b};var E=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(b){E.apply(this,arguments);null!=b.secondLabel&&(b.secondLabel.destroy(),b.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(b){return[b.shape,
b.text,b.secondLabel,b.control]};var H=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){H.apply(this,arguments);this.enumerationState=0};var L=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated=function(b){null!=b.shape&&this.redrawEnumerationState(b);return L.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(b){b=decodeURIComponent(mxUtils.getValue(b.style,"enumerateValue",""));""==b&&(b=++this.enumerationState);
return'<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">'+mxUtils.htmlEntities(b)+"</div>"};mxGraphView.prototype.redrawEnumerationState=function(b){var d="1"==mxUtils.getValue(b.style,"enumerate",0);d&&null==b.secondLabel?(b.secondLabel=new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),b.secondLabel.size=12,b.secondLabel.state=b,b.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,this.graph.cellRenderer.initializeLabel(b,b.secondLabel)):
d||null==b.secondLabel||(b.secondLabel.destroy(),b.secondLabel=null);d=b.secondLabel;if(null!=d){var c=b.view.scale,g=this.createEnumerationValue(b);b=this.graph.model.isVertex(b.cell)?new mxRectangle(b.x+b.width-4*c,b.y+4*c,0,0):mxRectangle.fromPoint(b.view.getPoint(b));d.bounds.equals(b)&&d.value==g&&d.scale==c||(d.bounds=b,d.value=g,d.scale=c,d.redraw())}};var N=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){N.apply(this,arguments);if(mxClient.IS_GC&&
null!=this.getDrawPane()){var b=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&&this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),
this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",b.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,b.ownerSVGElement))}};var M=Graph.prototype.refresh;Graph.prototype.refresh=function(){M.apply(this,arguments);this.refreshBackgroundImage()};Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),
-this.view.validateBackgroundImage())};var P=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){P.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),
+this.view.validateBackgroundImage())};var R=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){R.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(b){"data:action/json,"==b.substring(0,17)&&(b=JSON.parse(b.substring(17)),null!=b.actions&&this.executeCustomActions(b.actions))};Graph.prototype.executeCustomActions=function(b,d){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),
null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions"));else{this.executingCustomActions=!0;var c=!1,g=0,e=0,k=mxUtils.bind(this,function(){c||(c=!0,this.model.beginUpdate())}),f=mxUtils.bind(this,function(){c&&(c=!1,this.model.endUpdate())}),l=mxUtils.bind(this,function(){0<g&&g--;0==g&&m()}),m=mxUtils.bind(this,function(){if(e<b.length){var c=this.stoppingCustomActions,p=b[e++],u=[];if(null!=p.open)if(f(),this.isCustomLink(p.open)){if(!this.customLinkClicked(p.open))return}else this.openLink(p.open);
null==p.wait||c||(this.pendingExecuteNextAction=mxUtils.bind(this,function(){this.pendingWaitThread=this.pendingExecuteNextAction=null;l()}),g++,this.pendingWaitThread=window.setTimeout(this.pendingExecuteNextAction,""!=p.wait?parseInt(p.wait):1E3),f());null!=p.opacity&&null!=p.opacity.value&&Graph.setOpacityForNodes(this.getNodesForCells(this.getCellsForAction(p.opacity,!0)),p.opacity.value);null!=p.fadeIn&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeIn,!0)),0,1,l,c?0:
p.fadeIn.delay));null!=p.fadeOut&&(g++,Graph.fadeNodes(this.getNodesForCells(this.getCellsForAction(p.fadeOut,!0)),1,0,l,c?0:p.fadeOut.delay));null!=p.wipeIn&&(u=u.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeIn,!0),!0)));null!=p.wipeOut&&(u=u.concat(this.createWipeAnimations(this.getCellsForAction(p.wipeOut,!0),!1)));null!=p.toggle&&(k(),this.toggleCells(this.getCellsForAction(p.toggle,!0)));if(null!=p.show){k();var n=this.getCellsForAction(p.show,!0);Graph.setOpacityForNodes(this.getNodesForCells(n),
@@ -3361,9 +3361,9 @@ p.fadeIn.delay));null!=p.fadeOut&&(g++,Graph.fadeNodes(this.getNodesForCells(thi
this.isEnabled()&&(n=this.getCellsForAction(p.select),this.setSelectionCells(n));null!=p.highlight&&(n=this.getCellsForAction(p.highlight),this.highlightCells(n,p.highlight.color,p.highlight.duration,p.highlight.opacity));null!=p.scroll&&(n=this.getCellsForAction(p.scroll));null!=p.viewbox&&this.fitWindow(p.viewbox,p.viewbox.border);0<n.length&&this.scrollCellToVisible(n[0]);if(null!=p.tags){n=[];null!=p.tags.hidden&&(n=n.concat(p.tags.hidden));if(null!=p.tags.visible)for(var t=this.getAllTags(),
v=0;v<t.length;v++)0>mxUtils.indexOf(p.tags.visible,t[v])&&0>mxUtils.indexOf(n,t[v])&&n.push(t[v]);this.hiddenTags=n;this.refresh()}0<u.length&&(g++,this.executeAnimations(u,l,c?1:p.steps,c?0:p.delay));0==g?m():f()}else this.stoppingCustomActions=this.executingCustomActions=!1,f(),null!=d&&d()});m()}};Graph.prototype.doUpdateCustomLinksForCell=function(b,d){var c=this.getLinkForCell(d);null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(d,this.updateCustomLink(b,c));if(this.isHtmlLabel(d)){var g=
document.createElement("div");g.innerHTML=this.sanitizeHtml(this.getLabel(d));for(var e=g.getElementsByTagName("a"),k=!1,f=0;f<e.length;f++)c=e[f].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(e[f].setAttribute("href",this.updateCustomLink(b,c)),k=!0);k&&this.labelChanged(d,g.innerHTML)}};Graph.prototype.updateCustomLink=function(b,d){if("data:action/json,"==d.substring(0,17))try{var c=JSON.parse(d.substring(17));null!=c.actions&&(this.updateCustomLinkActions(b,c.actions),
-d="data:action/json,"+JSON.stringify(c))}catch(X){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<d.length;c++){var g=d[c],e;for(e in g)this.updateCustomLinkAction(b,g[e],"cells"),this.updateCustomLinkAction(b,g[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,d,c){if(null!=d&&null!=d[c]){for(var g=[],e=0;e<d[c].length;e++)if("*"==d[c][e])g.push(d[c][e]);else{var k=b[d[c][e]];null!=k?""!=k&&g.push(k):g.push(d[c][e])}d[c]=g}};Graph.prototype.getCellsForAction=
-function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var g=[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&g.push(c[e]);c=g}return c};Graph.prototype.getCellsById=function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==b[c])var g=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=g},g));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var V=Graph.prototype.isCellVisible;
-Graph.prototype.isCellVisible=function(b){return V.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,g){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());
+d="data:action/json,"+JSON.stringify(c))}catch(ea){}return d};Graph.prototype.updateCustomLinkActions=function(b,d){for(var c=0;c<d.length;c++){var g=d[c],e;for(e in g)this.updateCustomLinkAction(b,g[e],"cells"),this.updateCustomLinkAction(b,g[e],"excludeCells")}};Graph.prototype.updateCustomLinkAction=function(b,d,c){if(null!=d&&null!=d[c]){for(var g=[],e=0;e<d[c].length;e++)if("*"==d[c][e])g.push(d[c][e]);else{var k=b[d[c][e]];null!=k?""!=k&&g.push(k):g.push(d[c][e])}d[c]=g}};Graph.prototype.getCellsForAction=
+function(b,d){var c=this.getCellsById(b.cells).concat(this.getCellsForTags(b.tags,null,d));if(null!=b.excludeCells){for(var g=[],e=0;e<c.length;e++)0>b.excludeCells.indexOf(c[e].id)&&g.push(c[e]);c=g}return c};Graph.prototype.getCellsById=function(b){var d=[];if(null!=b)for(var c=0;c<b.length;c++)if("*"==b[c])var g=this.model.getRoot(),d=d.concat(this.model.filterDescendants(function(b){return b!=g},g));else{var e=this.model.getCell(b[c]);null!=e&&d.push(e)}return d};var W=Graph.prototype.isCellVisible;
+Graph.prototype.isCellVisible=function(b){return W.apply(this,arguments)&&!this.isAllTagsHidden(this.getTagsForCell(b))};Graph.prototype.isAllTagsHidden=function(b){if(null==b||0==b.length||0==this.hiddenTags.length)return!1;b=b.split(" ");if(b.length>this.hiddenTags.length)return!1;for(var d=0;d<b.length;d++)if(0>mxUtils.indexOf(this.hiddenTags,b[d]))return!1;return!0};Graph.prototype.getCellsForTags=function(b,d,c,g){var e=[];if(null!=b){d=null!=d?d:this.model.getDescendants(this.model.getRoot());
for(var k=0,f={},l=0;l<b.length;l++)0<b[l].length&&(f[b[l]]=!0,k++);for(l=0;l<d.length;l++)if(c&&this.model.getParent(d[l])==this.model.root||this.model.isVertex(d[l])||this.model.isEdge(d[l])){var m=this.getTagsForCell(d[l]),p=!1;if(0<m.length&&(m=m.split(" "),m.length>=b.length)){for(var u=p=0;u<m.length&&p<k;u++)null!=f[m[u]]&&p++;p=p==k}p&&(1!=g||this.isCellVisible(d[l]))&&e.push(d[l])}}return e};Graph.prototype.getAllTags=function(){return this.getTagsForCells(this.model.getDescendants(this.model.getRoot()))};
Graph.prototype.getCommonTagsForCells=function(b){for(var d=null,c=[],g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]),c=[];if(0<e.length){for(var e=e.split(" "),k={},f=0;f<e.length;f++)if(null==d||null!=d[e[f]])k[e[f]]=!0,c.push(e[f]);d=k}else return[]}return c};Graph.prototype.getTagsForCells=function(b){for(var d=[],c={},g=0;g<b.length;g++){var e=this.getTagsForCell(b[g]);if(0<e.length)for(var e=e.split(" "),k=0;k<e.length;k++)null==c[e[k]]&&(c[e[k]]=!0,d.push(e[k]))}return d};Graph.prototype.getTagsForCell=
function(b){return this.getAttributeForCell(b,"tags","")};Graph.prototype.addTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();try{for(var c=0;c<b.length;c++){for(var g=this.getTagsForCell(b[c]),e=g.split(" "),k=!1,f=0;f<d.length;f++){var l=mxUtils.trim(d[f]);""!=l&&0>mxUtils.indexOf(e,l)&&(g=0<g.length?g+" "+l:l,k=!0)}k&&this.setAttributeForCell(b[c],"tags",g)}}finally{this.model.endUpdate()}}};Graph.prototype.removeTagsForCells=function(b,d){if(0<b.length&&0<d.length){this.model.beginUpdate();
@@ -3385,32 +3385,32 @@ STENCIL_PATH+"/mockup/misc.xml"];mxStencilRegistry.libraries["mockup/markup"]=[S
STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",SHAPES_PATH+"/mxBasic.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.ibm=[SHAPES_PATH+"/mxIBM.js",STENCIL_PATH+"/ibm.xml"];mxStencilRegistry.libraries.cabinets=[SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];
mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js",STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=
[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.uml25=[SHAPES_PATH+"/mxUML25.js"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+
-"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var W=mxMarker.createMarker;mxMarker.createMarker=
-function(b,d,c,g,e,k,f,l,m,p){if(null!=c&&null==mxMarker.markers[c]){var u=this.getPackageForType(c);null!=u&&mxStencilRegistry.getStencil(u)}return W.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){v.value=Math.max(1,Math.min(l,Math.max(parseInt(v.value),parseInt(t.value))));t.value=Math.max(1,Math.min(l,Math.min(parseInt(v.value),parseInt(t.value))))}function g(d){function c(d,c,k){var f=d.useCssTransforms,l=d.currentTranslate,m=d.currentScale,p=d.view.translate,u=
-d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=1,d.view.translate=new mxPoint(0,0),d.view.scale=1);var n=d.getGraphBounds(),t=0,v=0,y=E.get(),z=1/d.pageScale,B=x.checked;if(B)var z=parseInt(D.value),M=parseInt(ga.value),z=Math.min(y.height*M/(n.height/d.view.scale),y.width*z/(n.width/d.view.scale));else z=parseInt(q.value)/(100*d.pageScale),isNaN(z)&&(g=1/d.pageScale,q.value="100 %");y=mxRectangle.fromRectangle(y);y.width=Math.ceil(y.width*
-g);y.height=Math.ceil(y.height*g);z*=g;!B&&d.pageVisible?(n=d.getPageLayout(),t-=n.x*y.width,v-=n.y*y.height):B=!0;if(null==c){c=PrintDialog.createPrintPreview(d,z,y,0,t,v,B);c.pageSelector=!1;c.mathEnabled=!1;t=b.getCurrentFile();null!=t&&(c.title=t.getTitle());var P=c.writeHead;c.writeHead=function(c){P.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),
+"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(b){var d=null;null!=b&&0<b.length&&("ER"==b.substring(0,2)?d="mxgraph.er":"sysML"==b.substring(0,5)&&(d="mxgraph.sysml"));return d};var X=mxMarker.createMarker;mxMarker.createMarker=
+function(b,d,c,g,e,k,f,l,m,p){if(null!=c&&null==mxMarker.markers[c]){var u=this.getPackageForType(c);null!=u&&mxStencilRegistry.getStencil(u)}return X.apply(this,arguments)};PrintDialog.prototype.create=function(b,d){function c(){v.value=Math.max(1,Math.min(l,Math.max(parseInt(v.value),parseInt(t.value))));t.value=Math.max(1,Math.min(l,Math.min(parseInt(v.value),parseInt(t.value))))}function g(d){function c(d,c,k){var f=d.useCssTransforms,l=d.currentTranslate,m=d.currentScale,p=d.view.translate,u=
+d.view.scale;d.useCssTransforms&&(d.useCssTransforms=!1,d.currentTranslate=new mxPoint(0,0),d.currentScale=1,d.view.translate=new mxPoint(0,0),d.view.scale=1);var n=d.getGraphBounds(),t=0,v=0,y=F.get(),z=1/d.pageScale,B=x.checked;if(B)var z=parseInt(D.value),M=parseInt(fa.value),z=Math.min(y.height*M/(n.height/d.view.scale),y.width*z/(n.width/d.view.scale));else z=parseInt(q.value)/(100*d.pageScale),isNaN(z)&&(g=1/d.pageScale,q.value="100 %");y=mxRectangle.fromRectangle(y);y.width=Math.ceil(y.width*
+g);y.height=Math.ceil(y.height*g);z*=g;!B&&d.pageVisible?(n=d.getPageLayout(),t-=n.x*y.width,v-=n.y*y.height):B=!0;if(null==c){c=PrintDialog.createPrintPreview(d,z,y,0,t,v,B);c.pageSelector=!1;c.mathEnabled=!1;t=b.getCurrentFile();null!=t&&(c.title=t.getTitle());var E=c.writeHead;c.writeHead=function(c){E.apply(this,arguments);if(mxClient.IS_GC||mxClient.IS_SF)c.writeln('<style type="text/css">'),c.writeln(Editor.mathJaxWebkitCss),c.writeln("</style>");mxClient.IS_GC&&(c.writeln('<style type="text/css">'),
c.writeln("@media print {"),c.writeln("span.MathJax_SVG svg { shape-rendering: crispEdges; }"),c.writeln("}"),c.writeln("</style>"));null!=b.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(b.editor.fontCss),c.writeln("</style>"));for(var g=d.getCustomFonts(),e=0;e<g.length;e++){var k=g[e].name,f=g[e].url;Graph.isCssFontUrl(f)?c.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(f)+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\nfont-family: "'+
-mxUtils.htmlEntities(k)+'";\nsrc: url("'+mxUtils.htmlEntities(f)+'");\n}'),c.writeln("</style>"))}};if("undefined"!==typeof MathJax){var G=c.renderPage;c.renderPage=function(d,c,g,e,k,f){var l=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var m=G.apply(this,arguments);mxClient.NO_FO=l;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:m.className="geDisableMathJax";return m}}t=null;v=e.enableFlowAnimation;e.enableFlowAnimation=
+mxUtils.htmlEntities(k)+'";\nsrc: url("'+mxUtils.htmlEntities(f)+'");\n}'),c.writeln("</style>"))}};if("undefined"!==typeof MathJax){var R=c.renderPage;c.renderPage=function(d,c,g,e,k,f){var l=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!b.editor.useForeignObjectForMath?!0:b.editor.originalNoForeignObject;var m=R.apply(this,arguments);mxClient.NO_FO=l;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:m.className="geDisableMathJax";return m}}t=null;v=e.enableFlowAnimation;e.enableFlowAnimation=
!1;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(t=e.stylesheet,e.stylesheet=e.getDefaultStylesheet(),e.refresh());c.open(null,null,k,!0);e.enableFlowAnimation=v;null!=t&&(e.stylesheet=t,e.refresh())}else{y=d.background;if(null==y||""==y||y==mxConstants.NONE)y="#ffffff";c.backgroundColor=y;c.autoOrigin=B;c.appendGraph(d,z,t,v,k,!0);k=d.getCustomFonts();if(null!=c.wnd)for(t=0;t<k.length;t++)v=k[t].name,B=k[t].url,Graph.isCssFontUrl(B)?c.wnd.document.writeln('<link rel="stylesheet" href="'+mxUtils.htmlEntities(B)+
'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),c.wnd.document.writeln('@font-face {\nfont-family: "'+mxUtils.htmlEntities(v)+'";\nsrc: url("'+mxUtils.htmlEntities(B)+'");\n}'),c.wnd.document.writeln("</style>"))}f&&(d.useCssTransforms=f,d.currentTranslate=l,d.currentScale=m,d.view.translate=p,d.view.scale=u);return c}var g=parseInt(C.value)/100;isNaN(g)&&(g=1,C.value="100 %");var g=.75*g,k=null;null!=e.themes&&"darkTheme"==e.defaultThemeName&&(k=e.stylesheet,
-e.stylesheet=e.getDefaultStylesheet(),e.refresh());var f=t.value,l=v.value,p=!u.checked,n=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,u.checked,f,l,x.checked,D.value,ga.value,parseInt(q.value)/100,parseInt(C.value)/100,E.get());else{p&&(p=f==m&&l==m);if(!p&&null!=b.pages&&b.pages.length){var y=0,p=b.pages.length-1;u.checked||(y=parseInt(f)-1,p=parseInt(l)-1);for(var z=y;z<=p;z++){var B=b.pages[z],f=B==b.currentPage?e:null;if(null==f){var f=b.createTemporaryGraph(e.stylesheet),l=!0,
-y=!1,M=null,P=null;null==B.viewState&&null==B.root&&b.updatePageRoot(B);null!=B.viewState&&(l=B.viewState.pageVisible,y=B.viewState.mathEnabled,M=B.viewState.background,P=B.viewState.backgroundImage,f.extFonts=B.viewState.extFonts);f.background=M;f.backgroundImage=null!=P?new mxImage(P.src,P.width,P.height):null;f.pageVisible=l;f.mathEnabled=y;var G=f.getGlobalVariable;f.getGlobalVariable=function(d){return"page"==d?B.getName():"pagenumber"==d?z+1:"pagecount"==d?null!=b.pages?b.pages.length:1:G.apply(this,
+e.stylesheet=e.getDefaultStylesheet(),e.refresh());var f=t.value,l=v.value,p=!u.checked,n=null;if(EditorUi.isElectronApp)PrintDialog.electronPrint(b,u.checked,f,l,x.checked,D.value,fa.value,parseInt(q.value)/100,parseInt(C.value)/100,F.get());else{p&&(p=f==m&&l==m);if(!p&&null!=b.pages&&b.pages.length){var y=0,p=b.pages.length-1;u.checked||(y=parseInt(f)-1,p=parseInt(l)-1);for(var z=y;z<=p;z++){var B=b.pages[z],f=B==b.currentPage?e:null;if(null==f){var f=b.createTemporaryGraph(e.stylesheet),l=!0,
+y=!1,M=null,E=null;null==B.viewState&&null==B.root&&b.updatePageRoot(B);null!=B.viewState&&(l=B.viewState.pageVisible,y=B.viewState.mathEnabled,M=B.viewState.background,E=B.viewState.backgroundImage,f.extFonts=B.viewState.extFonts);f.background=M;f.backgroundImage=null!=E?new mxImage(E.src,E.width,E.height):null;f.pageVisible=l;f.mathEnabled=y;var R=f.getGlobalVariable;f.getGlobalVariable=function(d){return"page"==d?B.getName():"pagenumber"==d?z+1:"pagecount"==d?null!=b.pages?b.pages.length:1:R.apply(this,
arguments)};document.body.appendChild(f.container);b.updatePageRoot(B);f.model.setRoot(B.root)}n=c(f,n,z!=p);f!=e&&f.container.parentNode.removeChild(f.container)}}else n=c(e);null==n?b.handleError({message:mxResources.get("errorUpdatingPreview")}):(n.mathEnabled&&(p=n.wnd.document,d&&(n.wnd.IMMEDIATE_PRINT=!0),p.writeln('<script type="text/javascript" src="'+DRAWIO_BASE_URL+'/js/math-print.js">\x3c/script>')),n.closeDocument(),!n.mathEnabled&&d&&PrintDialog.printPreview(n));null!=k&&(e.stylesheet=
k,e.refresh())}}var e=b.editor.graph,k=document.createElement("div"),f=document.createElement("h3");f.style.width="100%";f.style.textAlign="center";f.style.marginTop="0px";mxUtils.write(f,d||mxResources.get("print"));k.appendChild(f);var l=1,m=1,p=document.createElement("div");p.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var u=document.createElement("input");u.style.cssText="margin-right:8px;margin-bottom:8px;";u.setAttribute("value","all");u.setAttribute("type",
"radio");u.setAttribute("name","pages-printdialog");p.appendChild(u);f=document.createElement("span");mxUtils.write(f,mxResources.get("printAllPages"));p.appendChild(f);mxUtils.br(p);var n=u.cloneNode(!0);u.setAttribute("checked","checked");n.setAttribute("value","range");p.appendChild(n);f=document.createElement("span");mxUtils.write(f,mxResources.get("pages")+":");p.appendChild(f);var t=document.createElement("input");t.style.cssText="margin:0 8px 0 8px;";t.setAttribute("value","1");t.setAttribute("type",
"number");t.setAttribute("min","1");t.style.width="50px";p.appendChild(t);f=document.createElement("span");mxUtils.write(f,mxResources.get("to"));p.appendChild(f);var v=t.cloneNode(!0);p.appendChild(v);mxEvent.addListener(t,"focus",function(){n.checked=!0});mxEvent.addListener(v,"focus",function(){n.checked=!0});mxEvent.addListener(t,"change",c);mxEvent.addListener(v,"change",c);if(null!=b.pages&&(l=b.pages.length,null!=b.currentPage))for(f=0;f<b.pages.length;f++)if(b.currentPage==b.pages[f]){m=f+
1;t.value=m;v.value=m;break}t.setAttribute("max",l);v.setAttribute("max",l);b.isPagesEnabled()?1<l&&(k.appendChild(p),n.checked=!0):n.checked=!0;var y=document.createElement("div");y.style.marginBottom="10px";var z=document.createElement("input");z.style.marginRight="8px";z.setAttribute("value","adjust");z.setAttribute("type","radio");z.setAttribute("name","printZoom");y.appendChild(z);f=document.createElement("span");mxUtils.write(f,mxResources.get("adjustTo"));y.appendChild(f);var q=document.createElement("input");
q.style.cssText="margin:0 8px 0 8px;";q.setAttribute("value","100 %");q.style.width="50px";y.appendChild(q);mxEvent.addListener(q,"focus",function(){z.checked=!0});k.appendChild(y);var p=p.cloneNode(!1),x=z.cloneNode(!0);x.setAttribute("value","fit");z.setAttribute("checked","checked");f=document.createElement("div");f.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";f.appendChild(x);p.appendChild(f);y=document.createElement("table");y.style.display="inline-block";
-var B=document.createElement("tbody"),M=document.createElement("tr"),G=M.cloneNode(!0),P=document.createElement("td"),N=P.cloneNode(!0),H=P.cloneNode(!0),I=P.cloneNode(!0),F=P.cloneNode(!0),L=P.cloneNode(!0);P.style.textAlign="right";I.style.textAlign="right";mxUtils.write(P,mxResources.get("fitTo"));var D=document.createElement("input");D.style.cssText="margin:0 8px 0 8px;";D.setAttribute("value","1");D.setAttribute("min","1");D.setAttribute("type","number");D.style.width="40px";N.appendChild(D);
-f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsAcross"));H.appendChild(f);mxUtils.write(I,mxResources.get("fitToBy"));var ga=D.cloneNode(!0);F.appendChild(ga);mxEvent.addListener(D,"focus",function(){x.checked=!0});mxEvent.addListener(ga,"focus",function(){x.checked=!0});f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsDown"));L.appendChild(f);M.appendChild(P);M.appendChild(N);M.appendChild(H);G.appendChild(I);G.appendChild(F);G.appendChild(L);
-B.appendChild(M);B.appendChild(G);y.appendChild(B);p.appendChild(y);k.appendChild(p);p=document.createElement("div");f=document.createElement("div");f.style.fontWeight="bold";f.style.marginBottom="12px";mxUtils.write(f,mxResources.get("paperSize"));p.appendChild(f);f=document.createElement("div");f.style.marginBottom="12px";var E=PageSetupDialog.addPageFormatPanel(f,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(f);f=document.createElement("span");mxUtils.write(f,
+var B=document.createElement("tbody"),M=document.createElement("tr"),R=M.cloneNode(!0),E=document.createElement("td"),N=E.cloneNode(!0),H=E.cloneNode(!0),I=E.cloneNode(!0),G=E.cloneNode(!0),L=E.cloneNode(!0);E.style.textAlign="right";I.style.textAlign="right";mxUtils.write(E,mxResources.get("fitTo"));var D=document.createElement("input");D.style.cssText="margin:0 8px 0 8px;";D.setAttribute("value","1");D.setAttribute("min","1");D.setAttribute("type","number");D.style.width="40px";N.appendChild(D);
+f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsAcross"));H.appendChild(f);mxUtils.write(I,mxResources.get("fitToBy"));var fa=D.cloneNode(!0);G.appendChild(fa);mxEvent.addListener(D,"focus",function(){x.checked=!0});mxEvent.addListener(fa,"focus",function(){x.checked=!0});f=document.createElement("span");mxUtils.write(f,mxResources.get("fitToSheetsDown"));L.appendChild(f);M.appendChild(E);M.appendChild(N);M.appendChild(H);R.appendChild(I);R.appendChild(G);R.appendChild(L);
+B.appendChild(M);B.appendChild(R);y.appendChild(B);p.appendChild(y);k.appendChild(p);p=document.createElement("div");f=document.createElement("div");f.style.fontWeight="bold";f.style.marginBottom="12px";mxUtils.write(f,mxResources.get("paperSize"));p.appendChild(f);f=document.createElement("div");f.style.marginBottom="12px";var F=PageSetupDialog.addPageFormatPanel(f,"printdialog",b.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);p.appendChild(f);f=document.createElement("span");mxUtils.write(f,
mxResources.get("pageScale"));p.appendChild(f);var C=document.createElement("input");C.style.cssText="margin:0 8px 0 8px;";C.setAttribute("value","100 %");C.style.width="60px";p.appendChild(C);k.appendChild(p);f=document.createElement("div");f.style.cssText="text-align:right;margin:48px 0 0 0;";p=mxUtils.button(mxResources.get("cancel"),function(){b.hideDialog()});p.className="geBtn";b.editor.cancelFirst&&f.appendChild(p);b.isOffline()||(y=mxUtils.button(mxResources.get("help"),function(){e.openLink("https://www.diagrams.net/doc/faq/print-diagram")}),
-y.className="geBtn",f.appendChild(y));PrintDialog.previewEnabled&&(y=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();g(!1)}),y.className="geBtn",f.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();g(!0)});y.className="geBtn gePrimaryBtn";f.appendChild(y);b.editor.cancelFirst||f.appendChild(p);k.appendChild(f);this.container=k};var ga=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
+y.className="geBtn",f.appendChild(y));PrintDialog.previewEnabled&&(y=mxUtils.button(mxResources.get("preview"),function(){b.hideDialog();g(!1)}),y.className="geBtn",f.appendChild(y));y=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){b.hideDialog();g(!0)});y.className="geBtn gePrimaryBtn";f.appendChild(y);b.editor.cancelFirst||f.appendChild(p);k.appendChild(f);this.container=k};var fa=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null==
this.page&&(this.page=this.ui.currentPage);if(this.page!=this.ui.currentPage){if(null!=this.page.viewState){this.ignoreColor||(this.page.viewState.background=this.color);if(!this.ignoreImage){var b=this.image;null!=b&&null!=b.src&&Graph.isPageLink(b.src)&&(b={originalSrc:b.src});this.page.viewState.backgroundImage=b}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=
-this.shadowVisible)}}else ga.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 ea=document.createElement("canvas"),ba=new Image;ba.onload=function(){try{ea.getContext("2d").drawImage(ba,
-0,0);var b=ea.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=b&&6<b.length}catch(C){}};ba.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(x){}})();
+this.shadowVisible)}}else fa.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 da=document.createElement("canvas"),ba=new Image;ba.onload=function(){try{da.getContext("2d").drawImage(ba,
+0,0);var b=da.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=b&&6<b.length}catch(C){}};ba.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(x){}})();
(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(b,e,f){f.ui=b.ui;return e};b.afterDecode=function(b,e,f){f.previousColor=f.color;f.previousImage=f.image;f.previousFormat=f.format;null!=f.foldingEnabled&&(f.foldingEnabled=!f.foldingEnabled);null!=f.mathEnabled&&(f.mathEnabled=!f.mathEnabled);null!=f.shadowVisible&&(f.shadowVisible=!f.shadowVisible);return f};mxCodecRegistry.register(b)})();
-(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,e,f){f.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.4.5";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
+(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(b,e,f){f.ui=b.ui;return e};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="16.4.7";EditorUi.compactUi="atlas"!=uiTheme;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=
null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.nativeFileSupport=
!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.diagrams.net/doc/faq/scratchpad";EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,
messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}};EditorUi.logError=function(b,c,g,e,f,l,n){l=null!=l?l:0<=b.indexOf("NetworkError")||0<=b.indexOf("SecurityError")||0<=b.indexOf("NS_ERROR_FAILURE")||0<=b.indexOf("out of memory")?"CONFIG":"SEVERE";if(EditorUi.enableLogging&&
@@ -3461,16 +3461,16 @@ null==b.getName()&&b.setName(mxResources.get("pageWithNumber",[e+1])),this.pages
this.defaultFilename;if(/(\.xml)$/i.test(d)||/(\.html)$/i.test(d)||/(\.svg)$/i.test(d)||/(\.png)$/i.test(d))d=d.substring(0,d.lastIndexOf("."));/(\.drawio)$/i.test(d)&&(d=d.substring(0,d.lastIndexOf(".")));!b&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(d=d+"-"+this.currentPage.getName());return d};EditorUi.prototype.downloadFile=function(b,c,e,f,l,n,v,t,z,y,q,D){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();
var d=this.getBaseFilename("remoteSvg"==b?!1:!l),g=d+("xml"==b||"pdf"==b&&q?".drawio":"")+"."+b;if("xml"==b){var k=Graph.xmlDeclaration+"\n"+this.getFileData(!0,null,null,null,f,l,null,null,null,c);this.saveData(g,b,k,"text/xml")}else if("html"==b)k=this.getHtml2(this.getFileData(!0),this.editor.graph,d),this.saveData(g,b,k,"text/html");else if("svg"!=b&&"xmlsvg"!=b||!this.spinner.spin(document.body,mxResources.get("export"))){var m,p;if("xmlpng"==b)g=d+".png";else if("jpeg"==b)g=d+".jpg";else if("remoteSvg"==
b){g=d+".svg";b="svg";var u=parseInt(z);"string"===typeof t&&0<t.indexOf("%")&&(t=parseInt(t)/100);if(0<u){var L=this.editor.graph,N=L.getGraphBounds();m=Math.ceil(N.width*t/L.view.scale+2*u);p=Math.ceil(N.height*t/L.view.scale+2*u)}}this.saveRequest(g,b,mxUtils.bind(this,function(d,c){try{var e=this.editor.graph.pageVisible;null!=n&&(this.editor.graph.pageVisible=n);var g=this.createDownloadRequest(d,b,f,c,v,l,t,z,y,q,D,m,p);this.editor.graph.pageVisible=e;return g}catch(C){this.handleError(C)}}))}else{var M=
-null,P=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(M)}))});if("svg"==b){var I=this.editor.graph.background;if(v||I==mxConstants.NONE)I=null;var W=this.editor.graph.getSvg(I,null,null,null,null,f);e&&this.editor.graph.addSvgShadow(W);this.editor.convertImages(W,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();
-P(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else g=d+".svg",M=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();P(b)}),f)}}catch(ga){this.handleError(ga)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,f,l,n,v,t,z,y,q,D,F){var d=this.editor.graph,g=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==n?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var k="",m="";if(g.width*g.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};
+null,R=mxUtils.bind(this,function(b){b.length<=MAX_REQUEST_SIZE?this.saveData(g,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(M)}))});if("svg"==b){var I=this.editor.graph.background;if(v||I==mxConstants.NONE)I=null;var X=this.editor.graph.getSvg(I,null,null,null,null,f);e&&this.editor.graph.addSvgShadow(X);this.editor.convertImages(X,mxUtils.bind(this,mxUtils.bind(this,function(b){this.spinner.stop();
+R(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(b))})))}else g=d+".svg",M=this.getFileData(!1,!0,null,mxUtils.bind(this,function(b){this.spinner.stop();R(b)}),f)}}catch(fa){this.handleError(fa)}};EditorUi.prototype.createDownloadRequest=function(b,c,e,f,l,n,v,t,z,y,q,D,G){var d=this.editor.graph,g=d.getGraphBounds();e=this.getFileData(!0,null,null,null,e,0==n?!1:"xmlpng"!=c,null,null,null,!1,"pdf"==c);var k="",m="";if(g.width*g.height>MAX_AREA||e.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};
y=y?"1":"0";"pdf"==c&&(null!=q?m="&from="+q.from+"&to="+q.to:0==n&&(m="&allPages=1"));"xmlpng"==c&&(y="1",c="png");if(("xmlpng"==c||"svg"==c)&&null!=this.pages&&null!=this.currentPage)for(n=0;n<this.pages.length;n++)if(this.pages[n]==this.currentPage){k="&from="+n;break}n=d.background;"png"!=c&&"pdf"!=c&&"svg"!=c||!l?l||null!=n&&n!=mxConstants.NONE||(n="#ffffff"):n=mxConstants.NONE;l={globalVars:d.getExportVariables()};z&&(l.grid={size:d.gridSize,steps:d.view.gridSteps,color:d.view.gridColor});Graph.translateDiagram&&
-(l.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+k+m+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+f+"&embedXml="+y+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(l))+(null!=v?"&scale="+v:"")+(null!=t?"&border="+t:"")+(D&&isFinite(D)?"&w="+D:"")+(F&&isFinite(F)?"&h="+F:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=
+(l.diagramLanguage=Graph.diagramLanguage);return new mxXmlRequest(EXPORT_URL,"format="+c+k+m+"&bg="+(null!=n?n:mxConstants.NONE)+"&base64="+f+"&embedXml="+y+"&xml="+encodeURIComponent(e)+(null!=b?"&filename="+encodeURIComponent(b):"")+"&extras="+encodeURIComponent(JSON.stringify(l))+(null!=v?"&scale="+v:"")+(null!=t?"&border="+t:"")+(D&&isFinite(D)?"&w="+D:"")+(G&&isFinite(G)?"&h="+G:""))};EditorUi.prototype.setMode=function(b,c){this.mode=b};EditorUi.prototype.loadDescriptor=function(b,c,e){var d=
window.location.hash,g=mxUtils.bind(this,function(e){var g=null!=b.data?b.data:"";null!=e&&0<e.length&&(0<g.length&&(g+="\n"),g+=e);e=new LocalFile(this,"csv"!=b.format&&0<g.length?g:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);e.getHash=function(){return d};this.fileLoaded(e);"csv"==b.format&&this.importCsv(g,mxUtils.bind(this,function(b){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=b.update){var k=
null!=b.interval?parseInt(b.interval):6E4,f=null,l=mxUtils.bind(this,function(){var d=this.currentPage;mxUtils.post(b.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(b){d===this.currentPage&&(200<=b.getStatus()&&300>=b.getStatus()?(this.updateDiagram(b.getText()),m()):this.handleError({message:mxResources.get("error")+" "+b.getStatus()}))}),mxUtils.bind(this,function(b){this.handleError(b)}))}),m=mxUtils.bind(this,function(){window.clearTimeout(f);
f=window.setTimeout(l,k)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){m();l()}));m();l()}null!=c&&c()});null!=b.url&&0<b.url.length?this.editor.loadUrl(b.url,mxUtils.bind(this,function(b){g(b)}),mxUtils.bind(this,function(b){null!=e&&e(b)})):g("")};EditorUi.prototype.updateDiagram=function(b){function d(b){var d=new mxCellOverlay(b.image||f.warningImage,b.tooltip,b.align,b.valign,b.offset);d.addListener(mxEvent.CLICK,function(d,c){e.alert(b.tooltip)});return d}var c=null,
e=this;if(null!=b&&0<b.length&&(c=mxUtils.parseXml(b),b=null!=c?c.documentElement:null,null!=b&&"updates"==b.nodeName)){var f=this.editor.graph,l=f.getModel();l.beginUpdate();var n=null;try{for(b=b.firstChild;null!=b;){if("update"==b.nodeName){var t=l.getCell(b.getAttribute("id"));if(null!=t){try{var z=b.getAttribute("value");if(null!=z){var y=mxUtils.parseXml(z).documentElement;if(null!=y)if("1"==y.getAttribute("replace-value"))l.setValue(t,y);else for(var q=y.attributes,D=0;D<q.length;D++)f.setAttributeForCell(t,
-q[D].nodeName,0<q[D].nodeValue.length?q[D].nodeValue:null)}}catch(N){null!=window.console&&console.log("Error in value for "+t.id+": "+N)}try{var F=b.getAttribute("style");null!=F&&f.model.setStyle(t,F)}catch(N){null!=window.console&&console.log("Error in style for "+t.id+": "+N)}try{var E=b.getAttribute("icon");if(null!=E){var O=0<E.length?JSON.parse(E):null;null!=O&&O.append||f.removeCellOverlays(t);null!=O&&f.addCellOverlay(t,d(O))}}catch(N){null!=window.console&&console.log("Error in icon for "+
-t.id+": "+N)}try{var B=b.getAttribute("geometry");if(null!=B){var B=JSON.parse(B),G=f.getCellGeometry(t);if(null!=G){G=G.clone();for(key in B){var H=parseFloat(B[key]);"dx"==key?G.x+=H:"dy"==key?G.y+=H:"dw"==key?G.width+=H:"dh"==key?G.height+=H:G[key]=parseFloat(B[key])}f.model.setGeometry(t,G)}}}catch(N){null!=window.console&&console.log("Error in icon for "+t.id+": "+N)}}}else if("model"==b.nodeName){for(var L=b.firstChild;null!=L&&L.nodeType!=mxConstants.NODETYPE_ELEMENT;)L=L.nextSibling;null!=
+q[D].nodeName,0<q[D].nodeValue.length?q[D].nodeValue:null)}}catch(N){null!=window.console&&console.log("Error in value for "+t.id+": "+N)}try{var G=b.getAttribute("style");null!=G&&f.model.setStyle(t,G)}catch(N){null!=window.console&&console.log("Error in style for "+t.id+": "+N)}try{var F=b.getAttribute("icon");if(null!=F){var O=0<F.length?JSON.parse(F):null;null!=O&&O.append||f.removeCellOverlays(t);null!=O&&f.addCellOverlay(t,d(O))}}catch(N){null!=window.console&&console.log("Error in icon for "+
+t.id+": "+N)}try{var B=b.getAttribute("geometry");if(null!=B){var B=JSON.parse(B),E=f.getCellGeometry(t);if(null!=E){E=E.clone();for(key in B){var H=parseFloat(B[key]);"dx"==key?E.x+=H:"dy"==key?E.y+=H:"dw"==key?E.width+=H:"dh"==key?E.height+=H:E[key]=parseFloat(B[key])}f.model.setGeometry(t,E)}}}catch(N){null!=window.console&&console.log("Error in icon for "+t.id+": "+N)}}}else if("model"==b.nodeName){for(var L=b.firstChild;null!=L&&L.nodeType!=mxConstants.NODETYPE_ELEMENT;)L=L.nextSibling;null!=
L&&(new mxCodec(b.firstChild)).decode(L,l)}else if("view"==b.nodeName){if(b.hasAttribute("scale")&&(f.view.scale=parseFloat(b.getAttribute("scale"))),b.hasAttribute("dx")||b.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(b.getAttribute("dx")||0),parseFloat(b.getAttribute("dy")||0))}else"fit"==b.nodeName&&(n=b.hasAttribute("max-scale")?parseFloat(b.getAttribute("max-scale")):1);b=b.nextSibling}}finally{l.endUpdate()}null!=n&&this.chromelessResize&&this.chromelessResize(!0,n)}return c};
EditorUi.prototype.getCopyFilename=function(b,c){var d=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename,e="",k=d.lastIndexOf(".");0<=k&&(e=d.substring(k),d=d.substring(0,k));if(c)var f=new Date,k=f.getFullYear(),l=f.getMonth()+1,n=f.getDate(),z=f.getHours(),y=f.getMinutes(),f=f.getSeconds(),d=d+(" "+(k+"-"+l+"-"+n+"-"+z+"-"+y+"-"+f));return d=mxResources.get("copyOf",[d])+e};EditorUi.prototype.fileLoaded=function(b,c){var d=this.getCurrentFile();this.fileEditable=this.fileLoadedError=
null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=d&&(EditorUi.debug("File.closed",[d]),d.removeListener(this.descriptorChangedListener),d.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var f=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=d&&this.updateDocumentTitle();this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!c&&null!=window.location.hash&&0<window.location.hash.length&&
@@ -3489,16 +3489,16 @@ mxUtils.parseXml(b.getData());if("mxlibrary"==d.documentElement.nodeName){var e=
b);var d=this.sidebar.palettes[b.getHash()],d=null!=d?d[d.length-1].nextSibling:null;this.removeLibrarySidebar(b.getHash());var g=null,k=mxUtils.bind(this,function(d,c){0==d.length&&b.isEditable()?(null==g&&(g=document.createElement("div"),g.className="geDropTarget",mxUtils.write(g,mxResources.get("dragElementsHere"))),c.appendChild(g)):this.addLibraryEntries(d,c)});null!=this.sidebar&&null!=c&&this.sidebar.addEntries(c);null==e&&(e=b.getTitle(),null!=e&&/(\.xml)$/i.test(e)&&(e=e.substring(0,e.lastIndexOf("."))));
var l=this.sidebar.addPalette(b.getHash(),e,null!=f?f:!0,mxUtils.bind(this,function(b){k(c,b)}));this.repositionLibrary(d);var p=l.parentNode.previousSibling;f=p.getAttribute("title");null!=f&&0<f.length&&".scratchpad"!=b.title&&p.setAttribute("title",this.getLibraryStorageHint(b)+"\n"+f);var n=document.createElement("div");n.style.position="absolute";n.style.right="0px";n.style.top="0px";n.style.padding="8px";n.style.backgroundColor="inherit";p.style.position="relative";var q=document.createElement("img");
q.setAttribute("src",Editor.crossImage);q.setAttribute("title",mxResources.get("close"));q.setAttribute("valign","absmiddle");q.setAttribute("border","0");q.style.position="relative";q.style.top="2px";q.style.width="14px";q.style.cursor="pointer";q.style.margin="0 3px";Editor.isDarkMode()&&(q.style.filter="invert(100%)");var D=null;if(".scratchpad"!=b.title||this.closableScratchpad)n.appendChild(q),mxEvent.addListener(q,"click",mxUtils.bind(this,function(d){if(!mxEvent.isConsumed(d)){var c=mxUtils.bind(this,
-function(){this.closeLibrary(b)});null!=D?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(d)}}));if(b.isEditable()){var F=this.editor.graph,E=null,O=mxUtils.bind(this,function(d){this.showLibraryDialog(b.getTitle(),l,c,b,b.getMode());mxEvent.consume(d)}),B=mxUtils.bind(this,function(d){b.setModified(!0);b.isAutosave()?(null!=E&&null!=E.parentNode&&E.parentNode.removeChild(E),E=q.cloneNode(!1),E.setAttribute("src",
-Editor.spinImage),E.setAttribute("title",mxResources.get("saving")),E.style.cursor="default",E.style.marginRight="2px",E.style.marginTop="-2px",n.insertBefore(E,n.firstChild),p.style.paddingRight=18*n.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=E&&null!=E.parentNode&&(E.parentNode.removeChild(E),p.style.paddingRight=18*n.childNodes.length+"px")})):null==D&&(D=q.cloneNode(!1),D.setAttribute("src",Editor.saveImage),D.setAttribute("title",mxResources.get("save")),
-n.insertBefore(D,n.firstChild),mxEvent.addListener(D,"click",mxUtils.bind(this,function(d){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==D||b.isModified()||(p.style.paddingRight=18*n.childNodes.length+"px",D.parentNode.removeChild(D),D=null)});mxEvent.consume(d)})),p.style.paddingRight=18*n.childNodes.length+"px")}),G=mxUtils.bind(this,function(b,d,e,f){b=F.cloneCells(mxUtils.sortCells(F.model.getTopmostCells(b)));for(var k=0;k<b.length;k++){var m=F.getCellGeometry(b[k]);
-null!=m&&m.translate(-d.x,-d.y)}l.appendChild(this.sidebar.createVertexTemplateFromCells(b,d.width,d.height,f||"",!0,null,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:d.width,h:d.height};null!=f&&(b.title=f);c.push(b);B(e);null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)}),H=mxUtils.bind(this,function(b){if(F.isSelectionEmpty())F.getRubberband().isActive()?(F.getRubberband().execute(b),F.getRubberband().reset()):this.showError(mxResources.get("error"),
-mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=F.getSelectionCells(),c=F.view.getBounds(d),e=F.view.scale;c.x/=e;c.y/=e;c.width/=e;c.height/=e;c.x-=F.view.translate.x;c.y-=F.view.translate.y;G(d,c)}mxEvent.consume(b)});mxEvent.addGestureListeners(l,function(){},mxUtils.bind(this,function(b){F.isMouseDown&&null!=F.panningManager&&null!=F.graphHandler.first&&(F.graphHandler.suspend(),null!=F.graphHandler.hint&&(F.graphHandler.hint.style.visibility="hidden"),l.style.backgroundColor=
-"#f1f3f4",l.style.cursor="copy",F.panningManager.stop(),F.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){F.isMouseDown&&null!=F.panningManager&&null!=F.graphHandler&&(l.style.backgroundColor="",l.style.cursor="default",this.sidebar.showTooltips=!0,F.panningManager.stop(),F.graphHandler.reset(),F.isMouseDown=!1,F.autoScroll=!0,H(b),mxEvent.consume(b))}));mxEvent.addListener(l,"mouseleave",mxUtils.bind(this,function(b){F.isMouseDown&&null!=F.graphHandler.first&&(F.graphHandler.resume(),
-null!=F.graphHandler.hint&&(F.graphHandler.hint.style.visibility="visible"),l.style.backgroundColor="",l.style.cursor="",F.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(l,"dragover",mxUtils.bind(this,function(b){l.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";l.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(l,"drop",mxUtils.bind(this,function(b){l.style.cursor="";l.style.backgroundColor="";0<b.dataTransfer.files.length&&
-this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,e,f,m,p,n,u,t,v){if(null!=d&&"image/"==e.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,p,n),d)],d[0].vertex=!0,G(d,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:u.substring(0,u.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),
-g=null);else{var y=!1,z=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var f=Editor.extractGraphModelFromPdf(d);null!=f&&0<f.length&&(d=f)}if(null!=d)if(f=mxUtils.parseXml(d),"mxlibrary"==f.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(f.documentElement));k(m,l);c=c.concat(m);B(b);this.spinner.stop();y=!0}catch(ha){}else if("mxfile"==f.documentElement.nodeName)try{for(var p=f.documentElement.getElementsByTagName("diagram"),m=0;m<p.length;m++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[m])),
-u=this.editor.graph.getBoundingBoxFromGeometry(n);G(n,new mxRectangle(0,0,u.width,u.height),b)}y=!0}catch(ha){null!=window.console&&console.log("error in drop handler:",ha)}y||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)});null!=v&&null!=u&&(/(\.v(dx|sdx?))($|\?)/i.test(u)||/(\.vs(x|sx?))($|\?)/i.test(u))?this.importVisio(v,function(b){z(b,"text/xml")},null,u):!this.isOffline()&&
+function(){this.closeLibrary(b)});null!=D?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(d)}}));if(b.isEditable()){var G=this.editor.graph,F=null,O=mxUtils.bind(this,function(d){this.showLibraryDialog(b.getTitle(),l,c,b,b.getMode());mxEvent.consume(d)}),B=mxUtils.bind(this,function(d){b.setModified(!0);b.isAutosave()?(null!=F&&null!=F.parentNode&&F.parentNode.removeChild(F),F=q.cloneNode(!1),F.setAttribute("src",
+Editor.spinImage),F.setAttribute("title",mxResources.get("saving")),F.style.cursor="default",F.style.marginRight="2px",F.style.marginTop="-2px",n.insertBefore(F,n.firstChild),p.style.paddingRight=18*n.childNodes.length+"px",this.saveLibrary(b.getTitle(),c,b,b.getMode(),!0,!0,function(){null!=F&&null!=F.parentNode&&(F.parentNode.removeChild(F),p.style.paddingRight=18*n.childNodes.length+"px")})):null==D&&(D=q.cloneNode(!1),D.setAttribute("src",Editor.saveImage),D.setAttribute("title",mxResources.get("save")),
+n.insertBefore(D,n.firstChild),mxEvent.addListener(D,"click",mxUtils.bind(this,function(d){this.saveLibrary(b.getTitle(),c,b,b.getMode(),b.constructor==LocalLibrary,!0,function(){null==D||b.isModified()||(p.style.paddingRight=18*n.childNodes.length+"px",D.parentNode.removeChild(D),D=null)});mxEvent.consume(d)})),p.style.paddingRight=18*n.childNodes.length+"px")}),E=mxUtils.bind(this,function(b,d,e,f){b=G.cloneCells(mxUtils.sortCells(G.model.getTopmostCells(b)));for(var k=0;k<b.length;k++){var m=G.getCellGeometry(b[k]);
+null!=m&&m.translate(-d.x,-d.y)}l.appendChild(this.sidebar.createVertexTemplateFromCells(b,d.width,d.height,f||"",!0,null,!1));b={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(b))),w:d.width,h:d.height};null!=f&&(b.title=f);c.push(b);B(e);null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)}),H=mxUtils.bind(this,function(b){if(G.isSelectionEmpty())G.getRubberband().isActive()?(G.getRubberband().execute(b),G.getRubberband().reset()):this.showError(mxResources.get("error"),
+mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var d=G.getSelectionCells(),c=G.view.getBounds(d),e=G.view.scale;c.x/=e;c.y/=e;c.width/=e;c.height/=e;c.x-=G.view.translate.x;c.y-=G.view.translate.y;E(d,c)}mxEvent.consume(b)});mxEvent.addGestureListeners(l,function(){},mxUtils.bind(this,function(b){G.isMouseDown&&null!=G.panningManager&&null!=G.graphHandler.first&&(G.graphHandler.suspend(),null!=G.graphHandler.hint&&(G.graphHandler.hint.style.visibility="hidden"),l.style.backgroundColor=
+"#f1f3f4",l.style.cursor="copy",G.panningManager.stop(),G.autoScroll=!1,mxEvent.consume(b))}),mxUtils.bind(this,function(b){G.isMouseDown&&null!=G.panningManager&&null!=G.graphHandler&&(l.style.backgroundColor="",l.style.cursor="default",this.sidebar.showTooltips=!0,G.panningManager.stop(),G.graphHandler.reset(),G.isMouseDown=!1,G.autoScroll=!0,H(b),mxEvent.consume(b))}));mxEvent.addListener(l,"mouseleave",mxUtils.bind(this,function(b){G.isMouseDown&&null!=G.graphHandler.first&&(G.graphHandler.resume(),
+null!=G.graphHandler.hint&&(G.graphHandler.hint.style.visibility="visible"),l.style.backgroundColor="",l.style.cursor="",G.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(l,"dragover",mxUtils.bind(this,function(b){l.style.backgroundColor="#f1f3f4";b.dataTransfer.dropEffect="copy";l.style.cursor="copy";this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()})),mxEvent.addListener(l,"drop",mxUtils.bind(this,function(b){l.style.cursor="";l.style.backgroundColor="";0<b.dataTransfer.files.length&&
+this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(d,e,f,m,p,n,u,t,v){if(null!=d&&"image/"==e.substring(0,6))d="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(d),d=[new mxCell("",new mxGeometry(0,0,p,n),d)],d[0].vertex=!0,E(d,new mxRectangle(0,0,p,n),b,mxEvent.isAltDown(b)?null:u.substring(0,u.lastIndexOf(".")).replace(/_/g," ")),null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),
+g=null);else{var y=!1,z=mxUtils.bind(this,function(d,e){if(null!=d&&"application/pdf"==e){var f=Editor.extractGraphModelFromPdf(d);null!=f&&0<f.length&&(d=f)}if(null!=d)if(f=mxUtils.parseXml(d),"mxlibrary"==f.documentElement.nodeName)try{var m=JSON.parse(mxUtils.getTextContent(f.documentElement));k(m,l);c=c.concat(m);B(b);this.spinner.stop();y=!0}catch(ga){}else if("mxfile"==f.documentElement.nodeName)try{for(var p=f.documentElement.getElementsByTagName("diagram"),m=0;m<p.length;m++){var n=this.stringToCells(Editor.getDiagramNodeXml(p[m])),
+u=this.editor.graph.getBoundingBoxFromGeometry(n);E(n,new mxRectangle(0,0,u.width,u.height),b)}y=!0}catch(ga){null!=window.console&&console.log("error in drop handler:",ga)}y||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=g&&null!=g.parentNode&&0<c.length&&(g.parentNode.removeChild(g),g=null)});null!=v&&null!=u&&(/(\.v(dx|sdx?))($|\?)/i.test(u)||/(\.vs(x|sx?))($|\?)/i.test(u))?this.importVisio(v,function(b){z(b,"text/xml")},null,u):!this.isOffline()&&
(new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,u)&&null!=v?this.parseFile(v,mxUtils.bind(this,function(b){4==b.readyState&&(this.spinner.stop(),200<=b.status&&299>=b.status?z(b.responseText,"text/xml"):this.handleError({message:mxResources.get(413==b.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):z(d,e)}}));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(l,"dragleave",function(b){l.style.cursor="";l.style.backgroundColor="";b.stopPropagation();
b.preventDefault()}));q=q.cloneNode(!1);q.setAttribute("src",Editor.editImage);q.setAttribute("title",mxResources.get("edit"));n.insertBefore(q,n.firstChild);mxEvent.addListener(q,"click",O);mxEvent.addListener(l,"dblclick",function(b){mxEvent.getSource(b)==l&&O(b)});f=q.cloneNode(!1);f.setAttribute("src",Editor.plusImage);f.setAttribute("title",mxResources.get("add"));n.insertBefore(f,n.firstChild);mxEvent.addListener(f,"click",H);this.isOffline()||".scratchpad"!=b.title||null==EditorUi.scratchpadHelpLink||
(f=document.createElement("span"),f.setAttribute("title",mxResources.get("help")),f.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;cursor:pointer;",mxUtils.write(f,"?"),mxEvent.addGestureListeners(f,mxUtils.bind(this,function(b){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(b)})),n.insertBefore(f,n.firstChild))}p.appendChild(n);p.style.paddingRight=18*n.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries=function(b,c){for(var d=0;d<b.length;d++){var e=b[d],
@@ -3511,7 +3511,7 @@ new mxRectangle(60,30,30,30))};EditorUi.initTheme();EditorUi.prototype.showImage
360,200,!0,!0);d.init()};EditorUi.prototype.showLibraryDialog=function(b,c,e,f,l){b=new LibraryDialog(this,b,c,e,f,l);this.showDialog(b.container,640,440,!0,!1,mxUtils.bind(this,function(b){b&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()}));b.init()};var e=EditorUi.prototype.createFormat;EditorUi.prototype.createFormat=function(b){var d=e.apply(this,arguments);this.editor.graph.addListener("viewStateChanged",mxUtils.bind(this,function(b){this.editor.graph.isSelectionEmpty()&&
d.refresh()}));return d};EditorUi.prototype.createSidebarFooterContainer=function(){var b=this.createDiv("geSidebarContainer geSidebarFooter");b.style.position="absolute";b.style.overflow="hidden";var c=document.createElement("a");c.className="geTitle";c.style.color="#DF6C0C";c.style.fontWeight="bold";c.style.height="100%";c.style.paddingTop="9px";c.innerHTML="<span>+</span>";var e=c.getElementsByTagName("span")[0];e.style.fontSize="18px";e.style.marginRight="5px";mxUtils.write(c,mxResources.get("moreShapes")+
"...");mxEvent.addListener(c,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(c,"click",mxUtils.bind(this,function(b){this.actions.get("shapes").funct();mxEvent.consume(b)}));b.appendChild(c);return b};EditorUi.prototype.handleError=function(b,c,e,f,l,n,v){var d=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},g=null!=b&&null!=b.error?b.error:b;if(null!=b&&null!=b.stack&&null!=b.message)try{v?null!=
-window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(E){}if(null!=g||null!=c){v=mxUtils.htmlEntities(mxResources.get("unknownError"));var k=mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=g){null!=g.retry&&(k=mxResources.get("cancel"),m=function(){d();g.retry()});if(404==g.code||404==g.status||403==g.code){v=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):
+window.console&&console.error("EditorUi.handleError:",b):EditorUi.logError("Caught: "+(""==b.message&&null!=b.name)?b.name:b.message,b.filename,b.lineNumber,b.columnNumber,b,"INFO")}catch(F){}if(null!=g||null!=c){v=mxUtils.htmlEntities(mxResources.get("unknownError"));var k=mxResources.get("ok"),m=null;c=null!=c?c:mxResources.get("error");if(null!=g){null!=g.retry&&(k=mxResources.get("cancel"),m=function(){d();g.retry()});if(404==g.code||404==g.status||403==g.code){v=403==g.code?null!=g.message?mxUtils.htmlEntities(g.message):
mxUtils.htmlEntities(mxResources.get("accessDenied")):null!=l?l:mxUtils.htmlEntities(mxResources.get("fileNotFoundOrDenied")+(null!=this.drive&&null!=this.drive.user?" ("+this.drive.user.displayName+", "+this.drive.user.email+")":""));var p=null!=l?null:null!=n?n:window.location.hash;if(null!=p&&("#G"==p.substring(0,2)||"#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D"==p.substring(0,45))&&(null!=b&&null!=b.error&&(null!=b.error.errors&&0<b.error.errors.length&&"fileAccess"==b.error.errors[0].reason||
null!=b.error.data&&0<b.error.data.length&&"fileAccess"==b.error.data[0].reason)||404==g.code||404==g.status)){p="#U"==p.substring(0,2)?p.substring(45,p.lastIndexOf("%26ex")):p.substring(2);this.showError(c,v,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+p);this.handleError(b,c,e,f,l)}),m,mxResources.get("changeUser"),mxUtils.bind(this,function(){function b(){g.innerHTML="";for(var b=0;b<d.length;b++){var c=document.createElement("option");
mxUtils.write(c,d[b].displayName);c.value=b;g.appendChild(c);c=document.createElement("option");c.innerHTML="&nbsp;&nbsp;&nbsp;";mxUtils.write(c,"<"+d[b].email+">");c.setAttribute("disabled","disabled");g.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=d.length;g.appendChild(c)}var d=this.drive.getUsersList(),c=document.createElement("div"),e=document.createElement("span");e.style.marginTop="6px";mxUtils.write(e,mxResources.get("changeUser")+
@@ -3531,7 +3531,7 @@ e):new Blob([b],{type:e}),navigator.msSaveOrOpenBlob(b,c);else if(mxClient.IS_IE
"undefined"!==typeof d.download;if(mxClient.IS_GC&&null!=navigator.userAgent){var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);n=65==(g?parseInt(g[2],10):!1)?!1:n}if(n||this.isOffline()){d.href=URL.createObjectURL(f?this.base64ToBlob(b,e):new Blob([b],{type:e}));n?d.download=c:d.setAttribute("target","_blank");document.body.appendChild(d);try{window.setTimeout(function(){URL.revokeObjectURL(d.href)},2E4),d.click(),d.parentNode.removeChild(d)}catch(z){}}else this.createEchoRequest(b,c,e,
f,l).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(b,c,e,f,l,n){b="xml="+encodeURIComponent(b);return new mxXmlRequest(SAVE_URL,b+(null!=e?"&mime="+e:"")+(null!=l?"&format="+l:"")+(null!=n?"&base64="+n:"")+(null!=c?"&filename="+encodeURIComponent(c):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(b,c){c=c||"";for(var d=atob(b),e=d.length,f=Math.ceil(e/1024),k=Array(f),l=0;l<f;++l){for(var n=1024*l,q=Math.min(n+1024,e),y=Array(q-n),I=0;n<q;++I,++n)y[I]=
d[n].charCodeAt(0);k[l]=new Uint8Array(y)}return new Blob(k,{type:c})};EditorUi.prototype.saveLocalFile=function(b,c,e,f,l,n,v,t){n=null!=n?n:!1;v=null!=v?v:"vsdx"!=l&&(!mxClient.IS_IOS||!navigator.standalone);l=this.getServiceCount(n);isLocalStorage&&l++;var d=4>=l?2:6<l?4:3;c=new CreateDialog(this,c,mxUtils.bind(this,function(d,c){try{if("_blank"==c)if(null!=e&&"image/"==e.substring(0,6))this.openInNewWindow(b,e,f);else if(null!=e&&"text/html"==e.substring(0,9)){var g=new EmbedDialog(this,b);this.showDialog(g.container,
-450,240,!0,!0);g.init()}else{var k=window.open("about:blank");null==k?mxUtils.popup(b,!0):(k.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),k.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,f,null,t):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(g){try{this.exportFile(b,d,e,f,c,g)}catch(O){this.handleError(O)}}))}catch(E){this.handleError(E)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
+450,240,!0,!0);g.init()}else{var k=window.open("about:blank");null==k?mxUtils.popup(b,!0):(k.document.write("<pre>"+mxUtils.htmlEntities(b,!1)+"</pre>"),k.document.close())}else c==App.MODE_DEVICE||"download"==c?this.doSaveLocalFile(b,d,e,f,null,t):null!=d&&0<d.length&&this.pickFolder(c,mxUtils.bind(this,function(g){try{this.exportFile(b,d,e,f,c,g)}catch(O){this.handleError(O)}}))}catch(F){this.handleError(F)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),
!1,n,v,null,1<l,d,b,e,f);n=this.isServices(l)?l>d?390:280:160;this.showDialog(c.container,420,n,!0,!0);c.init()};EditorUi.prototype.openInNewWindow=function(b,c,e){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(b,!0):("image/svg+xml"!=c||mxClient.IS_SVG?"image/svg+xml"==c?d.document.write("<html>"+b+"</html>"):(b=e?b:btoa(unescape(encodeURIComponent(b))),d.document.write('<html><img style="max-width:100%;" src="data:'+c+";base64,"+b+'"/></html>')):d.document.write("<html><pre>"+
mxUtils.htmlEntities(b,!1)+"</pre></html>"),d.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(b){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var d=b(mxUtils.bind(this,function(b){null==this.tagsComponent&&
(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"),this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height=
@@ -3545,11 +3545,11 @@ this.layersDialog=null)}));this.editor.addListener("layersDialogShown",mxUtils.b
speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});g.spin(this.exportDialog);this.editor.exportToCanvas(mxUtils.bind(this,function(b){g.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(b,null,"png");b=document.createElement("img");b.style.maxWidth="140px";b.style.maxHeight="140px";b.style.cursor="pointer";b.style.backgroundColor="white";b.setAttribute("title",mxResources.get("openInNewWindow"));
b.setAttribute("border","0");b.setAttribute("src",c);this.exportDialog.appendChild(b);mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+1),"image/png",!0);d.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,null,null,null,null,null,null,Editor.defaultBorder);mxEvent.addListener(this.editor.graph.container,"click",d);document.body.appendChild(this.exportDialog)}mxEvent.consume(b)}),
Editor.cameraImage,mxResources.get("export"))}};EditorUi.prototype.saveData=function(b,c,e,f,l){this.isLocalFileSave()?this.saveLocalFile(e,b,f,l,c):this.saveRequest(b,c,mxUtils.bind(this,function(b,d){return this.createEchoRequest(e,b,f,l,c,d)}),e,l,f)};EditorUi.prototype.saveRequest=function(b,c,e,f,l,n,v){v=null!=v?v:!mxClient.IS_IOS||!navigator.standalone;var d=this.getServiceCount(!1);isLocalStorage&&d++;var g=4>=d?2:6<d?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,d){if("_blank"==
-d||null!=b&&0<b.length){var g=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=f)try{this.exportFile(f,b,n,!0,d,e)}catch(E){this.handleError(E)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=
-g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),b,n,!0,d,e)}catch(E){this.handleError(E)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,v,null,1<d,g,f,n,l);d=this.isServices(d)?4<d?390:280:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=
-b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,f,l,n){};EditorUi.prototype.pickFolder=function(b,c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,f,l,n,v,t,q,y,I,D,F,E){if(this.spinner.spin(document.body,mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var g=c?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==c&&(g=I?this.editor.graph.defaultPageBackgroundColor:
-"#ffffff");var k=this.editor.graph.getSvg(g,b,v,t,null,e,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,I,D);f&&this.editor.graph.addSvgShadow(k);var m=this.getBaseFilename()+(l?".drawio":"")+".svg";E=null!=E?E:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var p=mxUtils.bind(this,
-function(b){this.spinner.stop();l&&b.setAttribute("content",this.getFileData(!0,null,null,null,e,q,null,null,null,!1));E(Graph.xmlDeclaration+"\n"+(l?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(k);var u=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,p,this.thumbImageCache)):p(b)});F?this.embedFonts(k,u):(this.editor.addFontCss(k),u(k))}catch(M){this.handleError(M)}};
+d||null!=b&&0<b.length){var g=e("_blank"==d?null:b,d==App.MODE_DEVICE||"download"==d||null==d||"_blank"==d?"0":"1");null!=g&&(d==App.MODE_DEVICE||"download"==d||"_blank"==d?g.simulate(document,"_blank"):this.pickFolder(d,mxUtils.bind(this,function(e){n=null!=n?n:"pdf"==c?"application/pdf":"image/"+c;if(null!=f)try{this.exportFile(f,b,n,!0,d,e)}catch(F){this.handleError(F)}else this.spinner.spin(document.body,mxResources.get("saving"))&&g.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=
+g.getStatus()&&299>=g.getStatus())try{this.exportFile(g.getText(),b,n,!0,d,e)}catch(F){this.handleError(F)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(b){this.spinner.stop();this.handleError(b)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,v,null,1<d,g,f,n,l);d=this.isServices(d)?4<d?390:280:160;this.showDialog(b.container,420,d,!0,!0);b.init()};EditorUi.prototype.isServices=function(b){return 1!=
+b};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(b,c,e,f,l,n){};EditorUi.prototype.pickFolder=function(b,c,e){c(null)};EditorUi.prototype.exportSvg=function(b,c,e,f,l,n,v,t,q,y,I,D,G,F){if(this.spinner.spin(document.body,mxResources.get("export")))try{var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;var g=c?null:this.editor.graph.background;g==mxConstants.NONE&&(g=null);null==g&&0==c&&(g=I?this.editor.graph.defaultPageBackgroundColor:
+"#ffffff");var k=this.editor.graph.getSvg(g,b,v,t,null,e,null,null,"blank"==y?"_blank":"self"==y?"_top":null,null,!0,I,D);f&&this.editor.graph.addSvgShadow(k);var m=this.getBaseFilename()+(l?".drawio":"")+".svg";F=null!=F?F:mxUtils.bind(this,function(b){this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});var p=mxUtils.bind(this,
+function(b){this.spinner.stop();l&&b.setAttribute("content",this.getFileData(!0,null,null,null,e,q,null,null,null,!1));F(Graph.xmlDeclaration+"\n"+(l?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(b))});this.editor.graph.mathEnabled&&this.editor.addMathCss(k);var u=mxUtils.bind(this,function(b){n?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.editor.convertImages(b,p,this.thumbImageCache)):p(b)});G?this.embedFonts(k,u):(this.editor.addFontCss(k),u(k))}catch(M){this.handleError(M)}};
EditorUi.prototype.addRadiobox=function(b,c,e,f,l,n,v){return this.addCheckbox(b,e,f,l,n,v,!0,c)};EditorUi.prototype.addCheckbox=function(b,c,e,f,l,n,v,t){n=null!=n?n:!0;var d=document.createElement("input");d.style.marginRight="8px";d.style.marginTop="16px";d.setAttribute("type",v?"radio":"checkbox");v="geCheckbox-"+Editor.guid();d.id=v;null!=t&&d.setAttribute("name",t);e&&(d.setAttribute("checked","checked"),d.defaultChecked=!0);f&&d.setAttribute("disabled","disabled");n&&(b.appendChild(d),e=document.createElement("label"),
mxUtils.write(e,c),e.setAttribute("for",v),b.appendChild(e),l||mxUtils.br(b));return d};EditorUi.prototype.addEditButton=function(b,c){var d=this.addCheckbox(b,mxResources.get("edit")+":",!0,null,!0);d.style.marginLeft="24px";var e=this.getCurrentFile(),f="";null!=e&&e.getMode()!=App.MODE_DEVICE&&e.getMode()!=App.MODE_BROWSER&&(f=window.location.href);var k=document.createElement("select");k.style.maxWidth="200px";k.style.width="auto";k.style.marginLeft="8px";k.style.marginRight="10px";k.className=
"geBtn";e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("makeCopy"));k.appendChild(e);e=document.createElement("option");e.setAttribute("value","custom");mxUtils.write(e,mxResources.get("custom")+"...");k.appendChild(e);b.appendChild(k);mxEvent.addListener(k,"change",mxUtils.bind(this,function(){if("custom"==k.value){var b=new FilenameDialog(this,f,mxResources.get("ok"),function(b){null!=b?f=b:k.value="blank"},mxResources.get("url"),null,null,null,
@@ -3565,32 +3565,32 @@ this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxU
"/embed2.js?")+b:"1"==urlParams.dev?"https://test.draw.io/js/viewer-static.min.js":window.DRAWIO_VIEWER_URL?window.DRAWIO_VIEWER_URL:EditorUi.lightboxHost+"/js/viewer-static.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(b,c,e,f){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("html"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(g);var 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");g=l.cloneNode(!0);g.setAttribute("value","copy");k.appendChild(g);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));k.appendChild(p);mxUtils.br(k);k.appendChild(l);
p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));k.appendChild(p);var n=this.getCurrentFile();null==e&&null!=n&&n.constructor==window.DriveFile&&(p=document.createElement("a"),p.style.paddingLeft="12px",p.style.color="gray",p.style.cursor="pointer",mxUtils.write(p,mxResources.get("share")),k.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(n.getId())})));g.setAttribute("checked","checked");null==
-e&&l.setAttribute("disabled","disabled");d.appendChild(k);var q=this.addLinkSection(d),D=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");var F=document.createElement("input");F.setAttribute("type","text");F.style.marginRight="16px";F.style.width="60px";F.style.marginLeft="4px";F.style.marginRight="12px";F.value="100%";d.appendChild(F);var E=this.addCheckbox(d,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,O=O=this.addCheckbox(d,mxResources.get("allPages"),
-k,!k),B=this.addCheckbox(d,mxResources.get("layers"),!0),G=this.addCheckbox(d,mxResources.get("tags"),!0),H=this.addCheckbox(d,mxResources.get("lightbox"),!0),L=this.addEditButton(d,H),N=L.getEditInput();N.style.marginBottom="16px";mxEvent.addListener(H,"change",function(){H.checked?N.removeAttribute("disabled"):N.setAttribute("disabled","disabled");N.checked&&H.checked?L.getEditSelect().removeAttribute("disabled"):L.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,
-mxUtils.bind(this,function(){f(l.checked?e:null,D.checked,F.value,q.getTarget(),q.getColor(),E.checked,O.checked,B.checked,G.checked,H.checked,L.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,e,f,l,n,v,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,b||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
+e&&l.setAttribute("disabled","disabled");d.appendChild(k);var q=this.addLinkSection(d),D=this.addCheckbox(d,mxResources.get("zoom"),!0,null,!0);mxUtils.write(d,":");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="100%";d.appendChild(G);var F=this.addCheckbox(d,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,O=O=this.addCheckbox(d,mxResources.get("allPages"),
+k,!k),B=this.addCheckbox(d,mxResources.get("layers"),!0),E=this.addCheckbox(d,mxResources.get("tags"),!0),H=this.addCheckbox(d,mxResources.get("lightbox"),!0),L=this.addEditButton(d,H),N=L.getEditInput();N.style.marginBottom="16px";mxEvent.addListener(H,"change",function(){H.checked?N.removeAttribute("disabled"):N.setAttribute("disabled","disabled");N.checked&&H.checked?L.getEditSelect().removeAttribute("disabled"):L.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,d,
+mxUtils.bind(this,function(){f(l.checked?e:null,D.checked,G.value,q.getTarget(),q.getColor(),F.checked,O.checked,B.checked,E.checked,H.checked,L.getLink())}),null,b,c);this.showDialog(b.container,340,430,!0,!0);g.focus()};EditorUi.prototype.showPublishLinkDialog=function(b,c,e,f,l,n,v,t){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,b||mxResources.get("link"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";
d.appendChild(g);var k=this.getCurrentFile();b=0;if(null==k||k.constructor!=window.DriveFile||c)v=null!=v?v:"https://www.diagrams.net/doc/faq/publish-diagram-as-link";else{b=80;v=null!=v?v:"https://www.diagrams.net/doc/faq/google-drive-publicly-publish-diagram";g=document.createElement("div");g.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;";var m=document.createElement("div");m.style.whiteSpace="normal";mxUtils.write(m,mxResources.get("linkAccountRequired"));
g.appendChild(m);m=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(k.getId())}));m.style.marginTop="12px";m.className="geBtn";g.appendChild(m);d.appendChild(g);m=document.createElement("a");m.style.paddingLeft="12px";m.style.color="gray";m.style.fontSize="11px";m.style.cursor="pointer";mxUtils.write(m,mxResources.get("check"));g.appendChild(m);mxEvent.addListener(m,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&
this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(b){this.spinner.stop();b=new ErrorDialog(this,null,mxResources.get(null!=b?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(b.container,300,80,!0,!1);b.init()}))}))}var p=null,u=null;if(null!=e||null!=f)b+=30,mxUtils.write(d,mxResources.get("width")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.marginRight="16px",p.style.width="50px",p.style.marginLeft="6px",p.style.marginRight=
-"16px",p.style.marginBottom="10px",p.value="100%",d.appendChild(p),mxUtils.write(d,mxResources.get("height")+":"),u=document.createElement("input"),u.setAttribute("type","text"),u.style.width="50px",u.style.marginLeft="6px",u.style.marginBottom="10px",u.value=f+"px",d.appendChild(u),mxUtils.br(d);var q=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var B=null;if(null==k||k.constructor!=window.DriveFile||c)B=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var G=this.addCheckbox(d,
-mxResources.get("lightbox"),!0,null,null,!n),H=this.addEditButton(d,G),L=H.getEditInput();n&&(L.style.marginLeft=G.style.marginLeft,G.style.display="none",b-=20);var N=this.addCheckbox(d,mxResources.get("layers"),!0);N.style.marginLeft=L.style.marginLeft;N.style.marginTop="8px";var M=this.addCheckbox(d,mxResources.get("tags"),!0);M.style.marginLeft=L.style.marginLeft;M.style.marginBottom="16px";M.style.marginTop="16px";mxEvent.addListener(G,"change",function(){G.checked?(N.removeAttribute("disabled"),
-L.removeAttribute("disabled")):(N.setAttribute("disabled","disabled"),L.setAttribute("disabled","disabled"));L.checked&&G.checked?H.getEditSelect().removeAttribute("disabled"):H.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){l(q.getTarget(),q.getColor(),null==B?!0:B.checked,G.checked,H.getLink(),N.checked,null!=p?p.value:null,null!=u?u.value:null,M.checked)}),null,mxResources.get("create"),v,t);this.showDialog(c.container,340,300+b,!0,
+"16px",p.style.marginBottom="10px",p.value="100%",d.appendChild(p),mxUtils.write(d,mxResources.get("height")+":"),u=document.createElement("input"),u.setAttribute("type","text"),u.style.width="50px",u.style.marginLeft="6px",u.style.marginBottom="10px",u.value=f+"px",d.appendChild(u),mxUtils.br(d);var q=this.addLinkSection(d,n);e=null!=this.pages&&1<this.pages.length;var B=null;if(null==k||k.constructor!=window.DriveFile||c)B=this.addCheckbox(d,mxResources.get("allPages"),e,!e);var E=this.addCheckbox(d,
+mxResources.get("lightbox"),!0,null,null,!n),H=this.addEditButton(d,E),L=H.getEditInput();n&&(L.style.marginLeft=E.style.marginLeft,E.style.display="none",b-=20);var N=this.addCheckbox(d,mxResources.get("layers"),!0);N.style.marginLeft=L.style.marginLeft;N.style.marginTop="8px";var M=this.addCheckbox(d,mxResources.get("tags"),!0);M.style.marginLeft=L.style.marginLeft;M.style.marginBottom="16px";M.style.marginTop="16px";mxEvent.addListener(E,"change",function(){E.checked?(N.removeAttribute("disabled"),
+L.removeAttribute("disabled")):(N.setAttribute("disabled","disabled"),L.setAttribute("disabled","disabled"));L.checked&&E.checked?H.getEditSelect().removeAttribute("disabled"):H.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){l(q.getTarget(),q.getColor(),null==B?!0:B.checked,E.checked,H.getLink(),N.checked,null!=p?p.value:null,null!=u?u.value:null,M.checked)}),null,mxResources.get("create"),v,t);this.showDialog(c.container,340,300+b,!0,
!0);null!=p?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)):q.focus()};EditorUi.prototype.showRemoteExportDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=document.createElement("h3");mxUtils.write(g,mxResources.get("image"));g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(l?"10":"4")+"px";d.appendChild(g);if(l){mxUtils.write(d,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%";d.appendChild(k);mxUtils.write(d,mxResources.get("borderWidth")+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.marginRight="16px";m.style.width="60px";m.style.marginLeft="4px";m.value=this.lastExportBorder||"0";d.appendChild(m);mxUtils.br(d)}var p=this.addCheckbox(d,
mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),n=f?null:this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),Editor.defaultIncludeDiagram),g=this.editor.graph,q=f?null:this.addCheckbox(d,mxResources.get("transparentBackground"),g.background==mxConstants.NONE||null==g.background);null!=q&&(q.style.marginBottom="16px");b=new CustomDialog(this,d,mxUtils.bind(this,function(){var b=parseInt(k.value)/100||1,d=parseInt(m.value)||0;e(!p.checked,null!=n?n.checked:!1,null!=
q?q.checked:!1,b,d)}),null,b,c);this.showDialog(b.container,300,(l?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog=function(b,c,e,f,l,n,v,t,q){v=null!=v?v:Editor.defaultIncludeDiagram;var d=document.createElement("div");d.style.whiteSpace="nowrap";var g=this.editor.graph,k="jpeg"==t?220:300,m=document.createElement("h3");mxUtils.write(m,b);m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";d.appendChild(m);mxUtils.write(d,mxResources.get("zoom")+":");var p=
document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.style.marginRight="12px";p.value=this.lastExportZoom||"100%";d.appendChild(p);mxUtils.write(d,mxResources.get("borderWidth")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.value=this.lastExportBorder||"0";d.appendChild(u);mxUtils.br(d);var z=this.addCheckbox(d,mxResources.get("selectionOnly"),
-!1,g.isSelectionEmpty()),G=document.createElement("input");G.style.marginTop="16px";G.style.marginRight="8px";G.style.marginLeft="24px";G.setAttribute("disabled","disabled");G.setAttribute("type","checkbox");var H=document.createElement("select");H.style.marginTop="16px";H.style.marginLeft="8px";b=["selectionOnly","diagram","page"];for(var L={},m=0;m<b.length;m++)if(!g.isSelectionEmpty()||"selectionOnly"!=b[m]){var N=document.createElement("option");mxUtils.write(N,mxResources.get(b[m]));N.setAttribute("value",
-b[m]);H.appendChild(N);L[b[m]]=N}q?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(H),mxUtils.br(d),k+=26,mxEvent.addListener(H,"change",function(){"selectionOnly"==H.value&&(z.checked=!0)})):n&&(d.appendChild(G),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),k+=30,mxEvent.addListener(z,"change",function(){z.checked?G.removeAttribute("disabled"):G.setAttribute("disabled","disabled")}));g.isSelectionEmpty()?q&&(z.style.display="none",z.nextSibling.style.display="none",z.nextSibling.nextSibling.style.display=
-"none",k-=30):(H.value="diagram",G.setAttribute("checked","checked"),G.defaultChecked=!0,mxEvent.addListener(z,"change",function(){H.value=z.checked?"selectionOnly":"diagram"}));var M=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=t),P=null;Editor.isDarkMode()&&(P=this.addCheckbox(d,mxResources.get("dark"),!0),k+=26);var V=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),W=null;if("png"==t||"jpeg"==t)W=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||
-!this.canvasSupported,!1,!0),k+=30;var ga=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),v,null,null,"jpeg"!=t);ga.style.marginBottom="16px";var ea=document.createElement("input");ea.style.marginBottom="16px";ea.style.marginRight="8px";ea.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||ea.setAttribute("disabled","disabled");var ba=document.createElement("select");ba.style.maxWidth="260px";ba.style.marginLeft="8px";ba.style.marginRight="10px";ba.style.marginBottom=
+!1,g.isSelectionEmpty()),E=document.createElement("input");E.style.marginTop="16px";E.style.marginRight="8px";E.style.marginLeft="24px";E.setAttribute("disabled","disabled");E.setAttribute("type","checkbox");var H=document.createElement("select");H.style.marginTop="16px";H.style.marginLeft="8px";b=["selectionOnly","diagram","page"];for(var L={},m=0;m<b.length;m++)if(!g.isSelectionEmpty()||"selectionOnly"!=b[m]){var N=document.createElement("option");mxUtils.write(N,mxResources.get(b[m]));N.setAttribute("value",
+b[m]);H.appendChild(N);L[b[m]]=N}q?(mxUtils.write(d,mxResources.get("size")+":"),d.appendChild(H),mxUtils.br(d),k+=26,mxEvent.addListener(H,"change",function(){"selectionOnly"==H.value&&(z.checked=!0)})):n&&(d.appendChild(E),mxUtils.write(d,mxResources.get("crop")),mxUtils.br(d),k+=30,mxEvent.addListener(z,"change",function(){z.checked?E.removeAttribute("disabled"):E.setAttribute("disabled","disabled")}));g.isSelectionEmpty()?q&&(z.style.display="none",z.nextSibling.style.display="none",z.nextSibling.nextSibling.style.display=
+"none",k-=30):(H.value="diagram",E.setAttribute("checked","checked"),E.defaultChecked=!0,mxEvent.addListener(z,"change",function(){H.value=z.checked?"selectionOnly":"diagram"}));var M=this.addCheckbox(d,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=t),R=null;Editor.isDarkMode()&&(R=this.addCheckbox(d,mxResources.get("dark"),!0),k+=26);var W=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible),X=null;if("png"==t||"jpeg"==t)X=this.addCheckbox(d,mxResources.get("grid"),!1,this.isOffline()||
+!this.canvasSupported,!1,!0),k+=30;var fa=this.addCheckbox(d,mxResources.get("includeCopyOfMyDiagram"),v,null,null,"jpeg"!=t);fa.style.marginBottom="16px";var da=document.createElement("input");da.style.marginBottom="16px";da.style.marginRight="8px";da.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||da.setAttribute("disabled","disabled");var ba=document.createElement("select");ba.style.maxWidth="260px";ba.style.marginLeft="8px";ba.style.marginRight="10px";ba.style.marginBottom=
"16px";ba.className="geBtn";n=document.createElement("option");n.setAttribute("value","none");mxUtils.write(n,mxResources.get("noChange"));ba.appendChild(n);n=document.createElement("option");n.setAttribute("value","embedFonts");mxUtils.write(n,mxResources.get("embedFonts"));ba.appendChild(n);n=document.createElement("option");n.setAttribute("value","lblToSvg");mxUtils.write(n,mxResources.get("lblToSvg"));ba.appendChild(n);this.isOffline()&&n.setAttribute("disabled","disabled");mxEvent.addListener(ba,
-"change",mxUtils.bind(this,function(){"lblToSvg"==ba.value?(ea.checked=!0,ea.setAttribute("disabled","disabled"),L.page.style.display="none","page"==H.value&&(H.value="diagram"),V.checked=!1,V.setAttribute("disabled","disabled"),C.style.display="inline-block",x.style.display="none"):"disabled"==ea.getAttribute("disabled")&&(ea.checked=!1,ea.removeAttribute("disabled"),V.removeAttribute("disabled"),L.page.style.display="",C.style.display="none",x.style.display="")}));c&&(d.appendChild(ea),mxUtils.write(d,
+"change",mxUtils.bind(this,function(){"lblToSvg"==ba.value?(da.checked=!0,da.setAttribute("disabled","disabled"),L.page.style.display="none","page"==H.value&&(H.value="diagram"),W.checked=!1,W.setAttribute("disabled","disabled"),C.style.display="inline-block",x.style.display="none"):"disabled"==da.getAttribute("disabled")&&(da.checked=!1,da.removeAttribute("disabled"),W.removeAttribute("disabled"),L.page.style.display="",C.style.display="none",x.style.display="")}));c&&(d.appendChild(da),mxUtils.write(d,
mxResources.get("embedImages")),mxUtils.br(d),mxUtils.write(d,mxResources.get("txtSettings")+":"),d.appendChild(ba),mxUtils.br(d),k+=60);var x=document.createElement("select");x.style.maxWidth="260px";x.style.marginLeft="8px";x.style.marginRight="10px";x.className="geBtn";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));x.appendChild(c);c=document.createElement("option");c.setAttribute("value","blank");mxUtils.write(c,mxResources.get("openInNewWindow"));
x.appendChild(c);c=document.createElement("option");c.setAttribute("value","self");mxUtils.write(c,mxResources.get("openInThisWindow"));x.appendChild(c);var C=document.createElement("div");mxUtils.write(C,mxResources.get("LinksLost"));C.style.margin="7px";C.style.display="none";"svg"==t&&(mxUtils.write(d,mxResources.get("links")+":"),d.appendChild(x),d.appendChild(C),mxUtils.br(d),mxUtils.br(d),k+=50);e=new CustomDialog(this,d,mxUtils.bind(this,function(){this.lastExportBorder=u.value;this.lastExportZoom=
-p.value;l(p.value,M.checked,!z.checked,V.checked,ga.checked,ea.checked,u.value,G.checked,!1,x.value,null!=W?W.checked:null,null!=P?P.checked:null,H.value,"embedFonts"==ba.value,"lblToSvg"==ba.value)}),null,e,f);this.showDialog(e.container,340,k,!0,!0,null,null,null,null,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace=
-"nowrap";var g=this.editor.graph;if(null!=c){var k=document.createElement("h3");mxUtils.write(k,c);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(k)}var m=this.addCheckbox(d,mxResources.get("fit"),!0),p=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),n=this.addCheckbox(d,e),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),F=this.addEditButton(d,q),E=F.getEditInput(),O=1<g.model.getChildCount(g.model.getRoot()),B=this.addCheckbox(d,
-mxResources.get("layers"),O,!O);B.style.marginLeft=E.style.marginLeft;B.style.marginBottom="12px";B.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(O&&B.removeAttribute("disabled"),E.removeAttribute("disabled")):(B.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"));E.checked&&q.checked?F.getEditSelect().removeAttribute("disabled"):F.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){b(m.checked,
-p.checked,n.checked,q.checked,F.getLink(),B.checked)}),null,mxResources.get("embed"),l);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,f,l,n,v,t){function d(d){var c=" ",m="";f&&(c=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
+p.value;l(p.value,M.checked,!z.checked,W.checked,fa.checked,da.checked,u.value,E.checked,!1,x.value,null!=X?X.checked:null,null!=R?R.checked:null,H.value,"embedFonts"==ba.value,"lblToSvg"==ba.value)}),null,e,f);this.showDialog(e.container,340,k,!0,!0,null,null,null,null,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(b,c,e,f,l){var d=document.createElement("div");d.style.whiteSpace=
+"nowrap";var g=this.editor.graph;if(null!=c){var k=document.createElement("h3");mxUtils.write(k,c);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";d.appendChild(k)}var m=this.addCheckbox(d,mxResources.get("fit"),!0),p=this.addCheckbox(d,mxResources.get("shadow"),g.shadowVisible&&f,!f),n=this.addCheckbox(d,e),q=this.addCheckbox(d,mxResources.get("lightbox"),!0),G=this.addEditButton(d,q),F=G.getEditInput(),O=1<g.model.getChildCount(g.model.getRoot()),B=this.addCheckbox(d,
+mxResources.get("layers"),O,!O);B.style.marginLeft=F.style.marginLeft;B.style.marginBottom="12px";B.style.marginTop="8px";mxEvent.addListener(q,"change",function(){q.checked?(O&&B.removeAttribute("disabled"),F.removeAttribute("disabled")):(B.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"));F.checked&&q.checked?G.getEditSelect().removeAttribute("disabled"):G.getEditSelect().setAttribute("disabled","disabled")});c=new CustomDialog(this,d,mxUtils.bind(this,function(){b(m.checked,
+p.checked,n.checked,q.checked,G.getLink(),B.checked)}),null,mxResources.get("embed"),l);this.showDialog(c.container,280,300,!0,!0)};EditorUi.prototype.createEmbedImage=function(b,c,e,f,l,n,v,t){function d(d){var c=" ",m="";f&&(c=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+
EditorUi.lightboxHost+"/?client=1"+(null!=k?"&page="+k:"")+(l?"&edit=_blank":"")+(n?"&layers=1":"")+"');}})(this);\"",m+="cursor:pointer;");b&&(m+="max-width:100%;");var p="";e&&(p=' width="'+Math.round(g.width)+'" height="'+Math.round(g.height)+'"');v('<img src="'+d+'"'+p+(""!=m?' style="'+m+'"':"")+c+"/>")}var g=this.editor.graph.getGraphBounds(),k=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(b){var c=f?this.getFileData(!0):null;b=
this.createImageDataUri(b,c,"png");d(b)}),null,null,null,mxUtils.bind(this,function(b){t({message:mxResources.get("unknownError")})}),null,!0,e?2:1,null,c,null,null,Editor.defaultBorder);else if(c=this.getFileData(!0),g.width*g.height<=MAX_AREA&&c.length<=MAX_REQUEST_SIZE){var m="";e&&(m="&w="+Math.round(2*g.width)+"&h="+Math.round(2*g.height));var p=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+m+"&xml="+encodeURIComponent(c));p.send(mxUtils.bind(this,function(){200<=p.getStatus()&&
299>=p.getStatus()?d("data:image/png;base64,"+p.getText()):t({message:mxResources.get("unknownError")})}))}else t({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(b,c,e,f,l,n,v){var d=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!e),g=d.getElementsByTagName("a");if(null!=g)for(var k=0;k<g.length;k++){var m=g[k].getAttribute("href");null!=m&&"#"==m.charAt(0)&&"_blank"==g[k].getAttribute("target")&&g[k].removeAttribute("target")}f&&
@@ -3601,21 +3601,21 @@ Math.floor((new Date-b)/1E3);var d=Math.floor(b/31536E3);if(1<d)return d+" "+mxR
b;else if("mxfile"==b.nodeName){var e=b.getElementsByTagName("diagram");if(0<e.length){var d=e[0],f=c.getGlobalVariable;c.getGlobalVariable=function(b){return"page"==b?d.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==b?1:f.apply(this,arguments)}}}null!=d&&(b=Editor.parseDiagramNode(d))}e=this.editor.graph;try{this.editor.graph=c,this.editor.setGraphXml(b)}catch(u){}finally{this.editor.graph=e}return b};EditorUi.prototype.getPngFileProperties=function(b){var d=1,c=0;if(null!=
b){if(b.hasAttribute("scale")){var e=parseFloat(b.getAttribute("scale"));!isNaN(e)&&0<e&&(d=e)}b.hasAttribute("border")&&(e=parseInt(b.getAttribute("border")),!isNaN(e)&&0<e&&(c=e))}return{scale:d,border:c}};EditorUi.prototype.getEmbeddedPng=function(b,c,e,f,l){try{var d=this.editor.graph,g=null!=d.themes&&"darkTheme"==d.defaultThemeName,k=null;if(null!=e&&0<e.length)d=this.createTemporaryGraph(g?d.getDefaultStylesheet():d.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(e).documentElement,
!0),d),k=e;else if(g||null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(g?d.getDefaultStylesheet():d.getStylesheet()),m=d.getGlobalVariable;d.setBackgroundImage=this.editor.graph.setBackgroundImage;var p=this.pages[0];this.currentPage==p?d.setBackgroundImage(this.editor.graph.backgroundImage):null!=p.viewState&&null!=p.viewState&&d.setBackgroundImage(p.viewState.backgroundImage);d.getGlobalVariable=function(b){return"page"==b?p.getName():"pagenumber"==b?1:m.apply(this,
-arguments)};document.body.appendChild(d.container);d.model.setRoot(p.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(e){try{null==k&&(k=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var g=e.toDataURL("image/png"),g=Editor.writeGraphModelToPng(g,"tEXt","mxfile",encodeURIComponent(k));b(g.substring(g.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(F){null!=c&&c(F)}}),null,null,null,mxUtils.bind(this,function(b){null!=c&&
-c(b)}),null,null,f,null,d.shadowVisible,null,d,l,null,null,null,"diagram",null)}catch(I){null!=c&&c(I)}};EditorUi.prototype.getEmbeddedSvg=function(b,c,e,f,l,n,v,t,q,y,I,D,F){t=null!=t?t:!0;I=null!=I?I:0;v=null!=q?q:c.background;v==mxConstants.NONE&&(v=null);n=c.getSvg(v,y,I,null,null,n,null,null,null,c.shadowVisible||D,null,F,"diagram");(c.shadowVisible||D)&&c.addSvgShadow(n,null,null,0==I);null!=b&&n.setAttribute("content",b);null!=e&&n.setAttribute("resource",e);var d=mxUtils.bind(this,function(b){b=
+arguments)};document.body.appendChild(d.container);d.model.setRoot(p.root)}this.editor.exportToCanvas(mxUtils.bind(this,function(e){try{null==k&&(k=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var g=e.toDataURL("image/png"),g=Editor.writeGraphModelToPng(g,"tEXt","mxfile",encodeURIComponent(k));b(g.substring(g.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(G){null!=c&&c(G)}}),null,null,null,mxUtils.bind(this,function(b){null!=c&&
+c(b)}),null,null,f,null,d.shadowVisible,null,d,l,null,null,null,"diagram",null)}catch(I){null!=c&&c(I)}};EditorUi.prototype.getEmbeddedSvg=function(b,c,e,f,l,n,v,t,q,y,I,D,G){t=null!=t?t:!0;I=null!=I?I:0;v=null!=q?q:c.background;v==mxConstants.NONE&&(v=null);n=c.getSvg(v,y,I,null,null,n,null,null,null,c.shadowVisible||D,null,G,"diagram");(c.shadowVisible||D)&&c.addSvgShadow(n,null,null,0==I);null!=b&&n.setAttribute("content",b);null!=e&&n.setAttribute("resource",e);var d=mxUtils.bind(this,function(b){b=
(f?"":Graph.xmlDeclaration+"\n"+Graph.svgFileComment+"\n"+Graph.svgDoctype+"\n")+mxUtils.getXml(b);null!=l&&l(b);return b});c.mathEnabled&&this.editor.addMathCss(n);if(null!=l)this.embedFonts(n,mxUtils.bind(this,function(b){t?this.editor.convertImages(b,mxUtils.bind(this,function(b){d(b)})):d(b)}));else return d(n)};EditorUi.prototype.embedFonts=function(b,c){this.editor.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(b,this.editor.resolvedFontCss),
-this.editor.embedExtFonts(mxUtils.bind(this,function(d){try{null!=d&&this.editor.addFontCss(b,d),c(b)}catch(p){c(b)}}))}catch(g){c(b)}}))};EditorUi.prototype.exportImage=function(b,c,e,f,l,n,v,t,q,y,I,D,F){q=null!=q?q:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(b){this.spinner.stop();try{this.saveCanvas(b,
-l?this.getFileData(!0,null,null,null,e,t):null,q,null==this.pages||0==this.pages.length,I)}catch(B){this.handleError(B)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,e,b||1,c,f,null,null,n,v,y,D,F)}catch(O){this.spinner.stop(),this.handleError(O)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,e,f,l,n,v){c=null!=c?c:0;e=null!=e?e:0;var d=[];try{var g=
+this.editor.embedExtFonts(mxUtils.bind(this,function(d){try{null!=d&&this.editor.addFontCss(b,d),c(b)}catch(p){c(b)}}))}catch(g){c(b)}}))};EditorUi.prototype.exportImage=function(b,c,e,f,l,n,v,t,q,y,I,D,G){q=null!=q?q:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var d=this.editor.graph.isSelectionEmpty();e=null!=e?e:d;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.editor.exportToCanvas(mxUtils.bind(this,function(b){this.spinner.stop();try{this.saveCanvas(b,
+l?this.getFileData(!0,null,null,null,e,t):null,q,null==this.pages||0==this.pages.length,I)}catch(B){this.handleError(B)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(b){this.spinner.stop();this.handleError(b)}),null,e,b||1,c,f,null,null,n,v,y,D,G)}catch(O){this.spinner.stop(),this.handleError(O)}}};EditorUi.prototype.isCorsEnabledForUrl=function(b){return this.editor.isCorsEnabledForUrl(b)};EditorUi.prototype.importXml=function(b,c,e,f,l,n,v){c=null!=c?c:0;e=null!=e?e:0;var d=[];try{var g=
this.editor.graph;if(null!=b&&0<b.length){g.model.beginUpdate();try{var k=mxUtils.parseXml(b);b={};var m=this.editor.extractGraphModel(k.documentElement,null!=this.pages);if(null!=m&&"mxfile"==m.nodeName&&null!=this.pages){var p=m.getElementsByTagName("diagram");if(1==p.length&&!n){if(m=Editor.parseDiagramNode(p[0]),null!=this.currentPage&&(b[p[0].getAttribute("id")]=this.currentPage.getId(),null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&this.currentPage.getName()==mxResources.get("pageWithNumber",
-[1]))){var u=p[0].getAttribute("name");null!=u&&""!=u&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,u))}}else if(0<p.length){n=[];var q=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[p[0].getAttribute("id")]=this.pages[0].getId(),m=Editor.parseDiagramNode(p[0]),f=!1,q=1);for(;q<p.length;q++){var O=p[q].getAttribute("id");p[q].removeAttribute("id");var B=this.updatePageRoot(new DiagramPage(p[q]));b[O]=p[q].getAttribute("id");var G=this.pages.length;null==
-B.getName()&&B.setName(mxResources.get("pageWithNumber",[G+1]));g.model.execute(new ChangePage(this,B,B,G,!0));n.push(B)}this.updatePageLinks(b,n)}}if(null!=m&&"mxGraphModel"===m.nodeName){d=g.importGraphModel(m,c,e,f);if(null!=d)for(q=0;q<d.length;q++)this.updatePageLinksForCell(b,d[q]);var H=g.parseBackgroundImage(m.getAttribute("backgroundImage"));if(null!=H&&null!=H.originalSrc){this.updateBackgroundPageLink(b,H);var L=new ChangePageSetup(this,null,H);L.ignoreColor=!0;g.model.execute(L)}}v&&this.insertHandler(d,
+[1]))){var u=p[0].getAttribute("name");null!=u&&""!=u&&this.editor.graph.model.execute(new RenamePage(this,this.currentPage,u))}}else if(0<p.length){n=[];var q=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&&(b[p[0].getAttribute("id")]=this.pages[0].getId(),m=Editor.parseDiagramNode(p[0]),f=!1,q=1);for(;q<p.length;q++){var O=p[q].getAttribute("id");p[q].removeAttribute("id");var B=this.updatePageRoot(new DiagramPage(p[q]));b[O]=p[q].getAttribute("id");var E=this.pages.length;null==
+B.getName()&&B.setName(mxResources.get("pageWithNumber",[E+1]));g.model.execute(new ChangePage(this,B,B,E,!0));n.push(B)}this.updatePageLinks(b,n)}}if(null!=m&&"mxGraphModel"===m.nodeName){d=g.importGraphModel(m,c,e,f);if(null!=d)for(q=0;q<d.length;q++)this.updatePageLinksForCell(b,d[q]);var H=g.parseBackgroundImage(m.getAttribute("backgroundImage"));if(null!=H&&null!=H.originalSrc){this.updateBackgroundPageLink(b,H);var L=new ChangePageSetup(this,null,H);L.ignoreColor=!0;g.model.execute(L)}}v&&this.insertHandler(d,
null,null,g.defaultVertexStyle,g.defaultEdgeStyle,!1,!0)}finally{g.model.endUpdate()}}}catch(N){if(l)throw N;this.handleError(N)}return d};EditorUi.prototype.updatePageLinks=function(b,c){for(var d=0;d<c.length;d++)this.updatePageLinksForCell(b,c[d].root),null!=c[d].viewState&&this.updateBackgroundPageLink(b,c[d].viewState.backgroundImage)};EditorUi.prototype.updateBackgroundPageLink=function(b,c){try{if(null!=c&&Graph.isPageLink(c.originalSrc)){var d=b[c.originalSrc.substring(c.originalSrc.indexOf(",")+
1)];null!=d&&(c.originalSrc="data:page/id,"+d)}}catch(p){}};EditorUi.prototype.updatePageLinksForCell=function(b,c){var d=document.createElement("div"),e=this.editor.graph,f=e.getLinkForCell(c);null!=f&&e.setLinkForCell(c,this.updatePageLink(b,f));if(e.isHtmlLabel(c)){d.innerHTML=e.sanitizeHtml(e.getLabel(c));for(var k=d.getElementsByTagName("a"),l=!1,n=0;n<k.length;n++)f=k[n].getAttribute("href"),null!=f&&(k[n].setAttribute("href",this.updatePageLink(b,f)),l=!0);l&&e.labelChanged(c,d.innerHTML)}for(n=
0;n<e.model.getChildCount(c);n++)this.updatePageLinksForCell(b,e.model.getChildAt(c,n))};EditorUi.prototype.updatePageLink=function(b,c){if(Graph.isPageLink(c)){var d=b[c.substring(c.indexOf(",")+1)];c=null!=d?"data:page/id,"+d:null}else if("data:action/json,"==c.substring(0,17))try{var e=JSON.parse(c.substring(17));if(null!=e.actions){for(var f=0;f<e.actions.length;f++){var k=e.actions[f];if(null!=k.open&&Graph.isPageLink(k.open)){var l=k.open.substring(k.open.indexOf(",")+1),d=b[l];null!=d?k.open=
"data:page/id,"+d:null==this.getPageById(l)&&delete k.open}}c="data:action/json,"+JSON.stringify(e)}}catch(t){}return c};EditorUi.prototype.isRemoteVisioFormat=function(b){return/(\.v(sd|dx))($|\?)/i.test(b)||/(\.vs(s|x))($|\?)/i.test(b)};EditorUi.prototype.importVisio=function(b,c,e,f,l){f=null!=f?f:b.name;e=null!=e?e:mxUtils.bind(this,function(b){this.handleError(b)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var d=this.isRemoteVisioFormat(f);try{var g=
"UNKNOWN-VISIO",k=f.lastIndexOf(".");if(0<=k&&k<f.length)g=f.substring(k+1).toUpperCase();else{var m=f.lastIndexOf("/");0<=m&&m<f.length&&(f=f.substring(m+1))}EditorUi.logEvent({category:g+"-MS-IMPORT-FILE",action:"filename_"+f,label:d?"remote":"local"})}catch(D){}if(d)if(null==VSD_CONVERT_URL||this.isOffline())e({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")});else{d=new FormData;d.append("file1",b,f);var n=new XMLHttpRequest;
n.open("POST",VSD_CONVERT_URL+(/(\.vss|\.vsx)$/.test(f)?"?stencil=1":""));n.responseType="blob";this.addRemoteServiceSecurityCheck(n);null!=l&&n.setRequestHeader("x-convert-custom",l);n.onreadystatechange=mxUtils.bind(this,function(){if(4==n.readyState)if(200<=n.status&&299>=n.status)try{var b=n.response;if("text/xml"==b.type){var d=new FileReader;d.onload=mxUtils.bind(this,function(b){try{c(b.target.result)}catch(O){e({message:mxResources.get("errorLoadingFile")})}});d.readAsText(b)}else this.doImportVisio(b,
-c,e,f)}catch(E){e(E)}else try{""==n.responseType||"text"==n.responseType?e({message:n.responseText}):(d=new FileReader,d.onload=function(){e({message:JSON.parse(d.result).Message})},d.readAsText(n.response))}catch(E){e({})}});n.send(d)}else try{this.doImportVisio(b,c,e,f)}catch(D){e(D)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
+c,e,f)}catch(F){e(F)}else try{""==n.responseType||"text"==n.responseType?e({message:n.responseText}):(d=new FileReader,d.onload=function(){e({message:JSON.parse(d.result).Message})},d.readAsText(n.response))}catch(F){e({})}});n.send(d)}else try{this.doImportVisio(b,c,e,f)}catch(D){e(D)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",
d))};EditorUi.prototype.importGraphML=function(b,c,e){e=null!=e?e:mxUtils.bind(this,function(b){this.handleError(b)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(b,c,e)}catch(m){e(m)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.exportVisio=
function(b){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams(b)||this.handleError({message:mxResources.get("unknownError")})}catch(g){this.handleError(g)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.convertLucidChart=
function(b,c,e){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter)try{var d=JSON.parse(b);c(LucidImporter.importState(d));try{if(EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+b.length}),null!=window.console&&"1"==urlParams.test){var g=[(new Date).toISOString(),"convertLucidChart",d];null!=d.state&&g.push(JSON.parse(d.state));if(null!=d.svgThumbs)for(var f=0;f<d.svgThumbs.length;f++)g.push(Editor.createSvgDataUri(d.svgThumbs[f]));
@@ -3627,7 +3627,7 @@ b);b-=26;return 0==b?"-":1==b?"_":"?"}var k=new XMLHttpRequest;k.open("GET",("tx
c)e(this.response);else{var d=new FileReader;d.readAsDataURL(this.response);d.onloadend=function(b){var c=new Image;c.onload=function(){try{var b=c.width,g=c.height;if(0==b&&0==g){var k=d.result,l=k.indexOf(","),m=decodeURIComponent(escape(atob(k.substring(l+1)))),n=mxUtils.parseXml(m).getElementsByTagName("svg");0<n.length&&(b=parseFloat(n[0].getAttribute("width")),g=parseFloat(n[0].getAttribute("height")))}e(d.result,b,g)}catch(H){f(H)}};c.src=d.result};d.onerror=function(b){f(b)}}else f(b)};k.onerror=
function(b){f(b)};k.send()};EditorUi.prototype.insertAsPreText=function(b,c,e){var d=this.editor.graph,g=null;d.getModel().beginUpdate();try{g=d.insertVertex(null,null,"<pre>"+b+"</pre>",c,e,1,1,"text;html=1;align=left;verticalAlign=top;"),d.updateCellSize(g,!0)}finally{d.getModel().endUpdate()}return g};EditorUi.prototype.insertTextAt=function(b,c,e,f,l,n,q,t){n=null!=n?n:!0;q=null!=q?q:!0;if(null!=b)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b))this.parseFileData(b.replace(/\s+/g,
" "),mxUtils.bind(this,function(b){4==b.readyState&&200<=b.status&&299>=b.status&&this.editor.graph.setSelectionCells(this.insertTextAt(b.responseText,c,e,!0))}));else if("data:"==b.substring(0,5)||!this.isOffline()&&(l||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(b))){var d=this.editor.graph;if("data:application/pdf;base64,"==b.substring(0,28)){var g=Editor.extractGraphModelFromPdf(b);if(null!=g&&0<g.length)return this.importXml(g,c,e,n,!0,t)}if(Editor.isPngDataUrl(b)&&(g=Editor.extractGraphModelFromPng(b),
-null!=g&&0<g.length))return this.importXml(g,c,e,n,!0,t);if("data:image/svg+xml;"==b.substring(0,19))try{g=null;"data:image/svg+xml;base64,"==b.substring(0,26)?(g=b.substring(b.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(b.substring(b.indexOf(",")+1));var k=this.importXml(g,c,e,n,!0,t);if(0<k.length)return k}catch(F){}this.loadImage(b,mxUtils.bind(this,function(g){if("data:"==b.substring(0,5))this.resizeImage(g,b,mxUtils.bind(this,function(b,g,
+null!=g&&0<g.length))return this.importXml(g,c,e,n,!0,t);if("data:image/svg+xml;"==b.substring(0,19))try{g=null;"data:image/svg+xml;base64,"==b.substring(0,26)?(g=b.substring(b.indexOf(",")+1),g=window.atob&&!mxClient.IS_SF?atob(g):Base64.decode(g,!0)):g=decodeURIComponent(b.substring(b.indexOf(",")+1));var k=this.importXml(g,c,e,n,!0,t);if(0<k.length)return k}catch(G){}this.loadImage(b,mxUtils.bind(this,function(g){if("data:"==b.substring(0,5))this.resizeImage(g,b,mxUtils.bind(this,function(b,g,
f){d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),g,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(b)+";"))}),q,this.maxImageSize);else{var f=Math.min(1,Math.min(this.maxImageSize/g.width,this.maxImageSize/g.height)),k=Math.round(g.width*f);g=Math.round(g.height*f);d.setSelectionCell(d.insertVertex(null,null,"",d.snap(c),d.snap(e),k,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+
b+";"))}}),mxUtils.bind(this,function(){var g=null;d.getModel().beginUpdate();try{g=d.insertVertex(d.getDefaultParent(),null,b,d.snap(c),d.snap(e),1,1,"text;"+(f?"html=1;":"")),d.updateCellSize(g),d.fireEvent(new mxEventObject("textInserted","cells",[g]))}finally{d.getModel().endUpdate()}d.setSelectionCell(g)}))}else{b=Graph.zapGremlins(mxUtils.trim(b));if(this.isCompatibleString(b))return this.importXml(b,c,e,n,null,t);if(0<b.length)if(this.isLucidChartData(b))this.convertLucidChart(b,mxUtils.bind(this,
function(b){this.editor.graph.setSelectionCells(this.importXml(b,c,e,n,null,t))}),mxUtils.bind(this,function(b){this.handleError(b)}));else{d=this.editor.graph;l=null;d.getModel().beginUpdate();try{l=d.insertVertex(d.getDefaultParent(),null,"",d.snap(c),d.snap(e),1,1,"text;whiteSpace=wrap;"+(f?"html=1;":""));d.fireEvent(new mxEventObject("textInserted","cells",[l]));"<"==b.charAt(0)&&b.indexOf(">")==b.length-1&&(b=mxUtils.htmlEntities(b));b.length>this.maxTextBytes&&(b=b.substring(0,this.maxTextBytes)+
@@ -3641,8 +3641,8 @@ EditorUi.prototype.importZipFile=function(b,c,e){var d=this,g=mxUtils.bind(this,
null!=b&&"<mxlibrary"==b.substring(0,10)?this.loadLibrary(new LocalLibrary(this,b,q)):d=this.importXml(b,e,f,y,null,null!=D?mxEvent.isControlDown(D):null);null!=t&&t(d)});"image"==c.substring(0,5)?(z=!1,"image/png"==c.substring(0,9)&&(c=I?null:this.extractGraphModelFromPng(b),null!=c&&0<c.length&&(g=this.importXml(c,e,f,y,null,null!=D?mxEvent.isControlDown(D):null),z=!0)),z||(c=this.editor.graph,z=b.indexOf(";"),0<z&&(b=b.substring(0,z)+b.substring(b.indexOf(",",z+1))),y&&c.isGridEnabled()&&(e=c.snap(e),
f=c.snap(f)),g=[c.insertVertex(null,null,"",e,f,l,n,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image="+b+";")])):/(\.*<graphml )/.test(b)?(d=!0,this.importGraphML(b,k)):null!=z&&null!=q&&(/(\.v(dx|sdx?))($|\?)/i.test(q)||/(\.vs(x|sx?))($|\?)/i.test(q))?(d=!0,this.importVisio(z,k)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,q)?(d=!0,l=mxUtils.bind(this,function(b){4==b.readyState&&(200<=b.status&&
299>=b.status?k(b.responseText):null!=t&&t(null))}),null!=b?this.parseFileData(b,l,q):this.parseFile(z,l,q)):0==b.indexOf("PK")&&null!=z?(d=!0,this.importZipFile(z,k,mxUtils.bind(this,function(){g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,y);t(g)}))):/(\.v(sd|dx))($|\?)/i.test(q)||/(\.vs(s|x))($|\?)/i.test(q)||(g=this.insertTextAt(this.validateFileData(b),e,f,!0,null,y,null,null!=D?mxEvent.isControlDown(D):null));d||null==t||t(g);return g};EditorUi.prototype.importFiles=function(b,c,
-e,f,l,n,q,t,z,y,I,D,F){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var d=null!=c&&null!=e,g=!0;c=null!=c?c:0;e=null!=e?e:0;var k=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=I||this.resampleThreshold,p=0;p<b.length;p++)if("image/"==b[p].type.substring(0,6)&&b[p].size>m){k=!0;break}var u=mxUtils.bind(this,function(){var k=this.editor.graph,m=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(b,c,e,g,f,k,l,m,n){try{return null!=b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),
-this.loadLibrary(new LocalLibrary(this,b,l)),null):this.importFile(b,c,e,g,f,k,l,m,n,d,D,F)}catch(qa){return this.handleError(qa),null}});n=null!=n?n:mxUtils.bind(this,function(b){k.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=b.length,u=p,v=[],z=mxUtils.bind(this,function(b,d){v[b]=d;if(0==--u){this.spinner.stop();if(null!=t)t(v);else{var c=[];k.getModel().beginUpdate();try{for(var e=0;e<v.length;e++){var g=v[e]();null!=g&&(c=c.concat(g))}}finally{k.getModel().endUpdate()}}n(c)}}),
+e,f,l,n,q,t,z,y,I,D,G){f=null!=f?f:this.maxImageSize;y=null!=y?y:this.maxImageBytes;var d=null!=c&&null!=e,g=!0;c=null!=c?c:0;e=null!=e?e:0;var k=!1;if(!mxClient.IS_CHROMEAPP&&null!=b)for(var m=I||this.resampleThreshold,p=0;p<b.length;p++)if("image/"==b[p].type.substring(0,6)&&b[p].size>m){k=!0;break}var u=mxUtils.bind(this,function(){var k=this.editor.graph,m=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(b,c,e,g,f,k,l,m,n){try{return null!=b&&"<mxlibrary"==b.substring(0,10)?(this.spinner.stop(),
+this.loadLibrary(new LocalLibrary(this,b,l)),null):this.importFile(b,c,e,g,f,k,l,m,n,d,D,G)}catch(pa){return this.handleError(pa),null}});n=null!=n?n:mxUtils.bind(this,function(b){k.setSelectionCells(b)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var p=b.length,u=p,v=[],z=mxUtils.bind(this,function(b,d){v[b]=d;if(0==--u){this.spinner.stop();if(null!=t)t(v);else{var c=[];k.getModel().beginUpdate();try{for(var e=0;e<v.length;e++){var g=v[e]();null!=g&&(c=c.concat(g))}}finally{k.getModel().endUpdate()}}n(c)}}),
B=0;B<p;B++)mxUtils.bind(this,function(d){var n=b[d];if(null!=n){var p=new FileReader;p.onload=mxUtils.bind(this,function(b){if(null==q||q(n))if("image/"==n.type.substring(0,6))if("image/svg"==n.type.substring(0,9)){var p=Graph.clipSvgDataUri(b.target.result),t=p.indexOf(","),u=decodeURIComponent(escape(atob(p.substring(t+1)))),v=mxUtils.parseXml(u),u=v.getElementsByTagName("svg");if(0<u.length){var u=u[0],x=D?null:u.getAttribute("content");null!=x&&"<"!=x.charAt(0)&&"%"!=x.charAt(0)&&(x=unescape(window.atob?
atob(x):Base64.decode(x,!0)));null!=x&&"%"==x.charAt(0)&&(x=decodeURIComponent(x));null==x||"<mxfile "!==x.substring(0,8)&&"<mxGraphModel "!==x.substring(0,14)?z(d,mxUtils.bind(this,function(){try{if(p.substring(0,t+1),null!=v){var b=v.getElementsByTagName("svg");if(0<b.length){var g=b[0],q=g.getAttribute("width"),u=g.getAttribute("height"),q=null!=q&&"%"!=q.charAt(q.length-1)?parseFloat(q):NaN,u=null!=u&&"%"!=u.charAt(u.length-1)?parseFloat(u):NaN,y=g.getAttribute("viewBox");if(null==y||0==y.length)g.setAttribute("viewBox",
"0 0 "+q+" "+u);else if(isNaN(q)||isNaN(u)){var x=y.split(" ");3<x.length&&(q=parseFloat(x[2]),u=parseFloat(x[3]))}p=Editor.createSvgDataUri(mxUtils.getXml(g));var z=Math.min(1,Math.min(f/Math.max(1,q)),f/Math.max(1,u)),B=l(p,n.type,c+d*m,e+d*m,Math.max(1,Math.round(q*z)),Math.max(1,Math.round(u*z)),n.name);if(isNaN(q)||isNaN(u)){var M=new Image;M.onload=mxUtils.bind(this,function(){q=Math.max(1,M.width);u=Math.max(1,M.height);B[0].geometry.width=q;B[0].geometry.height=u;g.setAttribute("viewBox",
@@ -3653,7 +3653,7 @@ function(b){z(d,function(){return b})},n)});/(\.v(dx|sdx?))($|\?)/i.test(n.name)
null!=this.spinner.pause?this.spinner.pause():function(){},e=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,f=function(e,g){if(e||c)mxSettings.setResizeImages(e?g:null),mxSettings.save();d();b(g)};null==e||c?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"),function(b){f(b,!0)},function(b){f(b,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+
Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):f(!1,e)};EditorUi.prototype.parseFile=function(b,c,e){e=null!=e?e:b.name;var d=new FileReader;d.onload=mxUtils.bind(this,function(){this.parseFileData(d.result,c,e)});d.readAsText(b)};EditorUi.prototype.parseFileData=function(b,c,e){var d=new XMLHttpRequest;d.open("POST",OPEN_URL);d.setRequestHeader("Content-Type","application/x-www-form-urlencoded");d.onreadystatechange=
function(){c(d)};d.send("format=xml&filename="+encodeURIComponent(e)+"&data="+encodeURIComponent(b));try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+file.size})}catch(m){}};EditorUi.prototype.isResampleImageSize=function(b,c){c=null!=c?c:this.resampleThreshold;return b>c};EditorUi.prototype.resizeImage=function(b,c,e,f,l,n,q){l=null!=l?l:this.maxImageSize;var d=Math.max(1,b.width),g=Math.max(1,b.height);if(f&&this.isResampleImageSize(null!=q?q:c.length,n))try{var k=Math.max(d/
-l,g/l);if(1<k){var m=Math.round(d/k),p=Math.round(g/k),u=document.createElement("canvas");u.width=m;u.height=p;u.getContext("2d").drawImage(b,0,0,m,p);var v=u.toDataURL();if(v.length<c.length){var O=document.createElement("canvas");O.width=m;O.height=p;var B=O.toDataURL();v!==B&&(c=v,d=m,g=p)}}}catch(G){}e(c,d,g)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,e){try{var d=new Image;d.onload=function(){d.width=
+l,g/l);if(1<k){var m=Math.round(d/k),p=Math.round(g/k),u=document.createElement("canvas");u.width=m;u.height=p;u.getContext("2d").drawImage(b,0,0,m,p);var v=u.toDataURL();if(v.length<c.length){var O=document.createElement("canvas");O.width=m;O.height=p;var B=O.toDataURL();v!==B&&(c=v,d=m,g=p)}}}catch(E){}e(c,d,g)};EditorUi.prototype.extractGraphModelFromPng=function(b){return Editor.extractGraphModelFromPng(b)};EditorUi.prototype.loadImage=function(b,c,e){try{var d=new Image;d.onload=function(){d.width=
0<d.width?d.width:120;d.height=0<d.height?d.height:120;c(d)};null!=e&&(d.onerror=e);d.src=b}catch(m){if(null!=e)e(m);else throw m;}};EditorUi.prototype.getDefaultSketchMode=function(){var b="ac.draw.io"==window.location.host?"1":"0";return"0"!=(null!=urlParams.rough?urlParams.rough:b)};var n=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval=mxStencilRegistry.allowEval&&!this.isOfflineApp();this.isSettingsEnabled()&&("1"==urlParams.sketch&&this.doSetSketchMode(null!=
mxSettings.settings.sketchMode&&null==urlParams.rough?mxSettings.settings.sketchMode:this.getDefaultSketchMode()),null!=mxSettings.settings.sidebarTitles&&(Sidebar.prototype.sidebarTitles=mxSettings.settings.sidebarTitles),this.formatWidth=mxSettings.getFormatWidth());var b=this,c=this.editor.graph;Editor.isDarkMode()&&(c.view.defaultGridColor=mxGraphView.prototype.defaultDarkGridColor);Graph.touchStyle&&(c.panningHandler.isPanningTrigger=function(b){var d=b.getEvent();return null==b.getState()&&
!mxEvent.isMouseEvent(d)&&!c.freehand.isDrawing()||mxEvent.isPopupTrigger(d)&&(null==b.getState()||mxEvent.isControlDown(d)||mxEvent.isShiftDown(d))});c.cellEditor.editPlantUmlData=function(d,e,g){var f=JSON.parse(g);e=new TextareaDialog(b,mxResources.get("plantUml")+":",f.data,function(e){null!=e&&b.spinner.spin(document.body,mxResources.get("inserting"))&&b.generatePlantUmlImage(e,f.format,function(g,k,l){b.spinner.stop();c.getModel().beginUpdate();try{if("txt"==f.format)c.labelChanged(d,"<pre>"+
@@ -3667,15 +3667,15 @@ f;this.stylesheet=g}return e};var v=this.clearDefaultStyle;this.clearDefaultStyl
function(b){b=null!=b?b:"";"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1");return t.apply(this,arguments)};var z=c.addClickHandler;c.addClickHandler=function(b,d,e){var g=d;d=function(b,d){if(null==d){var e=mxEvent.getSource(b);"a"==e.nodeName.toLowerCase()&&(d=e.getAttribute("href"))}null!=d&&c.isCustomLink(d)&&(mxEvent.isTouchEvent(b)||!mxEvent.isPopupTrigger(b))&&c.customLinkClicked(d)&&mxEvent.consume(b);null!=g&&g(b,d)};z.call(this,b,d,e)};n.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(c.view.canvas.ownerSVGElement,
null,!0);if(null!=this.menus){var y=Menus.prototype.addPopupMenuEditItems;this.menus.addPopupMenuEditItems=function(d,c,e){b.editor.graph.isSelectionEmpty()?y.apply(this,arguments):b.menus.addMenuItems(d,"delete - cut copy copyAsImage - duplicate".split(" "),null,e)}}b.actions.get("print").funct=function(){b.showDialog((new PrintDialog(b)).container,360,null!=b.pages&&1<b.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var I=c.getExportVariables;c.getExportVariables=
function(){var d=I.apply(this,arguments),c=b.getCurrentFile();null!=c&&(d.filename=c.getTitle());d.pagecount=null!=b.pages?b.pages.length:1;d.page=null!=b.currentPage?b.currentPage.getName():"";d.pagenumber=null!=b.pages&&null!=b.currentPage?mxUtils.indexOf(b.pages,b.currentPage)+1:1;return d};var D=c.getGlobalVariable;c.getGlobalVariable=function(d){var c=b.getCurrentFile();return"filename"==d&&null!=c?c.getTitle():"page"==d&&null!=b.currentPage?b.currentPage.getName():"pagenumber"==d?null!=b.currentPage&&
-null!=b.pages?mxUtils.indexOf(b.pages,b.currentPage)+1:1:"pagecount"==d?null!=b.pages?b.pages.length:1:D.apply(this,arguments)};var F=c.labelLinkClicked;c.labelLinkClicked=function(b,d,e){var g=d.getAttribute("href");if(null==g||!c.isCustomLink(g)||!mxEvent.isTouchEvent(e)&&mxEvent.isPopupTrigger(e))F.apply(this,arguments);else{if(!c.isEnabled()||null!=b&&c.isCellLocked(b.cell))c.customLinkClicked(g),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=function(){var d=b.defaultFilename,
-c=b.getCurrentFile();null!=c&&(d=null!=c.getTitle()?c.getTitle():d);return d};var E=this.actions.get("print");E.setEnabled(!mxClient.IS_IOS||!navigator.standalone);E.visible=E.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,
+null!=b.pages?mxUtils.indexOf(b.pages,b.currentPage)+1:1:"pagecount"==d?null!=b.pages?b.pages.length:1:D.apply(this,arguments)};var G=c.labelLinkClicked;c.labelLinkClicked=function(b,d,e){var g=d.getAttribute("href");if(null==g||!c.isCustomLink(g)||!mxEvent.isTouchEvent(e)&&mxEvent.isPopupTrigger(e))G.apply(this,arguments);else{if(!c.isEnabled()||null!=b&&c.isCellLocked(b.cell))c.customLinkClicked(g),c.getRubberband().reset();mxEvent.consume(e)}};this.editor.getOrCreateFilename=function(){var d=b.defaultFilename,
+c=b.getCurrentFile();null!=c&&(d=null!=c.getTitle()?c.getTitle():d);return d};var F=this.actions.get("print");F.setEnabled(!mxClient.IS_IOS||!navigator.standalone);F.visible=F.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"findReplace"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,
!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),this.altShiftActions[83]="synchronize",this.installImagePasteHandler(),this.installNativeClipboardHandler();this.spinner=this.createSpinner(null,null,24);Graph.fileSupport&&c.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(b){var d=c.cellEditor.text2,e=null;null!=d&&(mxEvent.addListener(d,"dragleave",function(b){null!=e&&(e.parentNode.removeChild(e),e=null);b.stopPropagation();b.preventDefault()}),mxEvent.addListener(d,
"dragover",mxUtils.bind(this,function(b){null==e&&(!mxClient.IS_IE||10<document.documentMode)&&(e=this.highlightElement(d));b.stopPropagation();b.preventDefault()})),mxEvent.addListener(d,"drop",mxUtils.bind(this,function(b){null!=e&&(e.parentNode.removeChild(e),e=null);if(0<b.dataTransfer.files.length)this.importFiles(b.dataTransfer.files,0,0,this.maxImageSize,function(b,d,e,g,f,k){c.insertImage(b,f,k)},function(){},function(b){return"image/"==b.type.substring(0,6)},function(b){for(var d=0;d<b.length;d++)b[d]()},
mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(d)?this.loadImage(decodeURIComponent(d),mxUtils.bind(this,function(b){var e=Math.max(1,b.width);b=Math.max(1,b.height);var g=this.maxImageSize,g=Math.min(1,Math.min(g/Math.max(1,e)),g/Math.max(1,b));c.insertImage(decodeURIComponent(d),e*g,b*g)})):document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"))}else 0<=
-mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"));b.stopPropagation();b.preventDefault()})))}));this.isSettingsEnabled()&&(E=this.editor.graph.view,E.setUnit(mxSettings.getUnit()),E.addListener("unitChanged",function(b,d){mxSettings.setUnit(d.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||
-9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,E.unit),this.refresh());if("1"==urlParams.styledev){E=document.getElementById("geFooter");null!=E&&(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)})),E.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,d){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||
-"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var O=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:O.apply(this,arguments)}}E=document.getElementById("geInfo");null!=E&&E.parentNode.removeChild(E);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var B=null;mxEvent.addListener(c.container,"dragleave",function(b){c.isEnabled()&&(null!=B&&(B.parentNode.removeChild(B),
+mxUtils.indexOf(b.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(b.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,b.dataTransfer.getData("text/plain"));b.stopPropagation();b.preventDefault()})))}));this.isSettingsEnabled()&&(F=this.editor.graph.view,F.setUnit(mxSettings.getUnit()),F.addListener("unitChanged",function(b,d){mxSettings.setUnit(d.getProperty("unit"));mxSettings.save()}),this.ruler=!this.canvasSupported||
+9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,F.unit),this.refresh());if("1"==urlParams.styledev){F=document.getElementById("geFooter");null!=F&&(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)})),F.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(b,d){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(),c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||
+"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var O=this.isSelectionAllowed;this.isSelectionAllowed=function(b){return mxEvent.getSource(b)==this.styleInput?!0:O.apply(this,arguments)}}F=document.getElementById("geInfo");null!=F&&F.parentNode.removeChild(F);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var B=null;mxEvent.addListener(c.container,"dragleave",function(b){c.isEnabled()&&(null!=B&&(B.parentNode.removeChild(B),
B=null),b.stopPropagation(),b.preventDefault())});mxEvent.addListener(c.container,"dragover",mxUtils.bind(this,function(b){null==B&&(!mxClient.IS_IE||10<document.documentMode)&&(B=this.highlightElement(c.container));null!=this.sidebar&&this.sidebar.hideTooltip();b.stopPropagation();b.preventDefault()}));mxEvent.addListener(c.container,"drop",mxUtils.bind(this,function(b){null!=B&&(B.parentNode.removeChild(B),B=null);if(c.isEnabled()){var d=mxUtils.convertPoint(c.container,mxEvent.getClientX(b),mxEvent.getClientY(b)),
e=c.view.translate,g=c.view.scale,f=d.x/g-e.x,k=d.y/g-e.y;if(0<b.dataTransfer.files.length)mxEvent.isShiftDown(b)?this.openFiles(b.dataTransfer.files,!0):(mxEvent.isAltDown(b)&&(k=f=null),this.importFiles(b.dataTransfer.files,f,k,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(b),null,null,mxEvent.isShiftDown(b),b));else{mxEvent.isAltDown(b)&&(k=f=0);var l=0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")?b.dataTransfer.getData("text/uri-list"):null,d=this.extractGraphModelFromEvent(b,
null!=this.pages);if(null!=d)c.setSelectionCells(this.importXml(d,f,k,!0));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/html")){var m=b.dataTransfer.getData("text/html"),d=document.createElement("div");d.innerHTML=c.sanitizeHtml(m);var n=null,e=d.getElementsByTagName("img");null!=e&&1==e.length?(m=e[0].getAttribute("src"),null==m&&(m=e[0].getAttribute("srcset")),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(n=!0)):(e=d.getElementsByTagName("a"),null!=e&&1==e.length?m=e[0].getAttribute("href"):
@@ -3731,7 +3731,7 @@ this.editor.modified=null!=e?e:!1;this.updateUi();window.self!==window.top&&wind
function(b){var d=this.editor.graph;return{event:b,pageVisible:d.pageVisible,translate:d.view.translate,bounds:d.getGraphBounds(),currentPage:this.getSelectedPageIndex(),scale:d.view.scale,page:d.view.getBackgroundPageBounds()}};EditorUi.prototype.sendEmbeddedSvgExport=function(b){var d=this.editor.graph;d.isEditing()&&d.stopEditing(!d.isInvokesStopCellEditing());var c=window.opener||window.parent;if(this.editor.modified){var e=d.background;if(null==e||e==mxConstants.NONE)e=this.embedExportBackground;
this.getEmbeddedSvg(this.getFileData(!0,null,null,null,null,null,null,null,null,!1),d,null,!0,mxUtils.bind(this,function(d){c.postMessage(JSON.stringify({event:"export",point:this.embedExitPoint,exit:null!=b?!b:!0,data:Editor.createSvgDataUri(d)}),"*")}),null,null,!0,e,1,this.embedExportBorder)}else b||c.postMessage(JSON.stringify({event:"exit",point:this.embedExitPoint}),"*");b||(this.diagramContainer.removeAttribute("data-bounds"),Editor.inlineFullscreen=!1,d.model.clear(),this.editor.undoManager.clear(),
this.setBackgroundImage(null),this.editor.modified=!1,this.fireEvent(new mxEventObject("editInlineStop")))};EditorUi.prototype.installMessageHandler=function(b){var d=null,c=!1,e=!1,f=null,l=mxUtils.bind(this,function(b,d){this.editor.modified&&"0"!=urlParams.modified?null!=urlParams.modified&&this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(urlParams.modified))):this.editor.setStatus("")});this.editor.graph.model.addListener(mxEvent.CHANGE,l);mxEvent.addListener(window,"message",mxUtils.bind(this,
-function(g){if(g.source==(window.opener||window.parent)){var k=g.data,l=null,m=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):"data:image/svg+xml;utf8,"==b.substring(0,24)&&(b=b.substring(24)),null!=b&&("%"==b.charAt(0)?b=decodeURIComponent(b):"<"!=b.charAt(0)&&(b=Graph.decompress(b)))}catch(na){}return b});if("json"==urlParams.proto){var p=
+function(g){if(g.source==(window.opener||window.parent)){var k=g.data,l=null,m=mxUtils.bind(this,function(b){if(null!=b&&"function"===typeof b.charAt&&"<"!=b.charAt(0))try{Editor.isPngDataUrl(b)?b=Editor.extractGraphModelFromPng(b):"data:image/svg+xml;base64,"==b.substring(0,26)?b=atob(b.substring(26)):"data:image/svg+xml;utf8,"==b.substring(0,24)&&(b=b.substring(24)),null!=b&&("%"==b.charAt(0)?b=decodeURIComponent(b):"<"!=b.charAt(0)&&(b=Graph.decompress(b)))}catch(ma){}return b});if("json"==urlParams.proto){var p=
!1;try{k=JSON.parse(k)}catch(K){k=null}try{if(null==k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("layout"==k.action){this.executeLayoutList(k.layouts);return}if("prompt"==k.action){this.spinner.stop();var q=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):
k.ok,function(b){null!=b?n.postMessage(JSON.stringify({event:"prompt",value:b,message:k}),"*"):n.postMessage(JSON.stringify({event:"prompt-cancel",message:k}),"*")},null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(q.container,300,80,!0,!1);q.init();return}if("draft"==k.action){var t=m(k.xml);this.spinner.stop();q=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),t,mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",
result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}),k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,function(){this.hideDialog();n.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(q.container,640,480,!0,!1,mxUtils.bind(this,function(b){b&&this.actions.get("exit").funct()}));
@@ -3740,45 +3740,45 @@ builtIn:null!=c.info&&null!=c.info.custContentId,message:k}),"*")},mxUtils.bind(
null,null,b,function(){b({},0)})}):null,!1,!1,!0,!0);this.showDialog(N.container,window.innerWidth,window.innerHeight,!0,!1,null,!1,!0);return}q=new NewDialog(this,!1,k.templatesOnly?!1:null!=k.callback,mxUtils.bind(this,function(d,c,e,f){d=d||this.emptyDiagramXml;null!=k.callback?n.postMessage(JSON.stringify({event:"template",xml:d,blank:d==this.emptyDiagramXml,name:c,tempUrl:e,libs:f,builtIn:!0,message:k}),"*"):(b(d,g,d!=this.emptyDiagramXml,k.toSketch),this.editor.modified||this.editor.setStatus(""))}),
null,null,null,null,null,null,null,u?mxUtils.bind(this,function(b){this.remoteInvoke("getRecentDiagrams",[null],null,b,function(){b(null,"Network Error!")})}):null,v?mxUtils.bind(this,function(b,d){this.remoteInvoke("searchDiagrams",[b,null],null,d,function(){d(null,"Network Error!")})}):null,mxUtils.bind(this,function(b,d,c){n.postMessage(JSON.stringify({event:"template",docUrl:b,info:d,name:c}),"*")}),null,null,z?mxUtils.bind(this,function(b){this.remoteInvoke("getCustomTemplates",null,null,b,function(){b({},
0)})}):null,1==k.withoutType);this.showDialog(q.container,620,460,!0,!1,mxUtils.bind(this,function(b){this.sidebar.hideTooltip();b&&this.actions.get("exit").funct()}));q.init();return}if("textContent"==k.action){var M=this.getDiagramTextContent();n.postMessage(JSON.stringify({event:"textContent",data:M,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));
-null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var P=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,P):this.spinner.stop();return}if("exit"==k.action){this.actions.get("exit").funct();return}if("viewport"==k.action){null!=k.viewport&&(this.embedViewport=k.viewport);return}if("snapshot"==k.action){this.sendEmbeddedSvgExport(!0);return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==
-k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var V=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var W=this.editor.graph,ga=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var d=this.createLoadMessage("export");d.format=k.format;d.message=k;d.data=b;d.xml=V;n.postMessage(JSON.stringify(d),"*")}),ea=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&
-(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(V)));W!=this.editor.graph&&W.container.parentNode.removeChild(W.container);ga(b)}),ba=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var x=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=ba){var b=W.getGlobalVariable;W=this.createTemporaryGraph(W.getStylesheet());for(var d,c=0;c<this.pages.length;c++)if(this.pages[c].getId()==ba){d=
-this.updatePageRoot(this.pages[c]);break}null==d&&(d=this.currentPage);W.getGlobalVariable=function(c){return"page"==c?d.getName():"pagenumber"==c?1:b.apply(this,arguments)};document.body.appendChild(W.container);W.model.setRoot(d.root)}if(null!=k.layerIds){for(var e=W.model,g=e.getChildCells(e.getRoot()),f={},c=0;c<k.layerIds.length;c++)f[k.layerIds[c]]=!0;for(c=0;c<g.length;c++)e.setVisible(g[c],f[g[c].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){ea(b.toDataURL("image/png"))}),
-k.width,null,k.background,mxUtils.bind(this,function(){ea(null)}),null,null,k.scale,k.transparent,k.shadow,null,W,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(V),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},0):x()):x()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=ba?"&pageId="+ba:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):
-"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(V))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?ga("data:image/png;base64,"+b.getText()):ea(null)}),mxUtils.bind(this,function(){ea(null)}))}}else x=mxUtils.bind(this,function(){var b=this.createLoadMessage("export");b.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var d=this.getXmlFileData();b.xml=mxUtils.getXml(d);b.data=this.getFileData(null,
+null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var R=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body,R):this.spinner.stop();return}if("exit"==k.action){this.actions.get("exit").funct();return}if("viewport"==k.action){null!=k.viewport&&(this.embedViewport=k.viewport);return}if("snapshot"==k.action){this.sendEmbeddedSvgExport(!0);return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==
+k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var W=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var X=this.editor.graph,fa=mxUtils.bind(this,function(b){this.editor.graph.setEnabled(!0);this.spinner.stop();var d=this.createLoadMessage("export");d.format=k.format;d.message=k;d.data=b;d.xml=W;n.postMessage(JSON.stringify(d),"*")}),da=mxUtils.bind(this,function(b){null==b&&(b=Editor.blankImage);"xmlpng"==k.format&&
+(b=Editor.writeGraphModelToPng(b,"tEXt","mxfile",encodeURIComponent(W)));X!=this.editor.graph&&X.container.parentNode.removeChild(X.container);fa(b)}),ba=k.pageId||(null!=this.pages?k.currentPage?this.currentPage.getId():this.pages[0].getId():null);if(this.isExportToCanvas()){var x=mxUtils.bind(this,function(){if(null!=this.pages&&this.currentPage.getId()!=ba){var b=X.getGlobalVariable;X=this.createTemporaryGraph(X.getStylesheet());for(var d,c=0;c<this.pages.length;c++)if(this.pages[c].getId()==ba){d=
+this.updatePageRoot(this.pages[c]);break}null==d&&(d=this.currentPage);X.getGlobalVariable=function(c){return"page"==c?d.getName():"pagenumber"==c?1:b.apply(this,arguments)};document.body.appendChild(X.container);X.model.setRoot(d.root)}if(null!=k.layerIds){for(var e=X.model,g=e.getChildCells(e.getRoot()),f={},c=0;c<k.layerIds.length;c++)f[k.layerIds[c]]=!0;for(c=0;c<g.length;c++)e.setVisible(g[c],f[g[c].id]||!1)}this.editor.exportToCanvas(mxUtils.bind(this,function(b){da(b.toDataURL("image/png"))}),
+k.width,null,k.background,mxUtils.bind(this,function(){da(null)}),null,null,k.scale,k.transparent,k.shadow,null,X,k.border,null,k.grid,k.keepTheme)});null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(W),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},0):x()):x()}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=ba?"&pageId="+ba:"")+(null!=k.layerIds&&0<k.layerIds.length?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):
+"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(W))).send(mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()?fa("data:image/png;base64,"+b.getText()):da(null)}),mxUtils.bind(this,function(){da(null)}))}}else x=mxUtils.bind(this,function(){var b=this.createLoadMessage("export");b.message=k;if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var d=this.getXmlFileData();b.xml=mxUtils.getXml(d);b.data=this.getFileData(null,
null,!0,null,null,null,d);b.format=k.format}else if("html"==k.format)d=this.editor.getGraphXml(),b.data=this.getHtml(d,this.editor.graph),b.xml=mxUtils.getXml(d),b.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;d=null!=k.background?k.background:this.editor.graph.background;d==mxConstants.NONE&&(d=null);b.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);b.format="svg";var c=mxUtils.bind(this,function(d){this.editor.graph.setEnabled(!0);this.spinner.stop();b.data=Editor.createSvgDataUri(d);
n.postMessage(JSON.stringify(b),"*")});if("xmlsvg"==k.format)(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))&&this.getEmbeddedSvg(b.xml,this.editor.graph,null,!0,c,null,null,k.embedImages,d,k.scale,k.border,k.shadow,k.keepTheme);else if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))this.editor.graph.setEnabled(!1),d=this.editor.graph.getSvg(d,k.scale,k.border,null,
null,null,null,null,null,this.editor.graph.shadowVisible||k.shadow,null,k.keepTheme),(this.editor.graph.shadowVisible||k.shadow)&&this.editor.graph.addSvgShadow(d),this.embedFonts(d,mxUtils.bind(this,function(b){k.embedImages||null==k.embedImages?this.editor.convertImages(b,mxUtils.bind(this,function(b){c(mxUtils.getXml(b))})):c(mxUtils.getXml(b))}));return}n.postMessage(JSON.stringify(b),"*")}),null!=k.xml&&0<k.xml.length?(c=!0,this.setFileData(k.xml),c=!1,this.editor.graph.mathEnabled?window.setTimeout(function(){window.MathJax.Hub.Queue(x)},
0):x()):x();return}if("load"==k.action){p=k.toSketch;e=1==k.autosave;this.hideDialog();null!=k.modified&&null==urlParams.modified&&(urlParams.modified=k.modified);null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=k.saveAndExit);null!=k.noSaveBtn&&null==urlParams.noSaveBtn&&(urlParams.noSaveBtn=k.noSaveBtn);if(null!=k.rough){var C=Editor.sketchMode;this.doSetSketchMode(k.rough);C!=Editor.sketchMode&&this.fireEvent(new mxEventObject("sketchModeChanged"))}null!=k.dark&&(C=Editor.darkMode,
this.doSetDarkMode(k.dark),C!=Editor.darkMode&&this.fireEvent(new mxEventObject("darkModeChanged")));null!=k.border&&(this.embedExportBorder=k.border);null!=k.background&&(this.embedExportBackground=k.background);null!=k.viewport&&(this.embedViewport=k.viewport);this.embedExitPoint=null;if(null!=k.rect){var J=this.embedExportBorder;this.diagramContainer.style.border="2px solid #295fcc";this.diagramContainer.style.top=k.rect.top+"px";this.diagramContainer.style.left=k.rect.left+"px";this.diagramContainer.style.height=
k.rect.height+"px";this.diagramContainer.style.width=k.rect.width+"px";this.diagramContainer.style.bottom="";this.diagramContainer.style.right="";l=mxUtils.bind(this,function(){var b=this.editor.graph,d=b.maxFitScale;b.maxFitScale=k.maxFitScale;b.fit(2*J);b.maxFitScale=d;b.container.scrollTop-=2*J;b.container.scrollLeft-=2*J;this.fireEvent(new mxEventObject("editInlineStart","data",[k]))})}null!=k.noExitBtn&&null==urlParams.noExitBtn&&(urlParams.noExitBtn=k.noExitBtn);null!=k.title&&null!=this.buttonContainer&&
-(t=document.createElement("span"),mxUtils.write(t,k.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=t);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(K){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var X=this.getCurrentFile();null!=X&&(t=m(k.xml),null!=t&&""!=t&&X.mergeFile(new LocalFile(this,t),function(){n.postMessage(JSON.stringify({event:"merge",
-message:k}),"*")},function(b){n.postMessage(JSON.stringify({event:"merge",message:k,error:b}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(n):"remoteInvoke"==k.action?this.handleRemoteInvoke(k,g.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):n.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(K){this.handleError(K)}}var ca=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<
-this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),ka=mxUtils.bind(this,function(g,k){c=!0;try{b(g,k,null,p)}catch(pa){this.handleError(pa)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");f=ca();e&&null==d&&(d=mxUtils.bind(this,function(b,d){var e=ca();if(e!=f&&!c){var g=this.createLoadMessage("autosave");g.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}f=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,d),this.editor.graph.addListener("gridSizeChanged",
+(t=document.createElement("span"),mxUtils.write(t,k.title),null!=this.embedFilenameSpan&&this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(t),this.embedFilenameSpan=t);try{k.libs&&this.sidebar.showEntries(k.libs)}catch(K){}k=null!=k.xmlpng?this.extractGraphModelFromPng(k.xmlpng):null!=k.descriptor?k.descriptor:k.xml}else{if("merge"==k.action){var ea=this.getCurrentFile();null!=ea&&(t=m(k.xml),null!=t&&""!=t&&ea.mergeFile(new LocalFile(this,t),function(){n.postMessage(JSON.stringify({event:"merge",
+message:k}),"*")},function(b){n.postMessage(JSON.stringify({event:"merge",message:k,error:b}),"*")}))}else"remoteInvokeReady"==k.action?this.handleRemoteInvokeReady(n):"remoteInvoke"==k.action?this.handleRemoteInvoke(k,g.origin):"remoteInvokeResponse"==k.action?this.handleRemoteInvokeResponse(k):n.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(k)}),"*");return}}catch(K){this.handleError(K)}}var V=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<
+this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())}),ja=mxUtils.bind(this,function(g,k){c=!0;try{b(g,k,null,p)}catch(oa){this.handleError(oa)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");f=V();e&&null==d&&(d=mxUtils.bind(this,function(b,d){var e=V();if(e!=f&&!c){var g=this.createLoadMessage("autosave");g.xml=e;(window.opener||window.parent).postMessage(JSON.stringify(g),"*")}f=e}),this.editor.graph.model.addListener(mxEvent.CHANGE,d),this.editor.graph.addListener("gridSizeChanged",
d),this.editor.graph.addListener("shadowVisibleChanged",d),this.addListener("pageFormatChanged",d),this.addListener("pageScaleChanged",d),this.addListener("backgroundColorChanged",d),this.addListener("backgroundImageChanged",d),this.addListener("foldingEnabledChanged",d),this.addListener("mathEnabledChanged",d),this.addListener("gridEnabledChanged",d),this.addListener("guidesEnabledChanged",d),this.addListener("pageViewChanged",d));if("1"==urlParams.returnbounds||"json"==urlParams.proto){var m=this.createLoadMessage("load");
-m.xml=g;n.postMessage(JSON.stringify(m),"*")}null!=l&&l()});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(m="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(b){ka(b,g)},mxUtils.bind(this,function(b){this.handleError(b)}),m)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFileData(k,mxUtils.bind(this,
-function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&ka(b.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){ka(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),ka(k,g)):this.loadDescriptor(k,mxUtils.bind(this,function(b){ka(ca(),g)}),mxUtils.bind(this,function(b){this.handleError(b,
+m.xml=g;n.postMessage(JSON.stringify(m),"*")}null!=l&&l()});null!=k&&"function"===typeof k.substring&&"data:application/vnd.visio;base64,"==k.substring(0,34)?(m="0M8R4KGxGuE"==k.substring(34,45)?"raw.vsd":"raw.vsdx",this.importVisio(this.base64ToBlob(k.substring(k.indexOf(",")+1)),function(b){ja(b,g)},mxUtils.bind(this,function(b){this.handleError(b)}),m)):null!=k&&"function"===typeof k.substring&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(k,"")?this.parseFileData(k,mxUtils.bind(this,
+function(b){4==b.readyState&&200<=b.status&&299>=b.status&&"<mxGraphModel"==b.responseText.substring(0,13)&&ja(b.responseText,g)}),""):null!=k&&"function"===typeof k.substring&&this.isLucidChartData(k)?this.convertLucidChart(k,mxUtils.bind(this,function(b){ja(b)}),mxUtils.bind(this,function(b){this.handleError(b)})):null==k||"object"!==typeof k||null==k.format||null==k.data&&null==k.url?(k=m(k),ja(k,g)):this.loadDescriptor(k,mxUtils.bind(this,function(b){ja(V(),g)}),mxUtils.bind(this,function(b){this.handleError(b,
mxResources.get("errorLoadingFile"))}))}}));var n=window.opener||window.parent,l="json"==urlParams.proto?JSON.stringify({event:"init"}):urlParams.ready||"ready";n.postMessage(l,"*");if("json"==urlParams.proto){var q=this.editor.graph.openLink;this.editor.graph.openLink=function(b,d,c){q.apply(this,arguments);n.postMessage(JSON.stringify({event:"openLink",href:b,target:d,allowOpener:c}),"*")}}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.menubar&&"1"!=urlParams.embedInline){var b=document.createElement("div");
b.style.display="inline-block";b.style.position="absolute";b.style.paddingTop="atlas"==uiTheme||"1"==urlParams.atlas?"2px":"0px";b.style.paddingLeft="8px";b.style.paddingBottom="2px";var c=document.createElement("button");c.className="geBigButton";var e=c;if("1"==urlParams.noSaveBtn){if("0"!=urlParams.saveAndExit){var f="1"==urlParams.publishClose?mxResources.get("publish"):mxResources.get("saveAndExit");mxUtils.write(c,f);c.setAttribute("title",f);mxEvent.addListener(c,"click",mxUtils.bind(this,
function(){this.actions.get("saveAndExit").funct()}));b.appendChild(c)}}else mxUtils.write(c,mxResources.get("save")),c.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),b.appendChild(c),"1"==urlParams.saveAndExit&&(c=document.createElement("a"),mxUtils.write(c,mxResources.get("saveAndExit")),c.setAttribute("title",mxResources.get("saveAndExit")),c.className="geBigButton geBigStandardButton",
c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),b.appendChild(c),e=c);"1"!=urlParams.noExitBtn&&(c=document.createElement("a"),e="1"==urlParams.publishClose?mxResources.get("close"):mxResources.get("exit"),mxUtils.write(c,e),c.setAttribute("title",e),c.className="geBigButton geBigStandardButton",c.style.marginLeft="6px",mxEvent.addListener(c,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})),b.appendChild(c),
e=c);e.style.marginRight="20px";this.toolbar.container.appendChild(b);this.toolbar.staticElements.push(b);b.style.right="atlas"==uiTheme||"1"==urlParams.atlas?"42px":"52px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(b){this.importCsv(b)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://drawio-app.com/import-from-csv-to-drawio/"));
this.showDialog(this.importCsvDialog.container,640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=function(b,c){for(var d=this.editor.graph,e=d.getSelectionCells(),f=0;f<b.length;f++){var k=new window[b[f].layout](d);if(null!=b[f].config)for(var l in b[f].config)k[l]=b[f].config[l];this.executeLayout(function(){k.execute(d.getDefaultParent(),0==e.length?null:e)},f==b.length-1,c)}};EditorUi.prototype.importCsv=function(b,c){try{var d=b.split("\n"),
-e=[],f=[],k=[],l={};if(0<d.length){for(var n={},q=this.editor.graph,y=null,I=null,D=null,F=null,E=null,O=null,B=null,G="whiteSpace=wrap;html=1;",H=null,L=null,N="",M="auto",P="auto",V=null,W=null,ga=40,ea=40,ba=100,x=0,C=function(){null!=c?c(R):(q.setSelectionCells(R),q.scrollCellToVisible(q.getSelectionCell()))},J=q.getFreeInsertPoint(),X=J.x,ca=J.y,J=ca,ka=null,K="auto",L=null,na=[],qa=null,pa=null,ha=0;ha<d.length&&"#"==d[ha].charAt(0);){b=d[ha];for(ha++;ha<d.length&&"\\"==b.charAt(b.length-1)&&
-"#"==d[ha].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[ha].substring(1)),ha++;if("#"!=b.charAt(1)){var sa=b.indexOf(":");if(0<sa){var Y=mxUtils.trim(b.substring(1,sa)),Q=mxUtils.trim(b.substring(sa+1));"label"==Y?ka=q.sanitizeHtml(Q):"labelname"==Y&&0<Q.length&&"-"!=Q?E=Q:"labels"==Y&&0<Q.length&&"-"!=Q?B=JSON.parse(Q):"style"==Y?I=Q:"parentstyle"==Y?G=Q:"unknownStyle"==Y&&"-"!=Q?O=Q:"stylename"==Y&&0<Q.length&&"-"!=Q?F=Q:"styles"==Y&&0<Q.length&&"-"!=Q?D=JSON.parse(Q):"vars"==Y&&0<Q.length&&
-"-"!=Q?y=JSON.parse(Q):"identity"==Y&&0<Q.length&&"-"!=Q?H=Q:"parent"==Y&&0<Q.length&&"-"!=Q?L=Q:"namespace"==Y&&0<Q.length&&"-"!=Q?N=Q:"width"==Y?M=Q:"height"==Y?P=Q:"left"==Y&&0<Q.length?V=Q:"top"==Y&&0<Q.length?W=Q:"ignore"==Y?pa=Q.split(","):"connect"==Y?na.push(JSON.parse(Q)):"link"==Y?qa=Q:"padding"==Y?x=parseFloat(Q):"edgespacing"==Y?ga=parseFloat(Q):"nodespacing"==Y?ea=parseFloat(Q):"levelspacing"==Y?ba=parseFloat(Q):"layout"==Y&&(K=Q)}}}if(null==d[ha])throw Error(mxResources.get("invalidOrMissingFile"));
-for(var ta=this.editor.csvToArray(d[ha]),Y=sa=null,Q=[],T=0;T<ta.length;T++)H==ta[T]&&(sa=T),L==ta[T]&&(Y=T),Q.push(mxUtils.trim(ta[T]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==ka&&(ka="%"+Q[0]+"%");if(null!=na)for(var ja=0;ja<na.length;ja++)null==n[na[ja].to]&&(n[na[ja].to]={});H=[];for(T=ha+1;T<d.length;T++){var ma=this.editor.csvToArray(d[T]);if(null==ma){var ra=40<d[T].length?d[T].substring(0,40)+"...":d[T];throw Error(ra+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));
-}0<ma.length&&H.push(ma)}q.model.beginUpdate();try{for(T=0;T<H.length;T++){var ma=H[T],S=null,oa=null!=sa?N+ma[sa]:null;null!=oa&&(S=q.model.getCell(oa));var d=null!=S,da=new mxCell(ka,new mxGeometry(X,J,0,0),I||"whiteSpace=wrap;html=1;");da.vertex=!0;da.id=oa;for(var Z=0;Z<ma.length;Z++)q.setAttributeForCell(da,Q[Z],ma[Z]);if(null!=E&&null!=B){var la=B[da.getAttribute(E)];null!=la&&q.labelChanged(da,la)}if(null!=F&&null!=D){var ya=D[da.getAttribute(F)];null!=ya&&(da.style=ya)}q.setAttributeForCell(da,
-"placeholders","1");da.style=q.replacePlaceholders(da,da.style,y);d?(0>mxUtils.indexOf(k,S)&&k.push(S),q.fireEvent(new mxEventObject("cellsInserted","cells",[S]))):q.fireEvent(new mxEventObject("cellsInserted","cells",[da]));S=da;if(!d)for(ja=0;ja<na.length;ja++)n[na[ja].to][S.getAttribute(na[ja].to)]=S;null!=qa&&"link"!=qa&&(q.setLinkForCell(S,S.getAttribute(qa)),q.setAttributeForCell(S,qa,null));var za=this.editor.graph.getPreferredSizeForCell(S),L=null!=Y?q.model.getCell(N+ma[Y]):null;if(S.vertex){ra=
-null!=L?0:X;ha=null!=L?0:ca;null!=V&&null!=S.getAttribute(V)&&(S.geometry.x=ra+parseFloat(S.getAttribute(V)));null!=W&&null!=S.getAttribute(W)&&(S.geometry.y=ha+parseFloat(S.getAttribute(W)));var ua="@"==M.charAt(0)?S.getAttribute(M.substring(1)):null;S.geometry.width=null!=ua&&"auto"!=ua?parseFloat(S.getAttribute(M.substring(1))):"auto"==M||"auto"==ua?za.width+x:parseFloat(M);var fa="@"==P.charAt(0)?S.getAttribute(P.substring(1)):null;S.geometry.height=null!=fa&&"auto"!=fa?parseFloat(fa):"auto"==
-P||"auto"==fa?za.height+x:parseFloat(P);J+=S.geometry.height+ea}d?(null==l[oa]&&(l[oa]=[]),l[oa].push(S)):(e.push(S),null!=L?(L.style=q.replacePlaceholders(L,G,y),q.addCell(S,L),f.push(L)):k.push(q.addCell(S)))}for(T=0;T<f.length;T++)ua="@"==M.charAt(0)?f[T].getAttribute(M.substring(1)):null,fa="@"==P.charAt(0)?f[T].getAttribute(P.substring(1)):null,"auto"!=M&&"auto"!=ua||"auto"!=P&&"auto"!=fa||q.updateGroupBounds([f[T]],x,!0);for(var aa=k.slice(),R=k.slice(),ja=0;ja<na.length;ja++)for(var Fa=na[ja],
-T=0;T<e.length;T++){var S=e[T],Ga=mxUtils.bind(this,function(b,c,d){var e=c.getAttribute(d.from);if(null!=e&&""!=e)for(var e=e.split(","),g=0;g<e.length;g++){var f=n[d.to][e[g]];if(null==f&&null!=O){f=new mxCell(e[g],new mxGeometry(X,ca,0,0),O);f.style=q.replacePlaceholders(c,f.style,y);var l=this.editor.graph.getPreferredSizeForCell(f);f.geometry.width=l.width+x;f.geometry.height=l.height+x;n[d.to][e[g]]=f;f.vertex=!0;f.id=e[g];k.push(q.addCell(f))}if(null!=f){l=d.label;null!=d.fromlabel&&(l=(c.getAttribute(d.fromlabel)||
+e=[],f=[],k=[],l={};if(0<d.length){for(var n={},q=this.editor.graph,y=null,I=null,D=null,G=null,F=null,O=null,B=null,E="whiteSpace=wrap;html=1;",H=null,L=null,N="",M="auto",R="auto",W=null,X=null,fa=40,da=40,ba=100,x=0,C=function(){null!=c?c(Q):(q.setSelectionCells(Q),q.scrollCellToVisible(q.getSelectionCell()))},J=q.getFreeInsertPoint(),ea=J.x,V=J.y,J=V,ja=null,K="auto",L=null,ma=[],pa=null,oa=null,ga=0;ga<d.length&&"#"==d[ga].charAt(0);){b=d[ga];for(ga++;ga<d.length&&"\\"==b.charAt(b.length-1)&&
+"#"==d[ga].charAt(0);)b=b.substring(0,b.length-1)+mxUtils.trim(d[ga].substring(1)),ga++;if("#"!=b.charAt(1)){var ra=b.indexOf(":");if(0<ra){var Y=mxUtils.trim(b.substring(1,ra)),P=mxUtils.trim(b.substring(ra+1));"label"==Y?ja=q.sanitizeHtml(P):"labelname"==Y&&0<P.length&&"-"!=P?F=P:"labels"==Y&&0<P.length&&"-"!=P?B=JSON.parse(P):"style"==Y?I=P:"parentstyle"==Y?E=P:"unknownStyle"==Y&&"-"!=P?O=P:"stylename"==Y&&0<P.length&&"-"!=P?G=P:"styles"==Y&&0<P.length&&"-"!=P?D=JSON.parse(P):"vars"==Y&&0<P.length&&
+"-"!=P?y=JSON.parse(P):"identity"==Y&&0<P.length&&"-"!=P?H=P:"parent"==Y&&0<P.length&&"-"!=P?L=P:"namespace"==Y&&0<P.length&&"-"!=P?N=P:"width"==Y?M=P:"height"==Y?R=P:"left"==Y&&0<P.length?W=P:"top"==Y&&0<P.length?X=P:"ignore"==Y?oa=P.split(","):"connect"==Y?ma.push(JSON.parse(P)):"link"==Y?pa=P:"padding"==Y?x=parseFloat(P):"edgespacing"==Y?fa=parseFloat(P):"nodespacing"==Y?da=parseFloat(P):"levelspacing"==Y?ba=parseFloat(P):"layout"==Y&&(K=P)}}}if(null==d[ga])throw Error(mxResources.get("invalidOrMissingFile"));
+for(var sa=this.editor.csvToArray(d[ga]),Y=ra=null,P=[],T=0;T<sa.length;T++)H==sa[T]&&(ra=T),L==sa[T]&&(Y=T),P.push(mxUtils.trim(sa[T]).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,""));null==ja&&(ja="%"+P[0]+"%");if(null!=ma)for(var ia=0;ia<ma.length;ia++)null==n[ma[ia].to]&&(n[ma[ia].to]={});H=[];for(T=ga+1;T<d.length;T++){var la=this.editor.csvToArray(d[T]);if(null==la){var qa=40<d[T].length?d[T].substring(0,40)+"...":d[T];throw Error(qa+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));
+}0<la.length&&H.push(la)}q.model.beginUpdate();try{for(T=0;T<H.length;T++){var la=H[T],S=null,na=null!=ra?N+la[ra]:null;null!=na&&(S=q.model.getCell(na));var d=null!=S,ca=new mxCell(ja,new mxGeometry(ea,J,0,0),I||"whiteSpace=wrap;html=1;");ca.vertex=!0;ca.id=na;for(var Z=0;Z<la.length;Z++)q.setAttributeForCell(ca,P[Z],la[Z]);if(null!=F&&null!=B){var ka=B[ca.getAttribute(F)];null!=ka&&q.labelChanged(ca,ka)}if(null!=G&&null!=D){var ya=D[ca.getAttribute(G)];null!=ya&&(ca.style=ya)}q.setAttributeForCell(ca,
+"placeholders","1");ca.style=q.replacePlaceholders(ca,ca.style,y);d?(0>mxUtils.indexOf(k,S)&&k.push(S),q.fireEvent(new mxEventObject("cellsInserted","cells",[S]))):q.fireEvent(new mxEventObject("cellsInserted","cells",[ca]));S=ca;if(!d)for(ia=0;ia<ma.length;ia++)n[ma[ia].to][S.getAttribute(ma[ia].to)]=S;null!=pa&&"link"!=pa&&(q.setLinkForCell(S,S.getAttribute(pa)),q.setAttributeForCell(S,pa,null));var za=this.editor.graph.getPreferredSizeForCell(S),L=null!=Y?q.model.getCell(N+la[Y]):null;if(S.vertex){qa=
+null!=L?0:ea;ga=null!=L?0:V;null!=W&&null!=S.getAttribute(W)&&(S.geometry.x=qa+parseFloat(S.getAttribute(W)));null!=X&&null!=S.getAttribute(X)&&(S.geometry.y=ga+parseFloat(S.getAttribute(X)));var ta="@"==M.charAt(0)?S.getAttribute(M.substring(1)):null;S.geometry.width=null!=ta&&"auto"!=ta?parseFloat(S.getAttribute(M.substring(1))):"auto"==M||"auto"==ta?za.width+x:parseFloat(M);var ua="@"==R.charAt(0)?S.getAttribute(R.substring(1)):null;S.geometry.height=null!=ua&&"auto"!=ua?parseFloat(ua):"auto"==
+R||"auto"==ua?za.height+x:parseFloat(R);J+=S.geometry.height+da}d?(null==l[na]&&(l[na]=[]),l[na].push(S)):(e.push(S),null!=L?(L.style=q.replacePlaceholders(L,E,y),q.addCell(S,L),f.push(L)):k.push(q.addCell(S)))}for(T=0;T<f.length;T++)ta="@"==M.charAt(0)?f[T].getAttribute(M.substring(1)):null,ua="@"==R.charAt(0)?f[T].getAttribute(R.substring(1)):null,"auto"!=M&&"auto"!=ta||"auto"!=R&&"auto"!=ua||q.updateGroupBounds([f[T]],x,!0);for(var aa=k.slice(),Q=k.slice(),ia=0;ia<ma.length;ia++)for(var Fa=ma[ia],
+T=0;T<e.length;T++){var S=e[T],Ga=mxUtils.bind(this,function(b,c,d){var e=c.getAttribute(d.from);if(null!=e&&""!=e)for(var e=e.split(","),g=0;g<e.length;g++){var f=n[d.to][e[g]];if(null==f&&null!=O){f=new mxCell(e[g],new mxGeometry(ea,V,0,0),O);f.style=q.replacePlaceholders(c,f.style,y);var l=this.editor.graph.getPreferredSizeForCell(f);f.geometry.width=l.width+x;f.geometry.height=l.height+x;n[d.to][e[g]]=f;f.vertex=!0;f.id=e[g];k.push(q.addCell(f))}if(null!=f){l=d.label;null!=d.fromlabel&&(l=(c.getAttribute(d.fromlabel)||
"")+(l||""));null!=d.sourcelabel&&(l=q.replacePlaceholders(c,d.sourcelabel,y)+(l||""));null!=d.tolabel&&(l=(l||"")+(f.getAttribute(d.tolabel)||""));null!=d.targetlabel&&(l=(l||"")+q.replacePlaceholders(f,d.targetlabel,y));var m="target"==d.placeholders==!d.invert?f:b,m=null!=d.style?q.replacePlaceholders(m,d.style,y):q.createCurrentEdgeStyle(),l=q.insertEdge(null,null,l||"",d.invert?f:b,d.invert?b:f,m);if(null!=d.labels)for(m=0;m<d.labels.length;m++){var p=d.labels[m],t=new mxCell(p.label||m,new mxGeometry(null!=
-p.x?p.x:0,null!=p.y?p.y:0,0,0),"resizable=0;html=1;");t.vertex=!0;t.connectable=!1;t.geometry.relative=!0;null!=p.placeholders&&(t.value=q.replacePlaceholders("target"==p.placeholders==!d.invert?f:b,t.value,y));if(null!=p.dx||null!=p.dy)t.geometry.offset=new mxPoint(null!=p.dx?p.dx:0,null!=p.dy?p.dy:0);l.insert(t)}R.push(l);mxUtils.remove(d.invert?b:f,aa)}}});Ga(S,S,Fa);if(null!=l[S.id])for(Z=0;Z<l[S.id].length;Z++)Ga(S,l[S.id][Z],Fa)}if(null!=pa)for(T=0;T<e.length;T++)for(S=e[T],Z=0;Z<pa.length;Z++)q.setAttributeForCell(S,
-mxUtils.trim(pa[Z]),null);if(0<k.length){var wa=new mxParallelEdgeLayout(q);wa.spacing=ga;wa.checkOverlap=!0;var Aa=function(){0<wa.spacing&&wa.execute(q.getDefaultParent());for(var b=0;b<k.length;b++){var d=q.getCellGeometry(k[b]);d.x=Math.round(q.snap(d.x));d.y=Math.round(q.snap(d.y));"auto"==M&&(d.width=Math.round(q.snap(d.width)));"auto"==P&&(d.height=Math.round(q.snap(d.height)))}};if("["==K.charAt(0)){var xa=C;q.view.validate();this.executeLayoutList(JSON.parse(K),function(){Aa();xa()});C=null}else if("circle"==
-K){var Ba=new mxCircleLayout(q);Ba.disableEdgeStyle=!1;Ba.resetEdges=!1;var Ha=Ba.isVertexIgnored;Ba.isVertexIgnored=function(b){return Ha.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){Ba.execute(q.getDefaultParent());Aa()},!0,C);C=null}else if("horizontaltree"==K||"verticaltree"==K||"auto"==K&&R.length==2*k.length-1&&1==aa.length){q.view.validate();var Ca=new mxCompactTreeLayout(q,"horizontaltree"==K);Ca.levelDistance=ea;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(q.getDefaultParent(),
-0<aa.length?aa[0]:null)},!0,C);C=null}else if("horizontalflow"==K||"verticalflow"==K||"auto"==K&&1==aa.length){q.view.validate();var Da=new mxHierarchicalLayout(q,"horizontalflow"==K?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);Da.intraCellSpacing=ea;Da.parallelEdgeSpacing=ga;Da.interRankCellSpacing=ba;Da.disableEdgeStyle=!1;this.executeLayout(function(){Da.execute(q.getDefaultParent(),R);q.moveCells(R,X,ca)},!0,C);C=null}else if("organic"==K||"auto"==K&&R.length>k.length){q.view.validate();
-var U=new mxFastOrganicLayout(q);U.forceConstant=3*ea;U.disableEdgeStyle=!1;U.resetEdges=!1;var Ea=U.isVertexIgnored;U.isVertexIgnored=function(b){return Ea.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){U.execute(q.getDefaultParent());Aa()},!0,C);C=null}}this.hideDialog()}finally{q.model.endUpdate()}null!=C&&C()}}catch(Na){this.handleError(Na)}};EditorUi.prototype.getSearch=function(b){var d="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var c=
+p.x?p.x:0,null!=p.y?p.y:0,0,0),"resizable=0;html=1;");t.vertex=!0;t.connectable=!1;t.geometry.relative=!0;null!=p.placeholders&&(t.value=q.replacePlaceholders("target"==p.placeholders==!d.invert?f:b,t.value,y));if(null!=p.dx||null!=p.dy)t.geometry.offset=new mxPoint(null!=p.dx?p.dx:0,null!=p.dy?p.dy:0);l.insert(t)}Q.push(l);mxUtils.remove(d.invert?b:f,aa)}}});Ga(S,S,Fa);if(null!=l[S.id])for(Z=0;Z<l[S.id].length;Z++)Ga(S,l[S.id][Z],Fa)}if(null!=oa)for(T=0;T<e.length;T++)for(S=e[T],Z=0;Z<oa.length;Z++)q.setAttributeForCell(S,
+mxUtils.trim(oa[Z]),null);if(0<k.length){var wa=new mxParallelEdgeLayout(q);wa.spacing=fa;wa.checkOverlap=!0;var Aa=function(){0<wa.spacing&&wa.execute(q.getDefaultParent());for(var b=0;b<k.length;b++){var d=q.getCellGeometry(k[b]);d.x=Math.round(q.snap(d.x));d.y=Math.round(q.snap(d.y));"auto"==M&&(d.width=Math.round(q.snap(d.width)));"auto"==R&&(d.height=Math.round(q.snap(d.height)))}};if("["==K.charAt(0)){var xa=C;q.view.validate();this.executeLayoutList(JSON.parse(K),function(){Aa();xa()});C=null}else if("circle"==
+K){var Ba=new mxCircleLayout(q);Ba.disableEdgeStyle=!1;Ba.resetEdges=!1;var Ha=Ba.isVertexIgnored;Ba.isVertexIgnored=function(b){return Ha.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){Ba.execute(q.getDefaultParent());Aa()},!0,C);C=null}else if("horizontaltree"==K||"verticaltree"==K||"auto"==K&&Q.length==2*k.length-1&&1==aa.length){q.view.validate();var Ca=new mxCompactTreeLayout(q,"horizontaltree"==K);Ca.levelDistance=da;Ca.edgeRouting=!1;Ca.resetEdges=!1;this.executeLayout(function(){Ca.execute(q.getDefaultParent(),
+0<aa.length?aa[0]:null)},!0,C);C=null}else if("horizontalflow"==K||"verticalflow"==K||"auto"==K&&1==aa.length){q.view.validate();var Da=new mxHierarchicalLayout(q,"horizontalflow"==K?mxConstants.DIRECTION_WEST:mxConstants.DIRECTION_NORTH);Da.intraCellSpacing=da;Da.parallelEdgeSpacing=fa;Da.interRankCellSpacing=ba;Da.disableEdgeStyle=!1;this.executeLayout(function(){Da.execute(q.getDefaultParent(),Q);q.moveCells(Q,ea,V)},!0,C);C=null}else if("organic"==K||"auto"==K&&Q.length>k.length){q.view.validate();
+var U=new mxFastOrganicLayout(q);U.forceConstant=3*da;U.disableEdgeStyle=!1;U.resetEdges=!1;var Ea=U.isVertexIgnored;U.isVertexIgnored=function(b){return Ea.apply(this,arguments)||0>mxUtils.indexOf(k,b)};this.executeLayout(function(){U.execute(q.getDefaultParent());Aa()},!0,C);C=null}}this.hideDialog()}finally{q.model.endUpdate()}null!=C&&C()}}catch(Na){this.handleError(Na)}};EditorUi.prototype.getSearch=function(b){var d="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=b&&0<window.location.search.length){var c=
"?",e;for(e in urlParams)0>mxUtils.indexOf(b,e)&&null!=urlParams[e]&&(d+=c+e+"="+urlParams[e],c="&")}else d=window.location.search;return d};EditorUi.prototype.getUrl=function(b){b=null!=b?b:window.location.pathname;var d=0<b.indexOf("?")?1:0;if("1"==urlParams.offline)b+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),e;for(e in urlParams)0>mxUtils.indexOf(c,e)&&(b=0==d?b+"?":b+"&",null!=urlParams[e]&&(b+=e+"="+
urlParams[e],d++))}return b};EditorUi.prototype.showLinkDialog=function(b,c,e,f,l){b=new LinkDialog(this,b,c,e,!0,f,l);this.showDialog(b.container,560,130,!0,!0);b.init()};EditorUi.prototype.getServiceCount=function(b){var d=1;null==this.drive&&"function"!==typeof window.DriveClient||d++;null==this.dropbox&&"function"!==typeof window.DropboxClient||d++;null==this.oneDrive&&"function"!==typeof window.OneDriveClient||d++;null!=this.gitHub&&d++;null!=this.gitLab&&d++;null!=this.notion&&d++;b&&isLocalStorage&&
"1"==urlParams.browser&&d++;return d};EditorUi.prototype.updateUi=function(){this.updateButtonContainer();this.updateActionStates();var b=this.getCurrentFile(),c=null!=b||"1"==urlParams.embed&&this.editor.graph.isEnabled();this.menus.get("viewPanels").setEnabled(c);this.menus.get("viewZoom").setEnabled(c);var e=("1"!=urlParams.embed||!this.editor.graph.isEnabled())&&(null==b||b.isRestricted());this.actions.get("makeCopy").setEnabled(!e);this.actions.get("print").setEnabled(!e);this.menus.get("exportAs").setEnabled(!e);
@@ -3795,7 +3795,7 @@ function(b,c,e,f,l,n,q,t){var d=b.editor.graph;if("xml"==e)b.hideDialog(),b.save
this.editor.graph.setEnabled(!0);return c};EditorUi.prototype.showRemotelyStoredLibrary=function(b){var c={},d=document.createElement("div");d.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxUtils.htmlEntities(b));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";d.appendChild(e);var f=document.createElement("div");f.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";f.innerHTML='<div style="text-align:center;padding:8px;"><img src="'+
IMAGE_PATH+'/spin.gif"></div>';var l={};try{var n=mxSettings.getCustomLibraries();for(b=0;b<n.length;b++){var q=n[b];if("R"==q.substring(0,1)){var z=JSON.parse(decodeURIComponent(q.substring(1)));l[z[0]]={id:z[0],title:z[1],downloadUrl:z[2]}}}}catch(y){}this.remoteInvoke("getCustomLibraries",null,null,function(b){f.innerHTML="";if(0==b.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var d=0;d<
b.length;d++){var e=b[d];l[e.id]&&(c[e.id]=e);var g=this.addCheckbox(f,e.title,l[e.id]);(function(b,d){mxEvent.addListener(d,"change",function(){this.checked?c[b.id]=b:delete c[b.id]})})(e,g)}},mxUtils.bind(this,function(b){f.innerHTML="";var c=document.createElement("div");c.style.padding="8px";c.style.textAlign="center";mxUtils.write(c,mxResources.get("error")+": ");mxUtils.write(c,null!=b&&null!=b.message?b.message:mxResources.get("unknownError"));f.appendChild(c)}));d.appendChild(f);d=new CustomDialog(this,
-d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==l[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,d,c))}catch(E){this.handleError(E,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));
+d,mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"));var b=0,d;for(d in c)null==l[d]&&(b++,mxUtils.bind(this,function(c){this.remoteInvoke("getFileContent",[c.downloadUrl],null,mxUtils.bind(this,function(d){b--;0==b&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,d,c))}catch(F){this.handleError(F,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){b--;0==b&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(c[d]));
for(d in l)c[d]||this.closeLibrary(new RemoteLibrary(this,null,l[d]));0==b&&this.spinner.stop()}),null,null,"https://www.diagrams.net/doc/faq/custom-libraries-confluence-cloud");this.showDialog(d.container,340,390,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1},getLocalStorageFile:{isAsync:!1,allowedDomains:["app.diagrams.net"]},getLocalStorageFileNames:{isAsync:!1,allowedDomains:["app.diagrams.net"]},setMigratedFlag:{isAsync:!1,allowedDomains:["app.diagrams.net"]}};
EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(b){this.remoteWin=b;for(var c=0;c<this.remoteInvokeQueue.length;c++)b.postMessage(this.remoteInvokeQueue[c],"*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(b){var c=b.msgMarkers,d=this.remoteInvokeCallbacks[c.callbackId];if(null==d)throw Error("No callback for "+(null!=c?c.callbackId:"null"));b.error?d.error&&d.error(b.error.errResp):
d.callback&&d.callback.apply(this,b.resp);this.remoteInvokeCallbacks[c.callbackId]=null};EditorUi.prototype.remoteInvoke=function(b,c,e,f,l){var d=!0,g=window.setTimeout(mxUtils.bind(this,function(){d=!1;l({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.timeout),k=mxUtils.bind(this,function(){window.clearTimeout(g);d&&f.apply(this,arguments)}),m=mxUtils.bind(this,function(){window.clearTimeout(g);d&&l.apply(this,arguments)});e=e||{};e.callbackId=this.remoteInvokeCallbacks.length;
@@ -3813,31 +3813,31 @@ function(){var b=this.getCurrentFile();return null!=b?b.commentsSupported():!1};
null!=d?d.addComment(b,c,e):c(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var b=this.getCurrentFile();return null!=b?b.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var b=this.getCurrentFile();return null!=b?b.canComment():!0};EditorUi.prototype.newComment=function(b,c){var d=this.getCurrentFile();return null!=d?d.newComment(b,c):new DrawioComment(this,null,b,Date.now(),Date.now(),!1,c)};EditorUi.prototype.isRevisionHistorySupported=function(){var b=this.getCurrentFile();
return null!=b&&b.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(b,c){var d=this.getCurrentFile();null!=d&&d.getRevisions?d.getRevisions(b,c):c({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var b=this.getCurrentFile();return null!=b&&(b.constructor==DriveFile&&b.isEditable()||b.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(b){b.setRequestHeader("Content-Language",
"da, mi, en, de-DE")};EditorUi.prototype.loadUrl=function(b,c,e,f,l,n,q,t){EditorUi.logEvent("SHOULD NOT BE CALLED: loadUrl");return this.editor.loadUrl(b,c,e,f,l,n,q,t)};EditorUi.prototype.loadFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: loadFonts");return this.editor.loadFonts(b)};EditorUi.prototype.createSvgDataUri=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: createSvgDataUri");return Editor.createSvgDataUri(b)};EditorUi.prototype.embedCssFonts=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: embedCssFonts");
-return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,c,e,f,l,n,q,t,z,y,I,D,F,E,O,B){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,e,f,l,n,q,t,z,y,I,D,F,E,O,B)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
+return this.editor.embedCssFonts(b,c)};EditorUi.prototype.embedExtFonts=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: embedExtFonts");return this.editor.embedExtFonts(b)};EditorUi.prototype.exportToCanvas=function(b,c,e,f,l,n,q,t,z,y,I,D,G,F,O,B){EditorUi.logEvent("SHOULD NOT BE CALLED: exportToCanvas");return this.editor.exportToCanvas(b,c,e,f,l,n,q,t,z,y,I,D,G,F,O,B)};EditorUi.prototype.createImageUrlConverter=function(){EditorUi.logEvent("SHOULD NOT BE CALLED: createImageUrlConverter");
return this.editor.createImageUrlConverter()};EditorUi.prototype.convertImages=function(b,c,e,f){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImages");return this.editor.convertImages(b,c,e,f)};EditorUi.prototype.convertImageToDataUri=function(b,c){EditorUi.logEvent("SHOULD NOT BE CALLED: convertImageToDataUri");return this.editor.convertImageToDataUri(b,c)};EditorUi.prototype.base64Encode=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: base64Encode");return Editor.base64Encode(b)};EditorUi.prototype.updateCRC=
function(b,c,e,f){EditorUi.logEvent("SHOULD NOT BE CALLED: updateCRC");return Editor.updateCRC(b,c,e,f)};EditorUi.prototype.crc32=function(b){EditorUi.logEvent("SHOULD NOT BE CALLED: crc32");return Editor.crc32(b)};EditorUi.prototype.writeGraphModelToPng=function(b,c,e,f,l){EditorUi.logEvent("SHOULD NOT BE CALLED: writeGraphModelToPng");return Editor.writeGraphModelToPng(b,c,e,f,l)};EditorUi.prototype.getLocalStorageFileNames=function(){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=
urlParams.forceMigration)return null;for(var b=[],c=0;c<localStorage.length;c++){var e=localStorage.key(c),f=localStorage.getItem(e);if(0<e.length&&(".scratchpad"==e||"."!=e.charAt(0))&&0<f.length){var l="<mxfile "===f.substring(0,8)||"<?xml"===f.substring(0,5)||"\x3c!--[if IE]>"===f.substring(0,12),f="<mxlibrary>"===f.substring(0,11);(l||f)&&b.push(e)}}return b};EditorUi.prototype.getLocalStorageFile=function(b){if("1"==localStorage.getItem(".localStorageMigrated")&&"1"!=urlParams.forceMigration)return null;
var c=localStorage.getItem(b);return{title:b,data:c,isLib:"<mxlibrary>"===c.substring(0,11)}};EditorUi.prototype.setMigratedFlag=function(){localStorage.setItem(".localStorageMigrated","1")}})();
-var CommentsWindow=function(b,c,e,f,n,l){function q(){for(var b=D.getElementsByTagName("div"),c=0,d=0;d<b.length;d++)"none"!=b[d].style.display&&b[d].parentNode==D&&c++;F.style.display=0==c?"block":"none"}function d(b,c,d,e){function f(){c.removeChild(l);c.removeChild(m);k.style.display="block";g.style.display="block"}z={div:c,comment:b,saveCallback:d,deleteOnCancel:e};var g=c.querySelector(".geCommentTxt"),k=c.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
+var CommentsWindow=function(b,c,e,f,n,l){function q(){for(var b=D.getElementsByTagName("div"),c=0,d=0;d<b.length;d++)"none"!=b[d].style.display&&b[d].parentNode==D&&c++;G.style.display=0==c?"block":"none"}function d(b,c,d,e){function f(){c.removeChild(l);c.removeChild(m);k.style.display="block";g.style.display="block"}z={div:c,comment:b,saveCallback:d,deleteOnCancel:e};var g=c.querySelector(".geCommentTxt"),k=c.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className=
"geCommentEditTxtArea";l.style.minHeight=g.offsetHeight+"px";l.value=b.content;c.insertBefore(l,g);var m=document.createElement("div");m.className="geCommentEditBtns";var n=mxUtils.button(mxResources.get("cancel"),function(){e?(c.parentNode.removeChild(c),q()):f();z=null});n.className="geCommentEditBtn";m.appendChild(n);var p=mxUtils.button(mxResources.get("save"),function(){g.innerHTML="";b.content=l.value;mxUtils.write(g,b.content);f();d(b);z=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this,
function(b){mxEvent.isConsumed(b)||((mxEvent.isControlDown(b)||mxClient.IS_MAC&&mxEvent.isMetaDown(b))&&13==b.keyCode?(p.click(),mxEvent.consume(b)):27==b.keyCode&&(n.click(),mxEvent.consume(b)))}));p.focus();p.className="geCommentEditBtn gePrimaryBtn";m.appendChild(p);c.insertBefore(m,g);k.style.display="none";g.style.display="none";l.focus()}function k(c,d){d.innerHTML="";var e=new Date(c.modifiedDate),f=b.timeSince(e);null==f&&(f=mxResources.get("lessThanAMinute"));mxUtils.write(d,mxResources.get("timeAgo",
[f],"{1} ago"));d.setAttribute("title",e.toLocaleDateString()+" "+e.toLocaleTimeString())}function g(b){var c=document.createElement("img");c.className="geCommentBusyImg";c.src=IMAGE_PATH+"/spin.gif";b.appendChild(c);b.busyImg=c}function p(b){b.style.border="1px solid red";b.removeChild(b.busyImg)}function m(b){b.style.border="";b.removeChild(b.busyImg)}function u(c,e,f,l,n){function y(b,d,e){var f=document.createElement("li");f.className="geCommentAction";var g=document.createElement("a");g.className=
-"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});V.appendChild(f);e&&(f.style.display="none")}function M(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=x;b(c);return{pdiv:e,replies:d}}function P(e,f,k,n,q){function t(){g(y);c.addReply(B,function(b){B.id=b;c.replies.push(B);m(y);k&&k()},function(c){x();p(y);b.handleError(c,null,
-null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},n,q)}function x(){d(B,y,function(b){t()},!0)}var v=M().pdiv,B=b.newComment(e,b.getCurrentUser());B.pCommentId=c.id;null==c.replies&&(c.replies=[]);var y=u(B,c.replies,v,l+1);f?x():t()}if(n||!c.isResolved){F.style.display="none";var x=document.createElement("div");x.className="geCommentContainer";x.setAttribute("data-commentId",c.id);x.style.marginLeft=20*l+5+"px";c.isResolved&&!Editor.isDarkMode()&&(x.style.backgroundColor="ghostWhite");
-var C=document.createElement("div");C.className="geCommentHeader";var G=document.createElement("img");G.className="geCommentUserImg";G.src=c.user.pictureUrl||Editor.userImage;C.appendChild(G);G=document.createElement("div");G.className="geCommentHeaderTxt";C.appendChild(G);var H=document.createElement("div");H.className="geCommentUsername";mxUtils.write(H,c.user.displayName||"");G.appendChild(H);H=document.createElement("div");H.className="geCommentDate";H.setAttribute("data-commentId",c.id);k(c,
-H);G.appendChild(H);x.appendChild(C);C=document.createElement("div");C.className="geCommentTxt";mxUtils.write(C,c.content||"");x.appendChild(C);c.isLocked&&(x.style.opacity="0.5");C=document.createElement("div");C.className="geCommentActions";var V=document.createElement("ul");V.className="geCommentActionsList";C.appendChild(V);v||c.isLocked||0!=l&&!t||y(mxResources.get("reply"),function(){P("",!0)},c.isResolved);G=b.getCurrentUser();null==G||G.id!=c.user.id||v||c.isLocked||(y(mxResources.get("edit"),
+"geCommentActionLnk";mxUtils.write(g,b);f.appendChild(g);mxEvent.addListener(g,"click",function(b){d(b,c);b.preventDefault();mxEvent.consume(b)});W.appendChild(f);e&&(f.style.display="none")}function M(){function b(c){d.push(e);if(null!=c.replies)for(var f=0;f<c.replies.length;f++)e=e.nextSibling,b(c.replies[f])}var d=[],e=x;b(c);return{pdiv:e,replies:d}}function R(e,f,k,n,q){function t(){g(y);c.addReply(B,function(b){B.id=b;c.replies.push(B);m(y);k&&k()},function(c){x();p(y);b.handleError(c,null,
+null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},n,q)}function x(){d(B,y,function(b){t()},!0)}var v=M().pdiv,B=b.newComment(e,b.getCurrentUser());B.pCommentId=c.id;null==c.replies&&(c.replies=[]);var y=u(B,c.replies,v,l+1);f?x():t()}if(n||!c.isResolved){G.style.display="none";var x=document.createElement("div");x.className="geCommentContainer";x.setAttribute("data-commentId",c.id);x.style.marginLeft=20*l+5+"px";c.isResolved&&!Editor.isDarkMode()&&(x.style.backgroundColor="ghostWhite");
+var C=document.createElement("div");C.className="geCommentHeader";var E=document.createElement("img");E.className="geCommentUserImg";E.src=c.user.pictureUrl||Editor.userImage;C.appendChild(E);E=document.createElement("div");E.className="geCommentHeaderTxt";C.appendChild(E);var H=document.createElement("div");H.className="geCommentUsername";mxUtils.write(H,c.user.displayName||"");E.appendChild(H);H=document.createElement("div");H.className="geCommentDate";H.setAttribute("data-commentId",c.id);k(c,
+H);E.appendChild(H);x.appendChild(C);C=document.createElement("div");C.className="geCommentTxt";mxUtils.write(C,c.content||"");x.appendChild(C);c.isLocked&&(x.style.opacity="0.5");C=document.createElement("div");C.className="geCommentActions";var W=document.createElement("ul");W.className="geCommentActionsList";C.appendChild(W);v||c.isLocked||0!=l&&!t||y(mxResources.get("reply"),function(){R("",!0)},c.isResolved);E=b.getCurrentUser();null==E||E.id!=c.user.id||v||c.isLocked||(y(mxResources.get("edit"),
function(){function e(){d(c,x,function(){g(x);c.editComment(c.content,function(){m(x)},function(c){p(x);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}e()},c.isResolved),y(mxResources.get("delete"),function(){b.confirm(mxResources.get("areYouSure"),function(){g(x);c.deleteComment(function(b){if(!0===b){b=x.querySelector(".geCommentTxt");b.innerHTML="";mxUtils.write(b,mxResources.get("msgDeleted"));var d=x.querySelectorAll(".geCommentAction");for(b=
-0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);m(x);x.style.opacity="0.5"}else{d=M(c).replies;for(b=0;b<d.length;b++)D.removeChild(d[b]);for(b=0;b<e.length;b++)if(e[b]==c){e.splice(b,1);break}F.style.display=0==D.getElementsByTagName("div").length?"block":"none"}},function(c){p(x);b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));v||c.isLocked||0!=l||y(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(b){function d(){var d=
-b.target;d.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(d,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=c.isResolved?"none":"",f=M(c).replies,g=Editor.isDarkMode()?"transparent":c.isResolved?"ghostWhite":"white",k=0;k<f.length;k++){f[k].style.backgroundColor=g;for(var l=f[k].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=d.parentNode&&(l[m].style.display=e);B||(f[k].style.display="none")}q()}c.isResolved?P(mxResources.get("reOpened")+": ",!0,
-d,!1,!0):P(mxResources.get("markedAsResolved"),!1,d,!0)});x.appendChild(C);null!=f?D.insertBefore(x,f.nextSibling):D.appendChild(x);for(f=0;null!=c.replies&&f<c.replies.length;f++)C=c.replies[f],C.isResolved=c.isResolved,u(C,c.replies,null,l+1,n);null!=z&&(z.comment.id==c.id?(n=c.content,c.content=z.comment.content,d(c,x,z.saveCallback,z.deleteOnCancel),c.content=n):null==z.comment.id&&z.comment.pCommentId==c.id&&(D.appendChild(z.div),d(z.comment,z.div,z.saveCallback,z.deleteOnCancel)));return x}}
-var v=!b.canComment(),t=b.canReplyToReplies(),z=null,y=document.createElement("div");y.className="geCommentsWin";y.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var I=EditorUi.compactUi?"26px":"30px",D=document.createElement("div");D.className="geCommentsList";D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";D.style.bottom=parseInt(I)+7+"px";y.appendChild(D);var F=document.createElement("span");F.style.cssText="display:none;padding-top:10px;text-align:center;";
-mxUtils.write(F,mxResources.get("noCommentsFound"));var E=document.createElement("div");E.className="geToolbarContainer geCommentsToolbar";E.style.height=I;E.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";E.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";I=document.createElement("a");I.className="geButton";if(!v){var O=I.cloneNode();O.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';O.setAttribute("title",mxResources.get("create")+
-"...");mxEvent.addListener(O,"click",function(c){function e(){d(f,k,function(c){g(k);b.addComment(c,function(b){c.id=b;G.push(c);m(k)},function(c){p(k);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var f=b.newComment("",b.getCurrentUser()),k=u(f,G,null,0);e();c.preventDefault();mxEvent.consume(c)});E.appendChild(O)}O=I.cloneNode();O.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';O.setAttribute("title",mxResources.get("showResolved"));
-var B=!1;Editor.isDarkMode()&&(O.style.filter="invert(100%)");mxEvent.addListener(O,"click",function(b){this.className=(B=!B)?"geButton geCheckedBtn":"geButton";H();b.preventDefault();mxEvent.consume(b)});E.appendChild(O);b.commentsRefreshNeeded()&&(O=I.cloneNode(),O.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',O.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(O.style.filter="invert(100%)"),mxEvent.addListener(O,"click",function(b){H();
-b.preventDefault();mxEvent.consume(b)}),E.appendChild(O));b.commentsSaveNeeded()&&(I=I.cloneNode(),I.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',I.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(I.style.filter="invert(100%)"),mxEvent.addListener(I,"click",function(b){l();b.preventDefault();mxEvent.consume(b)}),E.appendChild(I));y.appendChild(E);var G=[],H=mxUtils.bind(this,function(){this.hasError=!1;if(null!=z)try{z.div=z.div.cloneNode(!0);
-var c=z.div.querySelector(".geCommentEditTxtArea"),e=z.div.querySelector(".geCommentEditBtns");z.comment.content=c.value;c.parentNode.removeChild(c);e.parentNode.removeChild(e)}catch(P){b.handleError(P)}D.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";t=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(b){function c(b){if(null!=b){b.sort(function(b,c){return new Date(b.modifiedDate)-
-new Date(c.modifiedDate)});for(var d=0;d<b.length;d++)c(b[d].replies)}}b.sort(function(b,c){return new Date(b.modifiedDate)-new Date(c.modifiedDate)});D.innerHTML="";D.appendChild(F);F.style.display="block";G=b;for(b=0;b<G.length;b++)c(G[b].replies),u(G[b],G,null,0,B);null!=z&&null==z.comment.id&&null==z.comment.pCommentId&&(D.appendChild(z.div),d(z.comment,z.div,z.saveCallback,z.deleteOnCancel))},mxUtils.bind(this,function(b){D.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(b&&b.message?
-": "+b.message:""));this.hasError=!0})):D.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});H();this.refreshComments=H;E=mxUtils.bind(this,function(){function b(c){var e=d[c.id];if(null!=e)for(k(c,e),e=0;null!=c.replies&&e<c.replies.length;e++)b(c.replies[e])}if(this.window.isVisible()){for(var c=D.querySelectorAll(".geCommentDate"),d={},e=0;e<c.length;e++){var f=c[e];d[f.getAttribute("data-commentId")]=f}for(e=0;e<G.length;e++)b(G[e])}});setInterval(E,6E4);this.refreshCommentsTime=E;this.window=
+0;b<d.length;b++)d[b].parentNode.removeChild(d[b]);m(x);x.style.opacity="0.5"}else{d=M(c).replies;for(b=0;b<d.length;b++)D.removeChild(d[b]);for(b=0;b<e.length;b++)if(e[b]==c){e.splice(b,1);break}G.style.display=0==D.getElementsByTagName("div").length?"block":"none"}},function(c){p(x);b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},c.isResolved));v||c.isLocked||0!=l||y(c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(b){function d(){var d=
+b.target;d.innerHTML="";c.isResolved=!c.isResolved;mxUtils.write(d,c.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var e=c.isResolved?"none":"",f=M(c).replies,g=Editor.isDarkMode()?"transparent":c.isResolved?"ghostWhite":"white",k=0;k<f.length;k++){f[k].style.backgroundColor=g;for(var l=f[k].querySelectorAll(".geCommentAction"),m=0;m<l.length;m++)l[m]!=d.parentNode&&(l[m].style.display=e);B||(f[k].style.display="none")}q()}c.isResolved?R(mxResources.get("reOpened")+": ",!0,
+d,!1,!0):R(mxResources.get("markedAsResolved"),!1,d,!0)});x.appendChild(C);null!=f?D.insertBefore(x,f.nextSibling):D.appendChild(x);for(f=0;null!=c.replies&&f<c.replies.length;f++)C=c.replies[f],C.isResolved=c.isResolved,u(C,c.replies,null,l+1,n);null!=z&&(z.comment.id==c.id?(n=c.content,c.content=z.comment.content,d(c,x,z.saveCallback,z.deleteOnCancel),c.content=n):null==z.comment.id&&z.comment.pCommentId==c.id&&(D.appendChild(z.div),d(z.comment,z.div,z.saveCallback,z.deleteOnCancel)));return x}}
+var v=!b.canComment(),t=b.canReplyToReplies(),z=null,y=document.createElement("div");y.className="geCommentsWin";y.style.background=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";var I=EditorUi.compactUi?"26px":"30px",D=document.createElement("div");D.className="geCommentsList";D.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";D.style.bottom=parseInt(I)+7+"px";y.appendChild(D);var G=document.createElement("span");G.style.cssText="display:none;padding-top:10px;text-align:center;";
+mxUtils.write(G,mxResources.get("noCommentsFound"));var F=document.createElement("div");F.className="geToolbarContainer geCommentsToolbar";F.style.height=I;F.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";F.style.backgroundColor=Editor.isDarkMode()?Dialog.backdropColor:"whiteSmoke";I=document.createElement("a");I.className="geButton";if(!v){var O=I.cloneNode();O.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';O.setAttribute("title",mxResources.get("create")+
+"...");mxEvent.addListener(O,"click",function(c){function e(){d(f,k,function(c){g(k);b.addComment(c,function(b){c.id=b;E.push(c);m(k)},function(c){p(k);e();b.handleError(c,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})},!0)}var f=b.newComment("",b.getCurrentUser()),k=u(f,E,null,0);e();c.preventDefault();mxEvent.consume(c)});F.appendChild(O)}O=I.cloneNode();O.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';O.setAttribute("title",mxResources.get("showResolved"));
+var B=!1;Editor.isDarkMode()&&(O.style.filter="invert(100%)");mxEvent.addListener(O,"click",function(b){this.className=(B=!B)?"geButton geCheckedBtn":"geButton";H();b.preventDefault();mxEvent.consume(b)});F.appendChild(O);b.commentsRefreshNeeded()&&(O=I.cloneNode(),O.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',O.setAttribute("title",mxResources.get("refresh")),Editor.isDarkMode()&&(O.style.filter="invert(100%)"),mxEvent.addListener(O,"click",function(b){H();
+b.preventDefault();mxEvent.consume(b)}),F.appendChild(O));b.commentsSaveNeeded()&&(I=I.cloneNode(),I.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',I.setAttribute("title",mxResources.get("save")),Editor.isDarkMode()&&(I.style.filter="invert(100%)"),mxEvent.addListener(I,"click",function(b){l();b.preventDefault();mxEvent.consume(b)}),F.appendChild(I));y.appendChild(F);var E=[],H=mxUtils.bind(this,function(){this.hasError=!1;if(null!=z)try{z.div=z.div.cloneNode(!0);
+var c=z.div.querySelector(".geCommentEditTxtArea"),e=z.div.querySelector(".geCommentEditBtns");z.comment.content=c.value;c.parentNode.removeChild(c);e.parentNode.removeChild(e)}catch(R){b.handleError(R)}D.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";t=b.canReplyToReplies();b.commentsSupported()?b.getComments(function(b){function c(b){if(null!=b){b.sort(function(b,c){return new Date(b.modifiedDate)-
+new Date(c.modifiedDate)});for(var d=0;d<b.length;d++)c(b[d].replies)}}b.sort(function(b,c){return new Date(b.modifiedDate)-new Date(c.modifiedDate)});D.innerHTML="";D.appendChild(G);G.style.display="block";E=b;for(b=0;b<E.length;b++)c(E[b].replies),u(E[b],E,null,0,B);null!=z&&null==z.comment.id&&null==z.comment.pCommentId&&(D.appendChild(z.div),d(z.comment,z.div,z.saveCallback,z.deleteOnCancel))},mxUtils.bind(this,function(b){D.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(b&&b.message?
+": "+b.message:""));this.hasError=!0})):D.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});H();this.refreshComments=H;F=mxUtils.bind(this,function(){function b(c){var e=d[c.id];if(null!=e)for(k(c,e),e=0;null!=c.replies&&e<c.replies.length;e++)b(c.replies[e])}if(this.window.isVisible()){for(var c=D.querySelectorAll(".geCommentDate"),d={},e=0;e<c.length;e++){var f=c[e];d[f.getAttribute("data-commentId")]=f}for(e=0;e<E.length;e++)b(E[e])}});setInterval(F,6E4);this.refreshCommentsTime=F;this.window=
new mxWindow(mxResources.get("comments"),y,c,e,f,n,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW,mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(b,c){var d=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;b=Math.max(0,Math.min(b,(window.innerWidth||
document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));c=Math.max(0,Math.min(c,d-this.table.clientHeight-48));this.getX()==b&&this.getY()==c||mxWindow.prototype.setLocation.apply(this,arguments)};var L=mxUtils.bind(this,function(){var b=this.window.getX(),c=this.window.getY();this.window.setLocation(b,c)});mxEvent.addListener(window,"resize",L);this.destroy=function(){mxEvent.removeListener(window,"resize",L);this.window.destroy()}},ConfirmDialog=function(b,c,e,
f,n,l,q,d,k,g,p){var m=document.createElement("div");m.style.textAlign="center";p=null!=p?p:44;var u=document.createElement("div");u.style.padding="6px";u.style.overflow="auto";u.style.maxHeight=p+"px";u.style.lineHeight="1.2em";mxUtils.write(u,c);m.appendChild(u);null!=g&&(u=document.createElement("div"),u.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",g),u.appendChild(c),m.appendChild(u));g=document.createElement("div");g.style.textAlign="center";g.style.whiteSpace=
@@ -3921,7 +3921,7 @@ b.geometry.height+10:-g[1].geometry.height-10)*n;var q=t.getOutgoingTreeEdges(t.
p.height,y.y+y.height)-Math.max(p.y,y.y))/n))}}u?l=0:f=0;for(v=0;v<q.length;v++)if(B=t.model.getTerminal(q[v],!1),k==d(B)&&(y=t.view.getState(B),B!=b&&null!=y&&(u&&c!=y.getCenterX()<m.getCenterX()||!u&&c!=y.getCenterY()<m.getCenterY()))){var z=[];t.traverse(y.cell,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&z.push(c);(null==c||d)&&z.push(b);return null==c||d});t.moveCells(z,(c?1:-1)*f,(c?1:-1)*l)}}}return t.addCells(g,e)}finally{t.model.endUpdate()}}function g(b){t.model.beginUpdate();try{var c=
d(b),e=t.getIncomingTreeEdges(b),f=t.cloneCells([e[0],b]);t.model.setTerminal(e[0],f[1],!1);t.model.setTerminal(f[0],f[1],!0);t.model.setTerminal(f[0],b,!1);var g=t.model.getParent(b),k=g.geometry,l=[];t.view.currentRoot!=g&&(f[1].geometry.x-=k.x,f[1].geometry.y-=k.y);t.traverse(b,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});var m=b.geometry.width+40,n=b.geometry.height+40;c==mxConstants.DIRECTION_SOUTH?m=0:c==mxConstants.DIRECTION_NORTH?
(m=0,n=-n):c==mxConstants.DIRECTION_WEST?(m=-m,n=0):c==mxConstants.DIRECTION_EAST&&(n=0);t.moveCells(l,m,n);return t.addCells(f,g)}finally{t.model.endUpdate()}}function p(b,c){t.model.beginUpdate();try{var e=t.model.getParent(b),f=t.getIncomingTreeEdges(b),g=d(b);0==f.length&&(f=[t.createEdge(e,null,"",null,null,t.createCurrentEdgeStyle())],g=c);var k=t.cloneCells([f[0],b]);t.model.setTerminal(k[0],b,!0);if(null==t.model.getTerminal(k[0],!1)){t.model.setTerminal(k[0],k[1],!1);var l=t.getCellStyle(k[1]).newEdgeStyle;
-if(null!=l)try{var m=JSON.parse(l),n;for(n in m)t.setCellStyles(n,m[n],[k[0]]),"edgeStyle"==n&&"elbowEdgeStyle"==m[n]&&t.setCellStyles("elbow",g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[k[0]])}catch(qa){}}var f=t.getOutgoingTreeEdges(b),p=e.geometry,l=[];t.view.currentRoot==e&&(p=new mxRectangle);for(m=0;m<f.length;m++){var q=t.model.getTerminal(f[m],!1);null!=q&&l.push(q)}var u=t.view.getBounds(l),v=t.view.translate,B=t.view.scale;g==mxConstants.DIRECTION_SOUTH?
+if(null!=l)try{var m=JSON.parse(l),n;for(n in m)t.setCellStyles(n,m[n],[k[0]]),"edgeStyle"==n&&"elbowEdgeStyle"==m[n]&&t.setCellStyles("elbow",g==mxConstants.DIRECTION_SOUTH||g==mxConstants.DIRECTION_NOTH?"vertical":"horizontal",[k[0]])}catch(pa){}}var f=t.getOutgoingTreeEdges(b),p=e.geometry,l=[];t.view.currentRoot==e&&(p=new mxRectangle);for(m=0;m<f.length;m++){var q=t.model.getTerminal(f[m],!1);null!=q&&l.push(q)}var u=t.view.getBounds(l),v=t.view.translate,B=t.view.scale;g==mxConstants.DIRECTION_SOUTH?
(k[1].geometry.x=null==u?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(u.x+u.width)/B-v.x-p.x+10,k[1].geometry.y+=k[1].geometry.height-p.y+40):g==mxConstants.DIRECTION_NORTH?(k[1].geometry.x=null==u?b.geometry.x+(b.geometry.width-k[1].geometry.width)/2:(u.x+u.width)/B-v.x+-p.x+10,k[1].geometry.y-=k[1].geometry.height+p.y+40):(k[1].geometry.x=g==mxConstants.DIRECTION_WEST?k[1].geometry.x-(k[1].geometry.width+p.x+40):k[1].geometry.x+(k[1].geometry.width-p.x+40),k[1].geometry.y=null==u?b.geometry.y+
(b.geometry.height-k[1].geometry.height)/2:(u.y+u.height)/B-v.y+-p.y+10);return t.addCells(k,e)}finally{t.model.endUpdate()}}function m(b,c,d){b=t.getOutgoingTreeEdges(b);d=t.view.getState(d);var e=[];if(null!=d&&null!=b){for(var f=0;f<b.length;f++){var g=t.view.getState(t.model.getTerminal(b[f],!1));null!=g&&(!c&&Math.min(g.x+g.width,d.x+d.width)>=Math.max(g.x,d.x)||c&&Math.min(g.y+g.height,d.y+d.height)>=Math.max(g.y,d.y))&&e.push(g)}e.sort(function(b,d){return c?b.x+b.width-d.x-d.width:b.y+b.height-
d.y-d.height})}return e}function u(b,c){var e=d(b),f=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST;(e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST)==f&&e!=c?v.actions.get("selectParent").funct():e==c?(f=t.getOutgoingTreeEdges(b),null!=f&&0<f.length&&t.setSelectionCell(t.model.getTerminal(f[0],!1))):(e=t.getIncomingTreeEdges(b),null!=e&&0<e.length&&(f=m(t.model.getTerminal(e[0],!0),f,b),e=t.view.getState(b),null!=e&&(e=mxUtils.indexOf(f,e),0<=e&&(e+=c==mxConstants.DIRECTION_NORTH||
@@ -3931,13 +3931,13 @@ c==mxConstants.DIRECTION_WEST?-1:1,0<=e&&e<=f.length-1&&t.setSelectionCell(f[e].
!0))}},null,null,"Alt+Shift+P");v.actions.addAction("selectDescendants",function(b,c){var d=t.getSelectionCell();if(t.isEnabled()&&t.model.isVertex(d)){if(null!=c&&mxEvent.isAltDown(c))t.setSelectionCells(t.model.getTreeEdges(d,null==c||!mxEvent.isShiftDown(c),null==c||!mxEvent.isControlDown(c)));else{var e=[];t.traverse(d,!0,function(b,d){var f=null!=d&&t.isTreeEdge(d);f&&e.push(d);null!=d&&!f||null!=c&&mxEvent.isShiftDown(c)||e.push(b);return null==d||f})}t.setSelectionCells(e)}},null,null,"Alt+Shift+D");
var I=t.removeCells;t.removeCells=function(c,d){d=null!=d?d:!0;null==c&&(c=this.getDeletableCells(this.getSelectionCells()));d&&(c=this.getDeletableCells(this.addAllEdges(c)));for(var f=[],g=0;g<c.length;g++){var k=c[g];z.isEdge(k)&&e(k)&&(f.push(k),k=z.getTerminal(k,!1));if(b(k)){var l=[];t.traverse(k,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&l.push(c);(null==c||d)&&l.push(b);return null==c||d});0<l.length&&(f=f.concat(l),k=t.getIncomingTreeEdges(c[g]),c=c.concat(k))}else null!=k&&f.push(c[g])}c=
f;return I.apply(this,arguments)};v.hoverIcons.getStateAt=function(c,d,e){return b(c.cell)?null:this.graph.view.getState(this.graph.getCellAt(d,e))};var D=t.duplicateCells;t.duplicateCells=function(c,d){c=null!=c?c:this.getSelectionCells();for(var e=c.slice(0),f=0;f<e.length;f++){var g=t.view.getState(e[f]);if(null!=g&&b(g.cell))for(var k=t.getIncomingTreeEdges(g.cell),g=0;g<k.length;g++)mxUtils.remove(k[g],c)}this.model.beginUpdate();try{var l=D.call(this,c,d);if(l.length==c.length)for(f=0;f<c.length;f++)if(b(c[f])){var m=
-t.getIncomingTreeEdges(l[f]),k=t.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,t.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var F=t.moveCells;t.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var n=g,p=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||t.model.isEdge(c[q])&&null==t.model.getTerminal(c[q],
-!0)){g=t.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var u=t.getIncomingTreeEdges(c[0]);if(0<u.length){var v=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=v){var x=t.view.getState(n);null!=x&&(d=(x.getCenterX()-v.getCenterX())/t.view.scale,e=(x.getCenterY()-v.getCenterY())/t.view.scale)}}}}m=F.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
-!0))&&this.model.setTerminal(m[q],n,!0);else if(b(c[q])&&(u=t.getIncomingTreeEdges(c[q]),0<u.length))if(!f)b(n)&&0>mxUtils.indexOf(c,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],n,!0);else if(0==t.getIncomingTreeEdges(m[q]).length){p=n;if(null==p||p==t.model.getParent(c[q]))p=t.model.getTerminal(u[0],!0);f=this.cloneCell(u[0]);this.addEdge(f,t.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=v.sidebar){var E=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=
-function(c,d,e,f){var g=t.model,k=null;g.beginUpdate();try{if(k=E.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=t.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var O={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},B=v.onKeyDown;v.onKeyDown=function(c){try{if(t.isEnabled()&&
+t.getIncomingTreeEdges(l[f]),k=t.getIncomingTreeEdges(c[f]);if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,t.getDefaultParent(),this.model.getTerminal(k[0],!0),l[f])}}}finally{this.model.endUpdate()}return l};var G=t.moveCells;t.moveCells=function(c,d,e,f,g,k,l){var m=null;this.model.beginUpdate();try{var n=g,p=this.getCurrentCellStyle(g);if(null!=c&&b(g)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var q=0;q<c.length;q++)if(b(c[q])||t.model.isEdge(c[q])&&null==t.model.getTerminal(c[q],
+!0)){g=t.model.getParent(c[q]);break}if(null!=n&&g!=n&&null!=this.view.getState(c[0])){var u=t.getIncomingTreeEdges(c[0]);if(0<u.length){var v=t.view.getState(t.model.getTerminal(u[0],!0));if(null!=v){var x=t.view.getState(n);null!=x&&(d=(x.getCenterX()-v.getCenterX())/t.view.scale,e=(x.getCenterY()-v.getCenterY())/t.view.scale)}}}}m=G.apply(this,arguments);if(null!=m&&null!=c&&m.length==c.length)for(q=0;q<m.length;q++)if(this.model.isEdge(m[q]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[q],
+!0))&&this.model.setTerminal(m[q],n,!0);else if(b(c[q])&&(u=t.getIncomingTreeEdges(c[q]),0<u.length))if(!f)b(n)&&0>mxUtils.indexOf(c,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],n,!0);else if(0==t.getIncomingTreeEdges(m[q]).length){p=n;if(null==p||p==t.model.getParent(c[q]))p=t.model.getTerminal(u[0],!0);f=this.cloneCell(u[0]);this.addEdge(f,t.getDefaultParent(),p,m[q])}}finally{this.model.endUpdate()}return m};if(null!=v.sidebar){var F=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=
+function(c,d,e,f){var g=t.model,k=null;g.beginUpdate();try{if(k=F.apply(this,arguments),b(c))for(var l=0;l<k.length;l++)if(g.isEdge(k[l])&&null==g.getTerminal(k[l],!0)){g.setTerminal(k[l],c,!0);var m=t.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{g.endUpdate()}return k}}var O={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},B=v.onKeyDown;v.onKeyDown=function(c){try{if(t.isEnabled()&&
!t.isEditing()&&b(t.getSelectionCell())&&1==t.getSelectionCount()){var d=null;0<t.getIncomingTreeEdges(t.getSelectionCell()).length&&(9==c.which?d=mxEvent.isShiftDown(c)?g(t.getSelectionCell()):p(t.getSelectionCell()):13==c.which&&(d=k(t.getSelectionCell(),!mxEvent.isShiftDown(c))));if(null!=d&&0<d.length)1==d.length&&t.model.isEdge(d[0])?t.setSelectionCell(t.model.getTerminal(d[0],!1)):t.setSelectionCell(d[d.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(t.view.getState(t.getSelectionCell())),
t.startEditingAtCell(t.getSelectionCell()),mxEvent.consume(c);else if(mxEvent.isAltDown(c)&&mxEvent.isShiftDown(c)){var e=O[c.keyCode];null!=e&&(e.funct(c),mxEvent.consume(c))}else 37==c.keyCode?(u(t.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(c)):38==c.keyCode?(u(t.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(c)):39==c.keyCode?(u(t.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(c)):40==c.keyCode&&(u(t.getSelectionCell(),mxConstants.DIRECTION_SOUTH),
-mxEvent.consume(c))}}catch(ga){v.handleError(ga)}mxEvent.isConsumed(c)||B.apply(this,arguments)};var G=t.connectVertex;t.connectVertex=function(c,e,f,l,m,n,q){var u=t.getIncomingTreeEdges(c);if(b(c)){var v=d(c),x=v==mxConstants.DIRECTION_EAST||v==mxConstants.DIRECTION_WEST,B=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return v==e||0==u.length?p(c,e):x==B?g(c):k(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return G.apply(this,arguments)};t.getSubtree=function(d){var e=
+mxEvent.consume(c))}}catch(fa){v.handleError(fa)}mxEvent.isConsumed(c)||B.apply(this,arguments)};var E=t.connectVertex;t.connectVertex=function(c,e,f,l,m,n,q){var u=t.getIncomingTreeEdges(c);if(b(c)){var v=d(c),x=v==mxConstants.DIRECTION_EAST||v==mxConstants.DIRECTION_WEST,B=e==mxConstants.DIRECTION_EAST||e==mxConstants.DIRECTION_WEST;return v==e||0==u.length?p(c,e):x==B?g(c):k(c,e!=mxConstants.DIRECTION_NORTH&&e!=mxConstants.DIRECTION_WEST)}return E.apply(this,arguments)};t.getSubtree=function(d){var e=
[d];!c(d)&&!b(d)||q(d)||t.traverse(d,!0,function(b,c){var d=null!=c&&t.isTreeEdge(c);d&&0>mxUtils.indexOf(e,c)&&e.push(c);(null==c||d)&&0>mxUtils.indexOf(e,b)&&e.push(b);return null==c||d});return e};var H=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){H.apply(this,arguments);(c(this.state.cell)||b(this.state.cell))&&!q(this.state.cell)&&0<this.graph.getOutgoingTreeEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(Editor.moveImage),this.moveHandle.setAttribute("title",
"Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="24px",this.moveHandle.style.height="24px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(b){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(b),mxEvent.getClientY(b),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(b);
this.graph.isMouseDown=!0;v.hoverIcons.reset();mxEvent.consume(b)})))};var L=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){L.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 N=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(b){N.apply(this,
@@ -4003,7 +4003,7 @@ this.addMenuItems(b,["copyAsImage"],null,d)};EditorUi.prototype.toggleFormatPane
this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(),this.menus.findWindow=null);null!=this.menus.findReplaceWindow&&(this.menus.findReplaceWindow.window.setVisible(!1),this.menus.findReplaceWindow.window.destroy(),this.menus.findReplaceWindow=null);y.apply(this,arguments)};var I=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(b){I.apply(this,arguments);if(b){var c=window.innerWidth||
document.documentElement.clientWidth||document.body.clientWidth;1E3<=c&&null!=this.sidebarWindow&&"1"!=urlParams.sketch&&this.sidebarWindow.window.setVisible(!0);null!=this.formatWindow&&(1E3<=c||"1"==urlParams.sketch)&&this.formatWindow.window.setVisible(!0)}else null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1)};EditorUi.prototype.chromelessWindowResize=function(){};var D=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=
function(b){b=D.apply(this,arguments);var c=this.editorUi,d=c.editor.graph;if(d.isEnabled()&&"1"==urlParams.sketch){var e=this.createOption(mxResources.get("sketch"),function(){return Editor.sketchMode},function(b,e){c.setSketchMode(!Editor.sketchMode);null!=e&&mxEvent.isShiftDown(e)||d.updateCellStyles({sketch:b?"1":null},d.getVerticesAndEdges())},{install:function(b){this.listener=function(){b(Editor.sketchMode)};c.addListener("sketchModeChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});
-b.appendChild(e)}return b};var F=Menus.prototype.init;Menus.prototype.init=function(){F.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.get("tags").label=mxResources.get("tags")+"...";c.actions.get("forkme").visible="1"!=
+b.appendChild(e)}return b};var G=Menus.prototype.init;Menus.prototype.init=function(){G.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.get("tags").label=mxResources.get("tags")+"...";c.actions.get("forkme").visible="1"!=
urlParams.sketch;c.actions.get("downloadDesktop").visible="1"!=urlParams.sketch;c.actions.get("comments").label=mxResources.get("comments")+"...";var f=c.actions.put("toggleDarkMode",new Action(mxResources.get("dark"),function(b){c.setDarkMode(!Editor.darkMode)}));f.setToggleAction(!0);f.setSelectedCallback(function(){return Editor.isDarkMode()});f=c.actions.put("toggleSketchMode",new Action(mxResources.get("sketch"),function(b){c.setSketchMode(!Editor.sketchMode)}));f.setToggleAction(!0);f.setSelectedCallback(function(){return Editor.sketchMode});
f=c.actions.put("togglePagesVisible",new Action(mxResources.get("pages"),function(b){c.setPagesVisible(!Editor.pagesVisible)}));f.setToggleAction(!0);f.setSelectedCallback(function(){return Editor.pagesVisible});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 b=new ParseDialog(c,"Insert from Text");c.showDialog(b.container,620,420,
!0,!1);b.init()}));c.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var b=new ParseDialog(c,"Insert from Text","formatSql");c.showDialog(b.container,620,420,!0,!1);b.init()}));c.actions.put("toggleShapes",new Action(mxResources.get("1"==urlParams.sketch?"moreShapes":"shapes")+"...",function(){e(c)},null,null,Editor.ctrlKey+"+Shift+K"));c.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){b(c)})).shortcut=c.actions.get("formatPanel").shortcut;
@@ -4022,16 +4022,16 @@ d);"1"!=urlParams.embedInline&&"1"!=urlParams.sketch&&"1"!=urlParams.embed&&(isL
d),b.addSeparator(d),c.mode!=App.MODE_ATLAS&&this.addMenuItems(b,["fullscreen"],d));("1"!=urlParams.embedInline&&Editor.isDarkMode()||!mxClient.IS_IE&&!mxClient.IS_IE11)&&this.addMenuItems(b,["toggleDarkMode"],d);b.addSeparator(d)})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(b,d){c.menus.addMenuItems(b,"importText plantUml mermaid - formatSql importCsv - createShape editDiagram".split(" "),d)})));mxUtils.bind(this,function(){var b=this.get("insert"),d=b.funct;b.funct=function(b,
e){"1"==urlParams.sketch?(c.insertTemplateEnabled&&!c.isOffline()&&c.menus.addMenuItems(b,["insertTemplate"],e),c.menus.addMenuItems(b,["insertImage","insertLink","-"],e),c.menus.addSubmenu("insertLayout",b,e,mxResources.get("layout")),c.menus.addSubmenu("insertAdvanced",b,e,mxResources.get("advanced"))):(d.apply(this,arguments),c.menus.addSubmenu("table",b,e))}})();var n="horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "),p=function(b,d,e,f){b.addItem(e,
null,mxUtils.bind(this,function(){var b=new CreateGraphDialog(c,e,f);c.showDialog(b.container,620,420,!0,!1);b.init()}),d)};this.put("insertLayout",new Menu(mxUtils.bind(this,function(b,c){for(var d=0;d<n.length;d++)"-"==n[d]?b.addSeparator(c):p(b,c,mxResources.get(n[d])+"...",n[d])})))};EditorUi.prototype.installFormatToolbar=function(b){var c=this.editor.graph,d=document.createElement("div");d.style.cssText="position:absolute;top:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;white-space:nowrap;background-color:#fff;transform:translate(-50%, 0);left:50%;";
-c.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(e,f){0<c.getSelectionCount()?(b.appendChild(d),d.innerHTML="Selected: "+c.getSelectionCount()):null!=d.parentNode&&d.parentNode.removeChild(d)}))};var E=!1;EditorUi.prototype.initFormatWindow=function(){if(!E&&null!=this.formatWindow){E=!0;this.formatWindow.window.setClosable(!1);var b=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){b.apply(this,arguments);this.minimized?(this.div.style.width=
+c.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(e,f){0<c.getSelectionCount()?(b.appendChild(d),d.innerHTML="Selected: "+c.getSelectionCount()):null!=d.parentNode&&d.parentNode.removeChild(d)}))};var F=!1;EditorUi.prototype.initFormatWindow=function(){if(!F&&null!=this.formatWindow){F=!0;this.formatWindow.window.setClosable(!1);var b=this.formatWindow.window.toggleMinimized;this.formatWindow.window.toggleMinimized=function(){b.apply(this,arguments);this.minimized?(this.div.style.width=
"90px",this.table.style.width="90px",this.div.style.left=parseInt(this.div.style.left)+150+"px"):(this.div.style.width="240px",this.table.style.width="240px",this.div.style.left=Math.max(0,parseInt(this.div.style.left)-150)+"px");this.fit()};mxEvent.addListener(this.formatWindow.window.title,"dblclick",mxUtils.bind(this,function(b){mxEvent.getSource(b)==this.formatWindow.window.title&&this.formatWindow.window.toggleMinimized()}))}};var O=EditorUi.prototype.init;EditorUi.prototype.init=function(){function c(b,
c,d){var e=m.menus.get(b),f=t.addMenu(mxResources.get(b),mxUtils.bind(this,function(){e.funct.apply(this,arguments)}),q);f.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";f.style.display="inline-block";f.style.boxSizing="border-box";f.style.top="6px";f.style.marginRight="6px";f.style.height="30px";f.style.paddingTop="6px";f.style.paddingBottom="6px";f.style.cursor="pointer";f.setAttribute("title",mxResources.get(b));m.menus.menuCreated(e,f,"geMenuItem");null!=d?(f.style.backgroundImage=
"url("+d+")",f.style.backgroundPosition="center center",f.style.backgroundRepeat="no-repeat",f.style.backgroundSize="24px 24px",f.style.width="34px",f.innerHTML=""):c||(f.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")",f.style.backgroundPosition="right 6px center",f.style.backgroundRepeat="no-repeat",f.style.paddingRight="22px");return f}function d(b,c,d,e,f,g){var k=document.createElement("a");k.className="1"==urlParams.sketch?"geToolbarButton":"geMenuItem";k.style.display="inline-block";
k.style.boxSizing="border-box";k.style.height="30px";k.style.padding="6px";k.style.position="relative";k.style.verticalAlign="top";k.style.top="0px";"1"==urlParams.sketch&&(k.style.borderStyle="none",k.style.boxShadow="none",k.style.padding="6px",k.style.margin="0px");null!=m.statusContainer?p.insertBefore(k,m.statusContainer):p.appendChild(k);null!=g?(k.style.backgroundImage="url("+g+")",k.style.backgroundPosition="center center",k.style.backgroundRepeat="no-repeat",k.style.backgroundSize="24px 24px",
k.style.width="34px"):mxUtils.write(k,b);mxEvent.addListener(k,mxClient.IS_POINTER?"pointerdown":"mousedown",mxUtils.bind(this,function(b){b.preventDefault()}));mxEvent.addListener(k,"click",function(b){"disabled"!=k.getAttribute("disabled")&&c(b);mxEvent.consume(b)});null==d&&(k.style.marginRight="4px");null!=e&&k.setAttribute("title",e);null!=f&&(b=function(){f.isEnabled()?(k.removeAttribute("disabled"),k.style.cursor="pointer"):(k.setAttribute("disabled","disabled"),k.style.cursor="default")},
f.addListener("stateChanged",b),n.addListener("enabledChanged",b),b());return k}function g(b,c,d){d=document.createElement("div");d.className="geMenuItem";d.style.display="inline-block";d.style.verticalAlign="top";d.style.marginRight="6px";d.style.padding="0 4px 0 4px";d.style.height="30px";d.style.position="relative";d.style.top="0px";"1"==urlParams.sketch&&(d.style.boxShadow="none");for(var e=0;e<b.length;e++)null!=b[e]&&("1"==urlParams.sketch&&(b[e].style.padding="10px 8px",b[e].style.width="30px"),
-b[e].style.margin="0px",b[e].style.boxShadow="none",d.appendChild(b[e]));null!=c&&mxUtils.setOpacity(d,c);null!=m.statusContainer&&"1"!=urlParams.sketch?p.insertBefore(d,m.statusContainer):p.appendChild(d);return d}function k(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(I.style.left=58>E.offsetTop-E.offsetHeight/2?"70px":"10px");else{for(var b=p.firstChild;null!=b;){var e=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=e}q=p.firstChild;f=window.innerWidth||
+b[e].style.margin="0px",b[e].style.boxShadow="none",d.appendChild(b[e]));null!=c&&mxUtils.setOpacity(d,c);null!=m.statusContainer&&"1"!=urlParams.sketch?p.insertBefore(d,m.statusContainer):p.appendChild(d);return d}function k(){if("1"==urlParams.sketch)"1"!=urlParams.embedInline&&(I.style.left=58>F.offsetTop-F.offsetHeight/2?"70px":"10px");else{for(var b=p.firstChild;null!=b;){var e=b.nextSibling;"geMenuItem"!=b.className&&"geItem"!=b.className||b.parentNode.removeChild(b);b=e}q=p.firstChild;f=window.innerWidth||
document.documentElement.clientWidth||document.body.clientWidth;var b=1E3>f||"1"==urlParams.sketch,k=null;b||(k=c("diagram"));e=b?c("diagram",null,Editor.drawLogoImage):null;null!=e&&(k=e);g([k,d(mxResources.get("shapes"),m.actions.get("toggleShapes").funct,null,mxResources.get("shapes"),m.actions.get("image"),b?Editor.shapesImage:null),d(mxResources.get("format"),m.actions.get("toggleFormat").funct,null,mxResources.get("format")+" ("+m.actions.get("formatPanel").shortcut+")",m.actions.get("image"),
-b?Editor.formatImage:null)],b?60:null);e=c("insert",!0,b?F:null);g([e,d(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=f&&(g([Z,la],60),520<=f&&g([Fa,640<=f?d("",ma.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",ma,Editor.zoomInImage):null,640<=f?d("",ra.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",ra,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
+b?Editor.formatImage:null)],b?60:null);e=c("insert",!0,b?G:null);g([e,d(mxResources.get("delete"),m.actions.get("delete").funct,null,mxResources.get("delete"),m.actions.get("delete"),b?Editor.trashImage:null)],b?60:null);411<=f&&(g([Z,ka],60),520<=f&&g([Fa,640<=f?d("",la.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +)",la,Editor.zoomInImage):null,640<=f?d("",qa.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)",qa,Editor.zoomOutImage):null],60))}null!=k&&(mxEvent.disableContextMenu(k),
mxEvent.addGestureListeners(k,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&m.appIconClicked(b)}),null,null));e=m.menus.get("language");null!=e&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f&&"1"!=urlParams.sketch?(null==wa&&(e=t.addMenu("",e.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),wa=e),m.buttonContainer.style.paddingRight="34px"):(m.buttonContainer.style.paddingRight="4px",null!=wa&&(wa.parentNode.removeChild(wa),wa=null))}O.apply(this,arguments);"1"!=urlParams.embedInline&&
this.doSetDarkMode(null!=urlParams.dark?1==urlParams.dark&&!mxClient.IS_IE&&!mxClient.IS_IE11:null!=mxSettings.settings.darkMode?mxSettings.settings.darkMode:window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches);var l=document.createElement("div");l.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";l.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(l);"1"==urlParams.sketch&&
@@ -4042,44 +4042,43 @@ p);m.statusContainer=m.createStatusContainer();m.statusContainer.style.position=
if(null!=b&&null!=b.getTitle()){var c=b.getMode();"google"==c?c="googleDrive":"github"==c?c="gitHub":"gitlab"==c?c="gitLab":"onedrive"==c&&(c="oneDrive");c=mxResources.get(c);p.setAttribute("title",b.getTitle()+(null!=c?" ("+c+")":""))}else p.removeAttribute("title")};m.setStatusText(m.editor.getStatus());p.appendChild(m.statusContainer);m.buttonContainer=document.createElement("div");m.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";
p.appendChild(m.buttonContainer);m.menubarContainer=m.buttonContainer;m.tabContainer=document.createElement("div");m.tabContainer.className="geTabContainer";m.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;margin-bottom:-2px;visibility:hidden;";var l=m.diagramContainer.parentNode,x=document.createElement("div");x.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";m.diagramContainer.style.top="1"==urlParams.sketch?
"0px":"47px";if("1"==urlParams.winCtrls&&"1"==urlParams.sketch){x.style.top="20px";m.titlebar=document.createElement("div");m.titlebar.style.cssText="position:absolute;top:0px;left:0px;right:0px;height:20px;overflow:hidden;box-shadow: 0px 0px 2px #c0c0c0;";var y=document.createElement("div");y.style.cssText="max-width: calc(100% - 100px);text-overflow: ellipsis;user-select:none;height:20px;margin: 2px 10px;font-size: 12px;white-space: nowrap;overflow: hidden;";m.titlebar.appendChild(y);l.appendChild(m.titlebar)}var z=
-m.menus.get("viewZoom"),F="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,D="1"==urlParams.sketch?document.createElement("div"):null,E="1"==urlParams.sketch?document.createElement("div"):null,I="1"==urlParams.sketch?document.createElement("div"):null,y=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();n.refresh();n.view.validateBackground()});m.addListener("darkModeChanged",y);m.addListener("sketchModeChanged",y);var na=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)I.style.left=
-"10px",I.style.top="10px",E.style.left="10px",E.style.top="60px",D.style.top="10px",D.style.right="12px",D.style.left="",m.diagramContainer.setAttribute("data-bounds",m.diagramContainer.style.top+" "+m.diagramContainer.style.left+" "+m.diagramContainer.style.width+" "+m.diagramContainer.style.height),m.diagramContainer.style.top="0px",m.diagramContainer.style.left="0px",m.diagramContainer.style.bottom="0px",m.diagramContainer.style.right="0px",m.diagramContainer.style.width="",m.diagramContainer.style.height=
+m.menus.get("viewZoom"),G="1"!=urlParams.sketch?Editor.plusImage:Editor.shapesImage,D="1"==urlParams.sketch?document.createElement("div"):null,F="1"==urlParams.sketch?document.createElement("div"):null,I="1"==urlParams.sketch?document.createElement("div"):null,y=mxUtils.bind(this,function(){null!=this.sidebar&&this.sidebar.refresh();n.refresh();n.view.validateBackground()});m.addListener("darkModeChanged",y);m.addListener("sketchModeChanged",y);var ma=mxUtils.bind(this,function(){if(Editor.inlineFullscreen)I.style.left=
+"10px",I.style.top="10px",F.style.left="10px",F.style.top="60px",D.style.top="10px",D.style.right="12px",D.style.left="",m.diagramContainer.setAttribute("data-bounds",m.diagramContainer.style.top+" "+m.diagramContainer.style.left+" "+m.diagramContainer.style.width+" "+m.diagramContainer.style.height),m.diagramContainer.style.top="0px",m.diagramContainer.style.left="0px",m.diagramContainer.style.bottom="0px",m.diagramContainer.style.right="0px",m.diagramContainer.style.width="",m.diagramContainer.style.height=
"";else{var b=m.diagramContainer.getAttribute("data-bounds");if(null!=b){m.diagramContainer.style.background="transparent";m.diagramContainer.removeAttribute("data-bounds");var c=n.getGraphBounds(),b=b.split(" ");m.diagramContainer.style.top=b[0];m.diagramContainer.style.left=b[1];m.diagramContainer.style.width=c.width+50+"px";m.diagramContainer.style.height=c.height+46+"px";m.diagramContainer.style.bottom="";m.diagramContainer.style.right="";(window.opener||window.parent).postMessage(JSON.stringify({event:"resize",
-rect:m.diagramContainer.getBoundingClientRect()}),"*");m.refresh()}I.style.left=m.diagramContainer.offsetLeft+"px";I.style.top=m.diagramContainer.offsetTop-I.offsetHeight-4+"px";E.style.display="";E.style.left=m.diagramContainer.offsetLeft-E.offsetWidth-4+"px";E.style.top=m.diagramContainer.offsetTop+"px";D.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-D.offsetWidth+"px";D.style.top=I.style.top;D.style.right="";m.bottomResizer.style.left=m.diagramContainer.offsetLeft+(m.diagramContainer.offsetWidth-
+rect:m.diagramContainer.getBoundingClientRect()}),"*");m.refresh()}I.style.left=m.diagramContainer.offsetLeft+"px";I.style.top=m.diagramContainer.offsetTop-I.offsetHeight-4+"px";F.style.display="";F.style.left=m.diagramContainer.offsetLeft-F.offsetWidth-4+"px";F.style.top=m.diagramContainer.offsetTop+"px";D.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-D.offsetWidth+"px";D.style.top=I.style.top;D.style.right="";m.bottomResizer.style.left=m.diagramContainer.offsetLeft+(m.diagramContainer.offsetWidth-
m.bottomResizer.offsetWidth)/2+"px";m.bottomResizer.style.top=m.diagramContainer.offsetTop+m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight/2-1+"px";m.rightResizer.style.left=m.diagramContainer.offsetLeft+m.diagramContainer.offsetWidth-m.rightResizer.offsetWidth/2-1+"px";m.rightResizer.style.top=m.diagramContainer.offsetTop+(m.diagramContainer.offsetHeight-m.bottomResizer.offsetHeight)/2+"px"}m.bottomResizer.style.visibility=Editor.inlineFullscreen?"hidden":"";m.rightResizer.style.visibility=
-m.bottomResizer.style.visibility;p.style.display="none";I.style.visibility="";D.style.visibility=""}),qa=mxUtils.bind(this,function(){ya.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";na()}),y=mxUtils.bind(this,function(){qa();b(m,!0);m.initFormatWindow();var c=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(c.x+
-c.width+4,c.y)});m.addListener("inlineFullscreenChanged",qa);m.addListener("editInlineStart",y);"1"==urlParams.embedInline&&m.addListener("darkModeChanged",y);m.addListener("editInlineStop",mxUtils.bind(this,function(b){m.diagramContainer.style.width="10px";m.diagramContainer.style.height="10px";m.diagramContainer.style.border="";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";I.style.visibility="hidden";D.style.visibility="hidden";E.style.display="none"}));if(null!=
-m.hoverIcons){var pa=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||pa.apply(this,arguments)}}if(null!=n.freehand){var ha=n.freehand.createStyle;n.freehand.createStyle=function(b){return ha.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){E.className="geToolbarContainer";D.className="geToolbarContainer";I.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=E;var sa=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
-"inline-block"});mxEvent.addListener(p,"mouseleave",function(){sa||(m.statusContainer.style.display="none")});var Y=mxUtils.bind(this,function(b){null!=m.notificationBtn&&(null!=b?m.notificationBtn.setAttribute("title",b):m.notificationBtn.removeAttribute("title"))});"1"!=urlParams.embed?(p.style.visibility=14>p.clientWidth?"hidden":"",m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus());if(0==m.statusContainer.children.length||1==m.statusContainer.children.length&&
+m.bottomResizer.style.visibility;p.style.display="none";I.style.visibility="";D.style.visibility=""}),pa=mxUtils.bind(this,function(){ya.style.backgroundImage="url("+(Editor.inlineFullscreen?Editor.fullscreenExitImage:Editor.fullscreenImage)+")";this.diagramContainer.style.background=Editor.inlineFullscreen?Editor.isDarkMode()?Editor.darkColor:"#ffffff":"transparent";ma()}),y=mxUtils.bind(this,function(){pa();b(m,!0);m.initFormatWindow();var c=this.diagramContainer.getBoundingClientRect();this.formatWindow.window.setLocation(c.x+
+c.width+4,c.y)});m.addListener("inlineFullscreenChanged",pa);m.addListener("editInlineStart",y);"1"==urlParams.embedInline&&m.addListener("darkModeChanged",y);m.addListener("editInlineStop",mxUtils.bind(this,function(b){m.diagramContainer.style.width="10px";m.diagramContainer.style.height="10px";m.diagramContainer.style.border="";m.bottomResizer.style.visibility="hidden";m.rightResizer.style.visibility="hidden";I.style.visibility="hidden";D.style.visibility="hidden";F.style.display="none"}));if(null!=
+m.hoverIcons){var oa=m.hoverIcons.update;m.hoverIcons.update=function(){n.freehand.isDrawing()||oa.apply(this,arguments)}}if(null!=n.freehand){var ga=n.freehand.createStyle;n.freehand.createStyle=function(b){return ga.apply(this,arguments)+"sketch=0;"}}if("1"==urlParams.sketch){F.className="geToolbarContainer";D.className="geToolbarContainer";I.className="geToolbarContainer";p.className="geToolbarContainer";m.picker=F;var ra=!1;mxEvent.addListener(p,"mouseenter",function(){m.statusContainer.style.display=
+"inline-block"});mxEvent.addListener(p,"mouseleave",function(){ra||(m.statusContainer.style.display="none")});var Y=mxUtils.bind(this,function(b){null!=m.notificationBtn&&(null!=b?m.notificationBtn.setAttribute("title",b):m.notificationBtn.removeAttribute("title"))});"1"!=urlParams.embed?(p.style.visibility=14>p.clientWidth?"hidden":"",m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus());if(0==m.statusContainer.children.length||1==m.statusContainer.children.length&&
"function"===typeof m.statusContainer.firstChild.getAttribute&&null==m.statusContainer.firstChild.getAttribute("class")){var b=null!=m.statusContainer.firstChild&&"function"===typeof m.statusContainer.firstChild.getAttribute?m.statusContainer.firstChild.getAttribute("title"):m.editor.getStatus();Y(b);var c=m.getCurrentFile(),c=null!=c?c.savingStatusKey:DrawioFile.prototype.savingStatusKey;b==mxResources.get(c)+"..."?(m.statusContainer.innerHTML='<img title="'+mxUtils.htmlEntities(mxResources.get(c))+
-'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",sa=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",sa=!1)}else m.statusContainer.style.display="inline-block",Y(null),sa=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));R=c("diagram",null,Editor.menuImage);R.style.boxShadow="none";R.style.padding="6px";R.style.margin=
-"0px";I.appendChild(R);mxEvent.disableContextMenu(R);mxEvent.addGestureListeners(R,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(f-240,280)+"px";m.statusContainer.style.display=
-"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var Q=document.createElement("a");Q.style.padding="0px";Q.style.boxShadow="none";Q.className="geMenuItem";Q.style.display="inline-block";Q.style.width="40px";Q.style.height="12px";Q.style.marginBottom="-2px";Q.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";Q.style.backgroundPosition="top center";
-Q.style.backgroundRepeat="no-repeat";Q.setAttribute("title","Minimize");var ta=!1,T=mxUtils.bind(this,function(){E.innerHTML="";if(!ta){var b=function(b,c,f){b=d("",b.funct,null,c,b,f);b.style.width="40px";b.style.opacity="0.7";return e(b,null,"pointer")},e=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";E.appendChild(b);mxUtils.br(E);return b};e(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
+'..."src="'+Editor.tailSpin+'">',m.statusContainer.style.display="inline-block",ra=!0):6<m.buttonContainer.clientWidth&&(m.statusContainer.style.display="none",ra=!1)}else m.statusContainer.style.display="inline-block",Y(null),ra=!0;p.style.visibility=12<p.clientWidth?"":"hidden"}))):m.editor.addListener("statusChanged",mxUtils.bind(this,function(){p.style.visibility=16<p.clientWidth?"":"hidden"}));Q=c("diagram",null,Editor.menuImage);Q.style.boxShadow="none";Q.style.padding="6px";Q.style.margin=
+"0px";I.appendChild(Q);mxEvent.disableContextMenu(Q);mxEvent.addGestureListeners(Q,mxUtils.bind(this,function(b){(mxEvent.isShiftDown(b)||mxEvent.isAltDown(b)||mxEvent.isMetaDown(b)||mxEvent.isControlDown(b)||mxEvent.isPopupTrigger(b))&&this.appIconClicked(b)}),null,null);m.statusContainer.style.position="";m.statusContainer.style.display="none";m.statusContainer.style.margin="0px";m.statusContainer.style.padding="6px 0px";m.statusContainer.style.maxWidth=Math.min(f-240,280)+"px";m.statusContainer.style.display=
+"inline-block";m.statusContainer.style.textOverflow="ellipsis";m.buttonContainer.style.position="";m.buttonContainer.style.paddingRight="0px";m.buttonContainer.style.display="inline-block";var P=document.createElement("a");P.style.padding="0px";P.style.boxShadow="none";P.className="geMenuItem";P.style.display="inline-block";P.style.width="40px";P.style.height="12px";P.style.marginBottom="-2px";P.style.backgroundImage="url("+mxWindow.prototype.normalizeImage+")";P.style.backgroundPosition="top center";
+P.style.backgroundRepeat="no-repeat";P.setAttribute("title","Minimize");var sa=!1,T=mxUtils.bind(this,function(){F.innerHTML="";if(!sa){var b=function(b,c,f){b=d("",b.funct,null,c,b,f);b.style.width="40px";b.style.opacity="0.7";return e(b,null,"pointer")},e=function(b,c,d){null!=c&&b.setAttribute("title",c);b.style.cursor=null!=d?d:"default";b.style.margin="2px 0px";F.appendChild(b);mxUtils.br(F);return b};e(m.sidebar.createVertexTemplate("text;strokeColor=none;fillColor=none;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;",
60,30,"Text",mxResources.get("text"),!0,!1,null,!0,!0),mxResources.get("text")+" ("+Editor.ctrlKey+"+Shift+X)");e(m.sidebar.createVertexTemplate("shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontColor=#000000;darkOpacity=0.05;fillColor=#FFF9B2;strokeColor=none;fillStyle=solid;direction=west;gradientDirection=north;gradientColor=#FFF2A1;shadow=1;size=20;pointerEvents=1;",140,160,"",mxResources.get("note"),!0,!1,null,!0),mxResources.get("note"));e(m.sidebar.createVertexTemplate("rounded=0;whiteSpace=wrap;html=1;",
160,80,"",mxResources.get("rectangle"),!0,!1,null,!0),mxResources.get("rectangle")+" ("+Editor.ctrlKey+"+K)");e(m.sidebar.createVertexTemplate("ellipse;whiteSpace=wrap;html=1;",160,100,"",mxResources.get("ellipse"),!0,!1,null,!0),mxResources.get("ellipse"));(function(){var b=new mxCell("",new mxGeometry(0,0,n.defaultEdgeLength,0),"edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;");b.geometry.setTerminalPoint(new mxPoint(0,0),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,0),!1);
b.geometry.points=[];b.geometry.relative=!0;b.edge=!0;e(m.sidebar.createEdgeTemplateFromCells([b],b.geometry.width,b.geometry.height,mxResources.get("line"),!0,null,!0,!1),mxResources.get("line"));b=b.clone();b.style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;shape=flexArrow;rounded=1;startSize=8;endSize=8;";b.geometry.width=n.defaultEdgeLength+20;b.geometry.setTerminalPoint(new mxPoint(0,20),!0);b.geometry.setTerminalPoint(new mxPoint(b.geometry.width,20),!1);b=e(m.sidebar.createEdgeTemplateFromCells([b],
-b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var f=m.actions.get("toggleShapes");b(f,mxResources.get("shapes")+" ("+f.shortcut+")",F);R=c("table",null,Editor.calendarImage);R.style.boxShadow="none";R.style.opacity="0.7";R.style.padding="6px";
-R.style.margin="0px";R.style.width="37px";e(R,null,"pointer");R=c("insert",null,Editor.plusImage);R.style.boxShadow="none";R.style.opacity="0.7";R.style.padding="6px";R.style.margin="0px";R.style.width="37px";e(R,null,"pointer")}"1"!=urlParams.embedInline&&E.appendChild(Q)});mxEvent.addListener(Q,"click",mxUtils.bind(this,function(){ta?(mxUtils.setPrefixedStyle(E.style,"transform","translate(0, -50%)"),E.style.padding="8px 6px 4px",E.style.top="50%",E.style.bottom="",E.style.height="",Q.style.backgroundImage=
-"url("+mxWindow.prototype.normalizeImage+")",Q.style.width="40px",Q.style.height="12px",Q.setAttribute("title","Minimize"),ta=!1,T()):(E.innerHTML="",E.appendChild(Q),mxUtils.setPrefixedStyle(E.style,"transform","translate(0, 0)"),E.style.top="",E.style.bottom="12px",E.style.padding="0px",E.style.height="24px",Q.style.height="24px",Q.style.backgroundImage="url("+Editor.plusImage+")",Q.setAttribute("title",mxResources.get("insert")),Q.style.width="24px",ta=!0)}));T();m.addListener("darkModeChanged",
-T);m.addListener("sketchModeChanged",T)}else m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=z){var ja=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},ma=m.actions.get("zoomIn"),ra=m.actions.get("zoomOut"),S=m.actions.get("resetView"),y=m.actions.get("fullscreen"),oa=m.actions.get("undo"),da=m.actions.get("redo"),Z=d("",oa.funct,
-null,mxResources.get("undo")+" ("+oa.shortcut+")",oa,Editor.undoImage),la=d("",da.funct,null,mxResources.get("redo")+" ("+da.shortcut+")",da,Editor.redoImage),ya=d("",y.funct,null,mxResources.get("fullscreen"),y,Editor.fullscreenImage);if(null!=D){z=function(){aa.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};S=function(){aa.innerHTML="";null!=m.currentPage&&mxUtils.write(aa,m.currentPage.getName())};ya.parentNode.removeChild(ya);
-var za=m.actions.get("delete"),ua=d("",za.funct,null,mxResources.get("delete"),za,Editor.trashImage);ua.style.opacity="0.1";I.appendChild(ua);za.addListener("stateChanged",function(){ua.style.opacity=za.enabled?"":"0.1"});var fa=function(){Z.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";la.style.display=Z.style.display;Z.style.opacity=oa.enabled?"":"0.1";la.style.opacity=da.enabled?"":"0.1"};I.appendChild(Z);I.appendChild(la);oa.addListener("stateChanged",
-fa);da.addListener("stateChanged",fa);fa();null!=urlParams.layers&&(fa=m.actions.get("layers"),fa=d("",fa.funct,null,mxResources.get("layers"),fa,Editor.layersImage),fa.style.opacity="0.4",D.appendChild(fa));null!=urlParams.tags&&(fa=m.actions.get("tags"),fa=d("",fa.funct,null,mxResources.get("tags"),fa,Editor.tagsImage),fa.style.opacity="0.4",D.appendChild(fa));var aa=this.createPageMenuTab(!1,!0);aa.style.display="none";aa.style.position="";aa.style.marginLeft="";aa.style.top="";aa.style.left="";
-aa.style.height="100%";aa.style.lineHeight="";aa.style.borderStyle="none";aa.style.padding="3px 0";aa.style.margin="0px";aa.style.background="";aa.style.border="";aa.style.boxShadow="none";aa.style.verticalAlign="top";aa.style.width="auto";aa.style.maxWidth="160px";aa.style.position="relative";aa.style.padding="6px";aa.style.textOverflow="ellipsis";aa.style.opacity="0.8";m.editor.addListener("pageSelected",S);m.editor.addListener("pageRenamed",S);m.editor.addListener("fileLoaded",S);S();null!=m.currentPage&&
-(mxUtils.write(R,m.currentPage.getName()),console.log("initial page not emptry"));D.appendChild(aa);m.addListener("fileDescriptorChanged",z);m.addListener("pagesVisibleChanged",z);z();z=d("",ra.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",ra,Editor.zoomOutImage);D.appendChild(z);var R=document.createElement("div");R.innerHTML="100%";R.setAttribute("title",mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");R.style.display="inline-block";R.style.cursor=
-"pointer";R.style.textAlign="center";R.style.whiteSpace="nowrap";R.style.paddingRight="10px";R.style.textDecoration="none";R.style.verticalAlign="top";R.style.padding="6px 0";R.style.fontSize="14px";R.style.width="40px";R.style.opacity="0.4";D.appendChild(R);mxEvent.addListener(R,"click",ja);ja=d("",ma.funct,!0,mxResources.get("zoomIn")+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",ma,Editor.zoomInImage);D.appendChild(ja);y.visible&&(D.appendChild(ya),mxEvent.addListener(document,"fullscreenchange",function(){ya.style.backgroundImage=
-"url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(y=m.actions.get("exit"),D.appendChild(d("",y.funct,null,mxResources.get("exit"),y,Editor.closeImage)));m.tabContainer.style.visibility="hidden";p.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
-I.style.cssText="position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";D.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";x.appendChild(I);x.appendChild(D);E.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
-x.appendChild(E);window.setTimeout(function(){mxUtils.setPrefixedStyle(E.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var Fa=d("",ja,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",S,Editor.zoomFitImage);p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";R=t.addMenu("100%",z.funct);R.setAttribute("title",mxResources.get("zoom")+
-" (Alt+Mousewheel)");R.style.whiteSpace="nowrap";R.style.paddingRight="10px";R.style.textDecoration="none";R.style.textDecoration="none";R.style.overflow="hidden";R.style.visibility="hidden";R.style.textAlign="center";R.style.cursor="pointer";R.style.height=parseInt(m.tabContainerHeight)-1+"px";R.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";R.style.position="absolute";R.style.display="block";R.style.fontSize="12px";R.style.width="59px";R.style.right="0px";R.style.bottom="0px";R.style.backgroundImage=
-"url("+mxWindow.prototype.minimizeImage+")";R.style.backgroundPosition="right 6px center";R.style.backgroundRepeat="no-repeat";x.appendChild(R)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML="";mxUtils.write(b,Math.round(100*m.editor.graph.view.scale)+"%")});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(R);var Ga=m.setGraphEnabled;m.setGraphEnabled=function(){Ga.apply(this,arguments);null!=this.tabContainer&&
-(R.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==D?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=f)&&"1"!=urlParams.embedInline&&b(this,!0);null==D&&x.appendChild(m.tabContainer);var wa=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();
-null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&m.actions.outlineWindow.window.fit();null!=m.actions.layersWindow&&m.actions.layersWindow.window.fit();null!=m.menus.tagsWindow&&m.menus.tagsWindow.window.fit();null!=m.menus.findWindow&&m.menus.findWindow.window.fit();null!=m.menus.findReplaceWindow&&m.menus.findReplaceWindow.window.fit()});if("1"==urlParams.embedInline){document.body.style.cursor="text";E.style.transform="";mxEvent.addGestureListeners(m.diagramContainer.parentNode,
+b.geometry.width,40,mxResources.get("arrow"),!0,null,!0,!1),mxResources.get("arrow"));b.style.borderBottom="1px solid "+(Editor.isDarkMode()?"#505050":"lightgray");b.style.paddingBottom="14px";b.style.marginBottom="14px"})();b(m.actions.get("insertFreehand"),mxResources.get("freehand"),Editor.freehandImage);var f=m.actions.get("toggleShapes");b(f,mxResources.get("shapes")+" ("+f.shortcut+")",G);Q=c("table",null,Editor.calendarImage);Q.style.boxShadow="none";Q.style.opacity="0.7";Q.style.padding="6px";
+Q.style.margin="0px";Q.style.width="37px";e(Q,null,"pointer");Q=c("insert",null,Editor.plusImage);Q.style.boxShadow="none";Q.style.opacity="0.7";Q.style.padding="6px";Q.style.margin="0px";Q.style.width="37px";e(Q,null,"pointer")}"1"!=urlParams.embedInline&&F.appendChild(P)});mxEvent.addListener(P,"click",mxUtils.bind(this,function(){sa?(mxUtils.setPrefixedStyle(F.style,"transform","translate(0, -50%)"),F.style.padding="8px 6px 4px",F.style.top="50%",F.style.bottom="",F.style.height="",P.style.backgroundImage=
+"url("+mxWindow.prototype.normalizeImage+")",P.style.width="40px",P.style.height="12px",P.setAttribute("title","Minimize"),sa=!1,T()):(F.innerHTML="",F.appendChild(P),mxUtils.setPrefixedStyle(F.style,"transform","translate(0, 0)"),F.style.top="",F.style.bottom="12px",F.style.padding="0px",F.style.height="24px",P.style.height="24px",P.style.backgroundImage="url("+Editor.plusImage+")",P.setAttribute("title",mxResources.get("insert")),P.style.width="24px",sa=!0)}));T();m.addListener("darkModeChanged",
+T);m.addListener("sketchModeChanged",T)}else m.editor.addListener("statusChanged",mxUtils.bind(this,function(){m.setStatusText(m.editor.getStatus())}));if(null!=z){var ia=function(b){n.popupMenuHandler.hideMenu();mxEvent.isAltDown(b)||mxEvent.isShiftDown(b)?m.actions.get("customZoom").funct():m.actions.get("smartFit").funct()},la=m.actions.get("zoomIn"),qa=m.actions.get("zoomOut"),S=m.actions.get("resetView"),y=m.actions.get("fullscreen"),na=m.actions.get("undo"),ca=m.actions.get("redo"),Z=d("",na.funct,
+null,mxResources.get("undo")+" ("+na.shortcut+")",na,Editor.undoImage),ka=d("",ca.funct,null,mxResources.get("redo")+" ("+ca.shortcut+")",ca,Editor.redoImage),ya=d("",y.funct,null,mxResources.get("fullscreen"),y,Editor.fullscreenImage);if(null!=D){z=function(){aa.style.display=null!=m.pages&&("0"!=urlParams.pages||1<m.pages.length||Editor.pagesVisible)?"inline-block":"none"};S=function(){aa.innerHTML="";null!=m.currentPage&&mxUtils.write(aa,m.currentPage.getName())};ya.parentNode.removeChild(ya);
+var za=m.actions.get("delete"),ta=d("",za.funct,null,mxResources.get("delete"),za,Editor.trashImage);ta.style.opacity="0.1";I.appendChild(ta);za.addListener("stateChanged",function(){ta.style.opacity=za.enabled?"":"0.1"});var ua=function(){Z.style.display=0<m.editor.undoManager.history.length||n.isEditing()?"inline-block":"none";ka.style.display=Z.style.display;Z.style.opacity=na.enabled?"":"0.1";ka.style.opacity=ca.enabled?"":"0.1"};I.appendChild(Z);I.appendChild(ka);na.addListener("stateChanged",
+ua);ca.addListener("stateChanged",ua);ua();var aa=this.createPageMenuTab(!1,!0);aa.style.display="none";aa.style.position="";aa.style.marginLeft="";aa.style.top="";aa.style.left="";aa.style.height="100%";aa.style.lineHeight="";aa.style.borderStyle="none";aa.style.padding="3px 0";aa.style.margin="0px";aa.style.background="";aa.style.border="";aa.style.boxShadow="none";aa.style.verticalAlign="top";aa.style.width="auto";aa.style.maxWidth="160px";aa.style.position="relative";aa.style.padding="6px";aa.style.textOverflow=
+"ellipsis";aa.style.opacity="0.8";m.editor.addListener("pageSelected",S);m.editor.addListener("pageRenamed",S);m.editor.addListener("fileLoaded",S);S();null!=m.currentPage&&(mxUtils.write(Q,m.currentPage.getName()),console.log("initial page not emptry"));D.appendChild(aa);m.addListener("fileDescriptorChanged",z);m.addListener("pagesVisibleChanged",z);z();z=d("",qa.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -/Alt+Mousewheel)",qa,Editor.zoomOutImage);D.appendChild(z);var Q=document.createElement("div");
+Q.innerHTML="100%";Q.setAttribute("title",mxResources.get("fitWindow")+"/"+mxResources.get("resetView")+" (Enter)");Q.style.display="inline-block";Q.style.cursor="pointer";Q.style.textAlign="center";Q.style.whiteSpace="nowrap";Q.style.paddingRight="10px";Q.style.textDecoration="none";Q.style.verticalAlign="top";Q.style.padding="6px 0";Q.style.fontSize="14px";Q.style.width="40px";Q.style.opacity="0.4";D.appendChild(Q);mxEvent.addListener(Q,"click",ia);ia=d("",la.funct,!0,mxResources.get("zoomIn")+
+" ("+Editor.ctrlKey+" +/Alt+Mousewheel)",la,Editor.zoomInImage);D.appendChild(ia);y.visible&&(D.appendChild(ya),mxEvent.addListener(document,"fullscreenchange",function(){ya.style.backgroundImage="url("+(null!=document.fullscreenElement?Editor.fullscreenExitImage:Editor.fullscreenImage)+")"}));"1"==urlParams.embedInline&&(y=m.actions.get("exit"),D.appendChild(d("",y.funct,null,mxResources.get("exit"),y,Editor.closeImage)));m.tabContainer.style.visibility="hidden";p.style.cssText="position:absolute;right:14px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px 0px 6px 6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";
+I.style.cssText="position:absolute;left:10px;top:10px;height:30px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:6px;border-bottom:1px solid lightgray;text-align:right;white-space:nowrap;overflow:hidden;user-select:none;";D.style.cssText="position:absolute;right:14px;bottom:14px;height:28px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px;white-space:nowrap;user-select:none;";x.appendChild(I);x.appendChild(D);F.style.cssText="position:absolute;left:10px;z-index:1;border-radius:4px;box-shadow:0px 0px 3px 1px #d1d1d1;padding:8px 6px 4px 6px;white-space:nowrap;transform:translate(0, -50%);top:50%;user-select:none;";
+x.appendChild(F);window.setTimeout(function(){mxUtils.setPrefixedStyle(F.style,"transition","transform .3s ease-out")},0);"1"==urlParams["format-toolbar"]&&this.installFormatToolbar(x)}else{var Fa=d("",ia,!0,mxResources.get("fit")+" ("+Editor.ctrlKey+"+H)",S,Editor.zoomFitImage);p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;text-align:left;white-space:nowrap;";this.tabContainer.style.right="70px";Q=t.addMenu("100%",z.funct);Q.setAttribute("title",mxResources.get("zoom")+
+" (Alt+Mousewheel)");Q.style.whiteSpace="nowrap";Q.style.paddingRight="10px";Q.style.textDecoration="none";Q.style.textDecoration="none";Q.style.overflow="hidden";Q.style.visibility="hidden";Q.style.textAlign="center";Q.style.cursor="pointer";Q.style.height=parseInt(m.tabContainerHeight)-1+"px";Q.style.lineHeight=parseInt(m.tabContainerHeight)+1+"px";Q.style.position="absolute";Q.style.display="block";Q.style.fontSize="12px";Q.style.width="59px";Q.style.right="0px";Q.style.bottom="0px";Q.style.backgroundImage=
+"url("+mxWindow.prototype.minimizeImage+")";Q.style.backgroundPosition="right 6px center";Q.style.backgroundRepeat="no-repeat";x.appendChild(Q)}(function(b){var c=mxUtils.bind(this,function(){b.innerHTML="";mxUtils.write(b,Math.round(100*m.editor.graph.view.scale)+"%")});m.editor.graph.view.addListener(mxEvent.EVENT_SCALE,c);m.editor.addListener("resetGraphView",c);m.editor.addListener("pageSelected",c)})(Q);var Ga=m.setGraphEnabled;m.setGraphEnabled=function(){Ga.apply(this,arguments);null!=this.tabContainer&&
+(Q.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility&&null==D?this.tabContainerHeight+"px":"0px")}}x.appendChild(p);x.appendChild(m.diagramContainer);l.appendChild(x);m.updateTabContainer();!EditorUi.windowed&&("1"==urlParams.sketch||1E3<=f)&&"1"!=urlParams.embedInline&&b(this,!0);null==D&&x.appendChild(m.tabContainer);var wa=null;k();mxEvent.addListener(window,"resize",function(){k();null!=m.sidebarWindow&&m.sidebarWindow.window.fit();
+null!=m.formatWindow&&m.formatWindow.window.fit();null!=m.actions.outlineWindow&&m.actions.outlineWindow.window.fit();null!=m.actions.layersWindow&&m.actions.layersWindow.window.fit();null!=m.menus.tagsWindow&&m.menus.tagsWindow.window.fit();null!=m.menus.findWindow&&m.menus.findWindow.window.fit();null!=m.menus.findReplaceWindow&&m.menus.findReplaceWindow.window.fit()});if("1"==urlParams.embedInline){document.body.style.cursor="text";F.style.transform="";mxEvent.addGestureListeners(m.diagramContainer.parentNode,
function(b){mxEvent.getSource(b)==m.diagramContainer.parentNode&&(m.embedExitPoint=new mxPoint(mxEvent.getClientX(b),mxEvent.getClientY(b)),m.sendEmbeddedSvgExport())});l=document.createElement("div");l.style.position="absolute";l.style.width="10px";l.style.height="10px";l.style.borderRadius="5px";l.style.border="1px solid gray";l.style.background="#ffffff";l.style.cursor="row-resize";m.diagramContainer.parentNode.appendChild(l);m.bottomResizer=l;var Aa=null,xa=null,Ba=null,Ha=null;mxEvent.addGestureListeners(l,
function(b){Ha=parseInt(m.diagramContainer.style.height);xa=mxEvent.getClientY(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});l=l.cloneNode(!1);l.style.cursor="col-resize";m.diagramContainer.parentNode.appendChild(l);m.rightResizer=l;mxEvent.addGestureListeners(l,function(b){Ba=parseInt(m.diagramContainer.style.width);Aa=mxEvent.getClientX(b);n.popupMenuHandler.hideMenu();mxEvent.consume(b)});mxEvent.addGestureListeners(document.body,null,function(b){var c=!1;null!=Aa&&(m.diagramContainer.style.width=
-Math.max(20,Ba+mxEvent.getClientX(b)-Aa)+"px",c=!0);null!=xa&&(m.diagramContainer.style.height=Math.max(20,Ha+mxEvent.getClientY(b)-xa)+"px",c=!0);c&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:m.diagramContainer.getBoundingClientRect()}),"*"),na(),m.refresh())},function(b){null==Aa&&null==xa||mxEvent.consume(b);xa=Aa=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";m.bottomResizer.style.visibility=
-"hidden";m.rightResizer.style.visibility="hidden";I.style.visibility="hidden";D.style.visibility="hidden";E.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,f,n,l,q){this.file=b;this.id=c;this.content=e;this.modifiedDate=f;this.createdDate=n;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,f,n){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,f,n){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=f;this.locale=n};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlabels=Labels\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsnapToGrid=Snap to Grid\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunmerge=Unmerge\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\nspellCheck=Spell checker\nnoChange=No Change\nlblToSvg=Convert labels to SVG\ntxtSettings=Text Settings\nLinksLost=Links will be lost\narcSize=Arc Size\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
+Math.max(20,Ba+mxEvent.getClientX(b)-Aa)+"px",c=!0);null!=xa&&(m.diagramContainer.style.height=Math.max(20,Ha+mxEvent.getClientY(b)-xa)+"px",c=!0);c&&((window.opener||window.parent).postMessage(JSON.stringify({event:"resize",fullscreen:Editor.inlineFullscreen,rect:m.diagramContainer.getBoundingClientRect()}),"*"),ma(),m.refresh())},function(b){null==Aa&&null==xa||mxEvent.consume(b);xa=Aa=null});this.diagramContainer.style.borderRadius="4px";document.body.style.backgroundColor="transparent";m.bottomResizer.style.visibility=
+"hidden";m.rightResizer.style.visibility="hidden";I.style.visibility="hidden";D.style.visibility="hidden";F.style.display="none"}"1"==urlParams.prefetchFonts&&m.editor.loadFonts()}}};(function(){var b=!1;"min"!=uiTheme||b||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),b=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||b||(this.initMinimalTheme(),b=!0)}})();DrawioComment=function(b,c,e,f,n,l,q){this.file=b;this.id=c;this.content=e;this.modifiedDate=f;this.createdDate=n;this.isResolved=l;this.user=q;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(b){null!=b&&this.replies.push(b)};DrawioComment.prototype.addReply=function(b,c,e,f,n){c()};DrawioComment.prototype.editComment=function(b,c,e){c()};DrawioComment.prototype.deleteComment=function(b,c){b()};DrawioUser=function(b,c,e,f,n){this.id=b;this.email=c;this.displayName=e;this.pictureUrl=f;this.locale=n};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\nabout=About\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbringForward=Bring Forward\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompare=Compare\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncontainer=Container\ncsv=CSV\ndark=Dark\ndiagramXmlDesc=XML File\ndiagramHtmlDesc=HTML File\ndiagramPngDesc=Editable Bitmap Image\ndiagramSvgDesc=Editable Vector Image\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\ndraftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconfiguration=Configuration\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyData=Copy Data\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndoNotShowAgain=Do not show again\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedFonts=Embed Fonts\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified.\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngetNotionChromeExtension=Get the Notion Chrome Extension\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallApp=Install App\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlabels=Labels\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseRequired=This feature requires draw.io to be licensed.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmerge=Merge\nmermaid=Mermaid\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotion=Notion\nnotSatisfiedWithImport=Not satisfied with the import?\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\nparallels=Parallels\npaste=Paste\npasteData=Paste Data\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradial=Radial\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendBackward=Send Backward\nsendMessage=Send\nsendYourFeedback=Send your feedback\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save.\nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharingAvailable=Sharing available for Google Drive and OneDrive files.\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsketch=Sketch\nsnapToGrid=Snap to Grid\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntooLargeUseDownload=Too large, use download instead.\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunmerge=Unmerge\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported.\npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\nconfNoPermErr=Sorry, you don\'t have enough permissions to view this embedded diagram from page {1}\ncopyAsImage=Copy as Image\nlucidImport=Lucidchart Import\nlucidImportInst1=Click the "Start Import" button to import all Lucidchart diagrams.\ninstallFirst=Please install {1} first\ndrawioChromeExt=draw.io Chrome Extension\nloginFirstThen=Please login to {1} first, then {2}\nerrFetchDocList=Error: Couldn\'t fetch documents list\nbuiltinPlugins=Built-in Plugins\nextPlugins=External Plugins\nbackupFound=Backup file found\nchromeOnly=This feature only works in Google Chrome\nmsgDeleted=This message has been deleted\nconfAErrFetchDrawList=Error fetching diagrams list. Some diagrams are skipped.\nconfAErrCheckDrawDiag=Cannot check diagram {1}\nconfAErrFetchPageList=Error fetching pages list\nconfADiagImportIncom={1} diagram "{2}" is imported partially and may have missing shapes\ninvalidSel=Invalid selection\ndiagNameEmptyErr=Diagram name cannot be empty\nopenDiagram=Open Diagram\nnewDiagram=New diagram\neditable=Editable\nconfAReimportStarted=Re-import {1} diagrams started...\nspaceFilter=Filter by spaces\ncurViewState=Current Viewer State\npageLayers=Page and Layers\ncustomize=Customize\nfirstPage=First Page (All Layers)\ncurEditorState=Current Editor State\nnoAnchorsFound=No anchors found\nattachment=Attachment\ncurDiagram=Current Diagram\nrecentDiags=Recent Diagrams\ncsvImport=CSV Import\nchooseFile=Choose a file...\nchoose=Choose\ngdriveFname=Google Drive filename\nwidthOfViewer=Width of the viewer (px)\nheightOfViewer=Height of the viewer (px)\nautoSetViewerSize=Automatically set the size of the viewer\nthumbnail=Thumbnail\nprevInDraw=Preview in draw.io\nonedriveFname=OneDrive filename\ndiagFname=Diagram filename\ndiagUrl=Diagram URL\nshowDiag=Show Diagram\ndiagPreview=Diagram Preview\ncsvFileUrl=CSV File URL\ngenerate=Generate\nselectDiag2Insert=Please select a diagram to insert it.\nerrShowingDiag=Unexpected error. Cannot show diagram\nnoRecentDiags=No recent diagrams found\nfetchingRecentFailed=Failed to fetch recent diagrams\nuseSrch2FindDiags=Use the search box to find draw.io diagrams\ncantReadChckPerms=Cannot read the specified diagram. Please check you have read permission on that file.\ncantFetchChckPerms=Cannot fetch diagram info. Please check you have read permission on that file.\nsearchFailed=Searching failed. Please try again later.\nplsTypeStr=Please type a search string.\nunsupportedFileChckUrl=Unsupported file. Please check the specified URL\ndiagNotFoundChckUrl=Diagram not found or cannot be accessed. Please check the specified URL\ncsvNotFoundChckUrl=CSV file not found or cannot be accessed. Please check the specified URL\ncantReadUpload=Cannot read the uploaded diagram\nselect=Select\nerrCantGetIdType=Unexpected Error: Cannot get content id or type.\nerrGAuthWinBlocked=Error: Google Authentication window blocked\nauthDrawAccess=Authorize draw.io to access {1}\nconnTimeout=The connection has timed out\nerrAuthSrvc=Error authenticating to {1}\nplsSelectFile=Please select a file\nmustBgtZ={1} must be greater than zero\ncantLoadPrev=Cannot load file preview.\nerrAccessFile=Error: Access Denied. You do not have permission to access "{1}".\nnoPrevAvail=No preview is available.\npersonalAccNotSup=Personal accounts are not supported.\nerrSavingTryLater=Error occurred during saving, please try again later.\nplsEnterFld=Please enter {1}\ninvalidDiagUrl=Invalid Diagram URL\nunsupportedVsdx=Unsupported vsdx file\nunsupportedImg=Unsupported image file\nunsupportedFormat=Unsupported file format\nplsSelectSingleFile=Please select a single file only\nattCorrupt=Attachment file "{1}" is corrupted\nloadAttFailed=Failed to load attachment "{1}"\nembedDrawDiag=Embed draw.io Diagram\naddDiagram=Add Diagram\nembedDiagram=Embed Diagram\neditOwningPg=Edit owning page\ndeepIndexing=Deep Indexing (Index diagrams that aren\'t used in any page also)\nconfADeepIndexStarted=Deep Indexing Started\nconfADeepIndexDone=Deep Indexing Done\nofficeNoDiagramsSelected=No diagrams found in the selection\nofficeNoDiagramsInDoc=No diagrams found in the document\nofficeNotSupported=This feature is not supported in this host application\nsomeImagesFailed={1} out of {2} failed due to the following errors\nimportingNoUsedDiagrams=Importing {1} Diagrams not used in pages\nimportingDrafts=Importing {1} Diagrams in drafts\nprocessingDrafts=Processing drafts\nupdatingDrafts=Updating drafts\nupdateDrafts=Update drafts\nnotifications=Notifications\ndrawioImp=draw.io Import\nconfALibsImp=Importing draw.io Libraries\nconfALibsImpFailed=Importing {1} library failed\ncontributors=Contributors\ndrawDiagrams=draw.io Diagrams\nerrFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.\nconfACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.\nconfADelBrokenEmbedDiagLnk=Removing broken embedded diagram links\nreplaceWith=Replace with\nreplaceAll=Replace All\nconfASkipDiagModified=Skipped "{1}" as it was modified after initial import\nreplFind=Replace/Find\nmatchesRepl={1} matches replaced\ndraftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.\nibm=IBM\nlinkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.\nlinkToDiagram=Link to Diagram\nchangedBy=Changed By\nlastModifiedOn=Last modified on\nsearchResults=Search Results\nshowAllTemps=Show all templates\nnotionToken=Notion Token\nselectDB=Select Database\nnoDBs=No Databases\ndiagramEdited={1} diagram "{2}" edited\nconfDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?\nconfDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?\nowner=Owner\nrepository=Repository\nbranch=Branch\nmeters=Meters\nteamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)\ncontactOwner=Contact Owner\nviewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.\nwebsite=Website\ncheck4Updates=Check for updates\nattWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...\nconfPartialPageList=We couldn\'t fetch all pages due to an error in Confluence. Continuing using {1} pages only.\nspellCheck=Spell checker\nnoChange=No Change\nlblToSvg=Convert labels to SVG\ntxtSettings=Text Settings\nLinksLost=Links will be lost\narcSize=Arc Size\neditConnectionPoints=Edit Connection Points\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="default"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="default"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="default"/><add as="fontColor" value="default"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="edgeLabel" extend="text"><add as="labelBackgroundColor" value="default"/><add as="fontSize" value="11"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="default"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="default"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="default"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add></mxStylesheet>').documentElement;
Graph.prototype.defaultThemes.darkTheme=Graph.prototype.defaultThemes["default-style2"];GraphViewer=function(b,c,e){this.init(b,c,e)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://app.diagrams.net/";GraphViewer.prototype.imageBaseUrl="https://viewer.diagrams.net/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?24:26;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!1;GraphViewer.prototype.autoCrop=!1;
GraphViewer.prototype.autoOrigin=!0;GraphViewer.prototype.center=!1;GraphViewer.prototype.forceCenter=!1;GraphViewer.prototype.allowZoomIn=!1;GraphViewer.prototype.allowZoomOut=!0;GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100;GraphViewer.prototype.responsive=!1;
GraphViewer.prototype.init=function(b,c,e){this.graphConfig=null!=e?e:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.autoCrop=null!=this.graphConfig["auto-crop"]?this.graphConfig["auto-crop"]:this.autoCrop;this.autoOrigin=null!=this.graphConfig["auto-origin"]?this.graphConfig["auto-origin"]:this.autoOrigin;this.allowZoomOut=null!=this.graphConfig["allow-zoom-out"]?this.graphConfig["allow-zoom-out"]:this.allowZoomOut;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?
@@ -4122,17 +4121,17 @@ function(){mxUtils.setOpacity(e,0);f=null;n=window.setTimeout(mxUtils.bind(this,
this.scrollLeft=d.container.scrollLeft;this.scrollTop=d.container.scrollTop},mouseMove:function(b,c){},mouseUp:function(b,c){mxEvent.isTouchEvent(c.getEvent())&&Math.abs(this.scrollLeft-d.container.scrollLeft)<k&&Math.abs(this.scrollTop-d.container.scrollTop)<k&&Math.abs(this.startX-c.getGraphX())<k&&Math.abs(this.startY-c.getGraphY())<k&&(0<parseFloat(e.style.opacity||0)?l():q(30))}})}for(var g=this.toolbarItems,p=0,m=null,u=null,v=null,t=null,z=0;z<g.length;z++){var y=g[z];if("pages"==y){t=c.ownerDocument.createElement("div");
t.style.cssText="display:inline-block;position:relative;top:5px;padding:0 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;;cursor:default;";mxUtils.setOpacity(t,70);var I=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");I.style.borderRightStyle="none";I.style.paddingLeft="0px";I.style.paddingRight="0px";e.appendChild(t);var D=b(mxUtils.bind(this,function(){this.selectPage(this.currentPage+
1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");D.style.paddingLeft="0px";D.style.paddingRight="0px";y=mxUtils.bind(this,function(){t.innerHTML="";mxUtils.write(t,this.currentPage+1+" / "+this.diagrams.length);t.style.display=1<this.diagrams.length?"inline-block":"none";I.style.display=t.style.display;D.style.display=t.style.display});this.addListener("graphChanged",y);y()}else if("zoom"==y)this.zoomEnabled&&(b(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage,
-mxResources.get("zoomOut")||"Zoom Out"),b(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),b(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==y){if(this.layersEnabled){var F=this.graph.getModel(),E=b(mxUtils.bind(this,function(b){if(null!=m)m.parentNode.removeChild(m),
+mxResources.get("zoomOut")||"Zoom Out"),b(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),b(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==y){if(this.layersEnabled){var G=this.graph.getModel(),F=b(mxUtils.bind(this,function(b){if(null!=m)m.parentNode.removeChild(m),
m=null;else{m=this.graph.createLayersDialog(mxUtils.bind(this,function(){if(this.autoCrop)this.crop();else if(this.autoOrigin){var b=this.graph.getGraphBounds(),c=this.graph.view;0>b.x||0>b.y?(this.crop(),this.graph.originalViewState=this.graph.initialViewState,this.graph.initialViewState={translate:c.translate.clone(),scale:c.scale}):null!=this.graph.originalViewState&&0<b.x/c.scale+this.graph.originalViewState.translate.x-c.translate.x&&0<b.y/c.scale+this.graph.originalViewState.translate.y-c.translate.y&&
-(c.setTranslate(this.graph.originalViewState.translate.x,this.graph.originalViewState.translate.y),this.graph.originalViewState=null,this.graph.initialViewState={translate:c.translate.clone(),scale:c.scale})}}));mxEvent.addListener(m,"mouseleave",function(){m.parentNode.removeChild(m);m=null});b=E.getBoundingClientRect();m.style.width="140px";m.style.padding="2px 0px 2px 0px";m.style.border="1px solid #d0d0d0";m.style.backgroundColor="#eee";m.style.fontFamily=Editor.defaultHtmlFont;m.style.fontSize=
-"11px";m.style.overflowY="auto";m.style.maxHeight=this.graph.container.clientHeight-this.toolbarHeight-10+"px";m.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(m,80);var c=mxUtils.getDocumentScrollOrigin(document);m.style.left=c.x+b.left-1+"px";m.style.top=c.y+b.bottom-2+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");F.addListener(mxEvent.CHANGE,function(){E.style.display=1<F.getChildCount(F.root)?"inline-block":"none"});E.style.display=1<F.getChildCount(F.root)?
+(c.setTranslate(this.graph.originalViewState.translate.x,this.graph.originalViewState.translate.y),this.graph.originalViewState=null,this.graph.initialViewState={translate:c.translate.clone(),scale:c.scale})}}));mxEvent.addListener(m,"mouseleave",function(){m.parentNode.removeChild(m);m=null});b=F.getBoundingClientRect();m.style.width="140px";m.style.padding="2px 0px 2px 0px";m.style.border="1px solid #d0d0d0";m.style.backgroundColor="#eee";m.style.fontFamily=Editor.defaultHtmlFont;m.style.fontSize=
+"11px";m.style.overflowY="auto";m.style.maxHeight=this.graph.container.clientHeight-this.toolbarHeight-10+"px";m.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(m,80);var c=mxUtils.getDocumentScrollOrigin(document);m.style.left=c.x+b.left-1+"px";m.style.top=c.y+b.bottom-2+"px";document.body.appendChild(m)}}),Editor.layersImage,mxResources.get("layers")||"Layers");G.addListener(mxEvent.CHANGE,function(){F.style.display=1<G.getChildCount(G.root)?"inline-block":"none"});F.style.display=1<G.getChildCount(G.root)?
"inline-block":"none"}}else if("tags"==y){if(this.tagsEnabled){var O=b(mxUtils.bind(this,function(b){null==u&&(u=this.graph.createTagsDialog(mxUtils.bind(this,function(){return!0})),u.div.getElementsByTagName("div")[0].style.position="",u.div.style.maxHeight="160px",u.div.style.maxWidth="120px",u.div.style.padding="2px",u.div.style.overflow="auto",u.div.style.height="auto",u.div.style.position="fixed",u.div.style.fontFamily=Editor.defaultHtmlFont,u.div.style.fontSize="11px",u.div.style.backgroundColor=
"#eee",u.div.style.color="#000",u.div.style.border="1px solid #d0d0d0",u.div.style.zIndex=this.toolbarZIndex+1,mxUtils.setOpacity(u.div,80));if(null!=v)v.parentNode.removeChild(v),v=null;else{v=u.div;mxEvent.addListener(v,"mouseleave",function(){v.parentNode.removeChild(v);v=null});b=O.getBoundingClientRect();var c=mxUtils.getDocumentScrollOrigin(document);v.style.left=c.x+b.left-1+"px";v.style.top=c.y+b.bottom-2+"px";document.body.appendChild(v);u.refresh()}}),Editor.tagsImage,mxResources.get("tags")||
-"Tags");F.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){O.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}));O.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==y?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&(y=this.graphConfig["toolbar-buttons"][y],null!=y&&(y.elem=b(null==y.enabled||y.enabled?
+"Tags");G.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){O.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}));O.style.display=0<this.graph.getAllTags().length?"inline-block":"none"}}else"lightbox"==y?this.lightboxEnabled&&b(mxUtils.bind(this,function(){this.showLightbox()}),Editor.fullscreenImage,mxResources.get("fullscreen")||"Fullscreen"):null!=this.graphConfig["toolbar-buttons"]&&(y=this.graphConfig["toolbar-buttons"][y],null!=y&&(y.elem=b(null==y.enabled||y.enabled?
y.handler:function(){},y.image,y.title,y.enabled)))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*p);null!=this.graphConfig.title&&(g=c.ownerDocument.createElement("div"),g.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;",g.setAttribute("title",this.graphConfig.title),mxUtils.write(g,this.graphConfig.title),mxUtils.setOpacity(g,70),e.appendChild(g),this.filename=
-g);this.minToolbarWidth=34*p;var B=c.style.border,G=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,c.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var b=c.getBoundingClientRect(),d=mxUtils.getScrollOrigin(document.body),d="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-d.x,top:-d.y},b={left:b.left-d.left,top:b.top-d.top,bottom:b.bottom-
+g);this.minToolbarWidth=34*p;var B=c.style.border,E=mxUtils.bind(this,function(){e.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,c.offsetWidth)+"px";e.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var b=c.getBoundingClientRect(),d=mxUtils.getScrollOrigin(document.body),d="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-d.x,top:-d.y},b={left:b.left-d.left,top:b.top-d.top,bottom:b.bottom-
d.top,right:b.right-d.left};e.style.left=b.left+"px";"bottom"==this.graphConfig["toolbar-position"]?e.style.top=b.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(e.style.marginTop=-this.toolbarHeight+"px",e.style.top=b.top+1+"px"):e.style.top=b.top+"px";"1px solid transparent"==B&&(c.style.border="1px solid #d0d0d0");document.body.appendChild(e);var f=mxUtils.bind(this,function(){null!=e.parentNode&&e.parentNode.removeChild(e);null!=m&&(m.parentNode.removeChild(m),m=null);c.style.border=
-B});mxEvent.addListener(document,"mousemove",function(b){for(b=mxEvent.getSource(b);null!=b;){if(b==c||b==e||b==m)return;b=b.parentNode}f()});mxEvent.addListener(document.body,"mouseleave",function(b){f()})}else e.style.top=-this.toolbarHeight+"px",c.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(c,"mouseenter",G):G();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=e.parentNode&&G()})).observe(c)};
+B});mxEvent.addListener(document,"mousemove",function(b){for(b=mxEvent.getSource(b);null!=b;){if(b==c||b==e||b==m)return;b=b.parentNode}f()});mxEvent.addListener(document.body,"mouseleave",function(b){f()})}else e.style.top=-this.toolbarHeight+"px",c.appendChild(e)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(c,"mouseenter",E):E();this.responsive&&"undefined"!==typeof ResizeObserver&&(new ResizeObserver(function(){null!=e.parentNode&&E()})).observe(c)};
GraphViewer.prototype.disableButton=function(b){var c=this.graphConfig["toolbar-buttons"]?this.graphConfig["toolbar-buttons"][b]:null;null!=c&&(mxUtils.setOpacity(c.elem,30),mxEvent.removeListener(c.elem,"click",c.handler),mxEvent.addListener(c.elem,"mouseenter",function(){c.elem.style.backgroundColor="#eee"}))};
GraphViewer.prototype.addClickHandler=function(b,c){b.linkPolicy=this.graphConfig.target||b.linkPolicy;b.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(e,f){if(null==f)for(var n=mxEvent.getSource(e);n!=b.container&&null!=n&&null==f;)"a"==n.nodeName.toLowerCase()&&(f=n.getAttribute("href")),n=n.parentNode;null!=c?null==f||b.isCustomLink(f)?mxEvent.consume(e):b.isExternalProtocol(f)||b.isBlankLink(f)||window.setTimeout(function(){c.destroy()},0):null!=f&&null==c&&b.isCustomLink(f)&&
(mxEvent.isTouchEvent(e)||!mxEvent.isPopupTrigger(e))&&b.customLinkClicked(f)&&(mxUtils.clearSelection(),mxEvent.consume(e))}),mxUtils.bind(this,function(b){null!=c||!this.lightboxClickEnabled||mxEvent.isTouchEvent(b)&&0!=this.toolbarItems.length||this.showLightbox()}))};
@@ -4154,7 +4153,7 @@ GraphViewer.initCss=function(){try{var b=document.createElement("style");b.type=
GraphViewer.cachedUrls={};GraphViewer.getUrl=function(b,c,e){if(null!=GraphViewer.cachedUrls[b])c(GraphViewer.cachedUrls[b]);else{var f=null!=navigator.userAgent&&0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;f.open("GET",b);f.onload=function(){c(null!=f.getText?f.getText():f.responseText)};f.onerror=e;f.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0;
(function(){var b=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(b){return window.setTimeout(b,20)},c=function(e,f){function n(){this.q=[];this.add=function(b){this.q.push(b)};var b,c;this.call=function(){b=0;for(c=this.q.length;b<c;b++)this.q[b].call()}}function l(b,c){return b.currentStyle?b.currentStyle[c]:window.getComputedStyle?window.getComputedStyle(b,null).getPropertyValue(c):b.style[c]}function q(c,d){if(!c.resizedAttached)c.resizedAttached=
new n,c.resizedAttached.add(d);else if(c.resizedAttached){c.resizedAttached.add(d);return}c.resizeSensor=document.createElement("div");c.resizeSensor.className="resize-sensor";c.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";c.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>';
-c.appendChild(c.resizeSensor);"static"==l(c,"position")&&(c.style.position="relative");var e=c.resizeSensor.childNodes[0],f=e.childNodes[0],g=c.resizeSensor.childNodes[1],k=function(){f.style.width="100000px";f.style.height="100000px";e.scrollLeft=1E5;e.scrollTop=1E5;g.scrollLeft=1E5;g.scrollTop=1E5};k();var m=!1,p=function(){c.resizedAttached&&(m&&(c.resizedAttached.call(),m=!1),b(p))};b(p);var q,u,O,B,G=function(){if((O=c.offsetWidth)!=q||(B=c.offsetHeight)!=u)m=!0,q=O,u=B;k()},H=function(b,c,d){b.attachEvent?
-b.attachEvent("on"+c,d):b.addEventListener(c,d)};H(e,"scroll",G);H(g,"scroll",G)}var d=function(){GraphViewer.resizeSensorEnabled&&f()},k=Object.prototype.toString.call(e),g="[object Array]"===k||"[object NodeList]"===k||"[object HTMLCollection]"===k||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(g)for(var k=0,p=e.length;k<p;k++)q(e[k],d);else q(e,d);this.detach=function(){if(g)for(var b=0,d=e.length;b<d;b++)c.detach(e[b]);else c.detach(e)}};
+c.appendChild(c.resizeSensor);"static"==l(c,"position")&&(c.style.position="relative");var e=c.resizeSensor.childNodes[0],f=e.childNodes[0],g=c.resizeSensor.childNodes[1],k=function(){f.style.width="100000px";f.style.height="100000px";e.scrollLeft=1E5;e.scrollTop=1E5;g.scrollLeft=1E5;g.scrollTop=1E5};k();var m=!1,p=function(){c.resizedAttached&&(m&&(c.resizedAttached.call(),m=!1),b(p))};b(p);var q,u,O,B,E=function(){if((O=c.offsetWidth)!=q||(B=c.offsetHeight)!=u)m=!0,q=O,u=B;k()},H=function(b,c,d){b.attachEvent?
+b.attachEvent("on"+c,d):b.addEventListener(c,d)};H(e,"scroll",E);H(g,"scroll",E)}var d=function(){GraphViewer.resizeSensorEnabled&&f()},k=Object.prototype.toString.call(e),g="[object Array]"===k||"[object NodeList]"===k||"[object HTMLCollection]"===k||"undefined"!==typeof jQuery&&e instanceof jQuery||"undefined"!==typeof Elements&&e instanceof Elements;if(g)for(var k=0,p=e.length;k<p;k++)q(e[k],d);else q(e,d);this.detach=function(){if(g)for(var b=0,d=e.length;b<d;b++)c.detach(e[b]);else c.detach(e)}};
c.detach=function(b){b.resizeSensor&&(b.removeChild(b.resizeSensor),delete b.resizeSensor,delete b.resizedAttached)};window.ResizeSensor=c})();
(function(){Editor.initMath();GraphViewer.initCss();if(null!=window.onDrawioViewerLoad)window.onDrawioViewerLoad();else GraphViewer.processElements()})();
diff --git a/src/main/webapp/mxgraph/mxClient.js b/src/main/webapp/mxgraph/mxClient.js
index 5dd9f362..8e79aca1 100644
--- a/src/main/webapp/mxgraph/mxClient.js
+++ b/src/main/webapp/mxgraph/mxClient.js
@@ -1,4 +1,4 @@
-var mxClient={VERSION:"16.4.5",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
+var mxClient={VERSION:"16.4.7",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),
IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),
IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2<navigator.maxTouchPoints,IS_WEBVIEW:/((iPhone|iPod|iPad).*AppleWebKit(?!.*Version)|; wv)/i.test(navigator.userAgent),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>navigator.userAgent.indexOf("Firefox/1.")&&
0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS||"[object SVGForeignObjectElement]"!==
@@ -621,8 +621,8 @@ mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var a=this.vertexArra
g,d=d/f*g,e=e/f*g,this.dispX[b]+=d,this.dispY[b]+=e,this.dispX[c]-=d,this.dispY[c]-=e)}}};mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)};function mxCircleLayout(a,b){mxGraphLayout.call(this,a);this.radius=null!=b?b:100}mxCircleLayout.prototype=new mxGraphLayout;mxCircleLayout.prototype.constructor=mxCircleLayout;mxCircleLayout.prototype.radius=null;mxCircleLayout.prototype.moveCircle=!1;
mxCircleLayout.prototype.x0=0;mxCircleLayout.prototype.y0=0;mxCircleLayout.prototype.resetEdges=!0;mxCircleLayout.prototype.disableEdgeStyle=!0;
mxCircleLayout.prototype.execute=function(a){var b=this.graph.getModel();b.beginUpdate();try{for(var c=0,d=null,e=null,f=[],g=b.getChildCount(a),k=0;k<g;k++){var l=b.getChildAt(a,k);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{f.push(l);var m=this.getVertexBounds(l),d=null==d?m.y:Math.min(d,m.y),e=null==e?m.x:Math.min(e,m.x),c=Math.max(c,Math.max(m.width,m.height))}}var n=this.getRadius(f.length,
-c);this.moveCircle&&(e=this.x0,d=this.y0);this.circle(f,n,e,d)}finally{b.endUpdate()}};mxCircleLayout.prototype.getRadius=function(a,b){return Math.max(a*b/Math.PI,this.radius)};mxCircleLayout.prototype.circle=function(a,b,c,d){for(var e=a.length,f=2*Math.PI/e,g=0;g<e;g++)this.isVertexMovable(a[g])&&this.setVertexLocation(a[g],Math.round(c+b+b*Math.sin(g*f)),Math.round(d+b+b*Math.cos(g*f)))};function mxParallelEdgeLayout(a){mxGraphLayout.call(this,a)}mxParallelEdgeLayout.prototype=new mxGraphLayout;
-mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout;mxParallelEdgeLayout.prototype.spacing=20;mxParallelEdgeLayout.prototype.checkOverlap=!1;mxParallelEdgeLayout.prototype.execute=function(a,b){var c=this.findParallels(a,b);this.graph.model.beginUpdate();try{for(var d in c){var e=c[d];1<e.length&&this.layout(e)}}finally{this.graph.model.endUpdate()}};
+c);this.moveCircle&&(e=this.x0,d=this.y0);this.circle(f,n,e,d)}finally{b.endUpdate()}};mxCircleLayout.prototype.getRadius=function(a,b){return Math.max(a*b/Math.PI,this.radius)};mxCircleLayout.prototype.circle=function(a,b,c,d){for(var e=a.length,f=2*Math.PI/e,g=0;g<e;g++)this.isVertexMovable(a[g])&&this.setVertexLocation(a[g],Math.round(c+b+b*Math.cos(g*f-Math.PI/2)),Math.round(d+b+b*Math.sin(g*f-Math.PI/2)))};function mxParallelEdgeLayout(a){mxGraphLayout.call(this,a)}
+mxParallelEdgeLayout.prototype=new mxGraphLayout;mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout;mxParallelEdgeLayout.prototype.spacing=20;mxParallelEdgeLayout.prototype.checkOverlap=!1;mxParallelEdgeLayout.prototype.execute=function(a,b){var c=this.findParallels(a,b);this.graph.model.beginUpdate();try{for(var d in c){var e=c[d];1<e.length&&this.layout(e)}}finally{this.graph.model.endUpdate()}};
mxParallelEdgeLayout.prototype.findParallels=function(a,b){var c=[],d=mxUtils.bind(this,function(a){if(!this.isEdgeIgnored(a)){var b=this.getEdgeId(a);null!=b&&(null==c[b]&&(c[b]=[]),c[b].push(a))}});if(null!=b)for(var e=0;e<b.length;e++)d(b[e]);else for(var f=this.graph.getModel(),g=f.getChildCount(a),e=0;e<g;e++)d(f.getChildAt(a,e));return c};
mxParallelEdgeLayout.prototype.getEdgeId=function(a){var b=this.graph.getView(),c=b.getVisibleTerminal(a,!0),b=b.getVisibleTerminal(a,!1),d="";if(null!=c&&null!=b){c=mxObjectIdentity.get(c);b=mxObjectIdentity.get(b);if(this.checkOverlap&&(a=this.graph.view.getState(a),null!=a&&null!=a.absolutePoints)){for(var d=[],e=0;e<a.absolutePoints.length;e++){var f=a.absolutePoints[e];null!=f&&d.push(f.x,f.y)}d=d.join(",")}return(c>b?b+"-"+c:c+"-"+b)+d}return null};
mxParallelEdgeLayout.prototype.layout=function(a){var b=a[0],c=this.graph.getView(),d=this.graph.getModel(),e=d.getGeometry(c.getVisibleTerminal(b,!0)),d=d.getGeometry(c.getVisibleTerminal(b,!1));if(e==d)for(var b=e.x+e.width+this.spacing,c=e.y+e.height/2,f=0;f<a.length;f++)this.route(a[f],b,c),b+=this.spacing;else if(null!=e&&null!=d){var b=e.x+e.width/2,c=e.y+e.height/2,f=d.x+d.width/2-b,g=d.y+d.height/2-c,d=Math.sqrt(f*f+g*g);if(0<d)for(e=g*this.spacing/d,d=f*this.spacing/d,b=b+f/2+e*(a.length-
diff --git a/src/main/webapp/resources/dia.txt b/src/main/webapp/resources/dia.txt
index c29117a5..a9e5cd17 100644
--- a/src/main/webapp/resources/dia.txt
+++ b/src/main/webapp/resources/dia.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_am.txt b/src/main/webapp/resources/dia_am.txt
index f1384dc0..582d8c18 100644
--- a/src/main/webapp/resources/dia_am.txt
+++ b/src/main/webapp/resources/dia_am.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_ar.txt b/src/main/webapp/resources/dia_ar.txt
index 47a2d3ba..4444b8d2 100644
--- a/src/main/webapp/resources/dia_ar.txt
+++ b/src/main/webapp/resources/dia_ar.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_bg.txt b/src/main/webapp/resources/dia_bg.txt
index 32ead2ac..27a8c422 100644
--- a/src/main/webapp/resources/dia_bg.txt
+++ b/src/main/webapp/resources/dia_bg.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_bn.txt b/src/main/webapp/resources/dia_bn.txt
index 5aa619f9..f81e9b60 100644
--- a/src/main/webapp/resources/dia_bn.txt
+++ b/src/main/webapp/resources/dia_bn.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_bs.txt b/src/main/webapp/resources/dia_bs.txt
index 127a537f..99918e36 100644
--- a/src/main/webapp/resources/dia_bs.txt
+++ b/src/main/webapp/resources/dia_bs.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_ca.txt b/src/main/webapp/resources/dia_ca.txt
index c555f344..9cf1c024 100644
--- a/src/main/webapp/resources/dia_ca.txt
+++ b/src/main/webapp/resources/dia_ca.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_cs.txt b/src/main/webapp/resources/dia_cs.txt
index aa757d97..2a2fc75e 100644
--- a/src/main/webapp/resources/dia_cs.txt
+++ b/src/main/webapp/resources/dia_cs.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_da.txt b/src/main/webapp/resources/dia_da.txt
index 5fb9b2f8..c14cafb2 100644
--- a/src/main/webapp/resources/dia_da.txt
+++ b/src/main/webapp/resources/dia_da.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_de.txt b/src/main/webapp/resources/dia_de.txt
index 43e21b70..8207da1f 100644
--- a/src/main/webapp/resources/dia_de.txt
+++ b/src/main/webapp/resources/dia_de.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_el.txt b/src/main/webapp/resources/dia_el.txt
index 4598a5bf..41dd51a1 100644
--- a/src/main/webapp/resources/dia_el.txt
+++ b/src/main/webapp/resources/dia_el.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_eo.txt b/src/main/webapp/resources/dia_eo.txt
index 2a007d73..43511864 100644
--- a/src/main/webapp/resources/dia_eo.txt
+++ b/src/main/webapp/resources/dia_eo.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_es.txt b/src/main/webapp/resources/dia_es.txt
index 0ad214b5..7e7bcbf1 100644
--- a/src/main/webapp/resources/dia_es.txt
+++ b/src/main/webapp/resources/dia_es.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_et.txt b/src/main/webapp/resources/dia_et.txt
index 5e521806..d840d4da 100644
--- a/src/main/webapp/resources/dia_et.txt
+++ b/src/main/webapp/resources/dia_et.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_eu.txt b/src/main/webapp/resources/dia_eu.txt
index a491652a..6e03866c 100644
--- a/src/main/webapp/resources/dia_eu.txt
+++ b/src/main/webapp/resources/dia_eu.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_fa.txt b/src/main/webapp/resources/dia_fa.txt
index af86a19a..b4d1f61c 100644
--- a/src/main/webapp/resources/dia_fa.txt
+++ b/src/main/webapp/resources/dia_fa.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_fi.txt b/src/main/webapp/resources/dia_fi.txt
index 6f594e2c..0d2be3ec 100644
--- a/src/main/webapp/resources/dia_fi.txt
+++ b/src/main/webapp/resources/dia_fi.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_fil.txt b/src/main/webapp/resources/dia_fil.txt
index ebce7265..6372c2be 100644
--- a/src/main/webapp/resources/dia_fil.txt
+++ b/src/main/webapp/resources/dia_fil.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_fr.txt b/src/main/webapp/resources/dia_fr.txt
index a435d8ae..980ec165 100644
--- a/src/main/webapp/resources/dia_fr.txt
+++ b/src/main/webapp/resources/dia_fr.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_gl.txt b/src/main/webapp/resources/dia_gl.txt
index 032d6987..e296349e 100644
--- a/src/main/webapp/resources/dia_gl.txt
+++ b/src/main/webapp/resources/dia_gl.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_gu.txt b/src/main/webapp/resources/dia_gu.txt
index 54631fc1..58d77313 100644
--- a/src/main/webapp/resources/dia_gu.txt
+++ b/src/main/webapp/resources/dia_gu.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_he.txt b/src/main/webapp/resources/dia_he.txt
index a3a2f40b..6146f859 100644
--- a/src/main/webapp/resources/dia_he.txt
+++ b/src/main/webapp/resources/dia_he.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_hi.txt b/src/main/webapp/resources/dia_hi.txt
index 7676602f..37b4316f 100644
--- a/src/main/webapp/resources/dia_hi.txt
+++ b/src/main/webapp/resources/dia_hi.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_hr.txt b/src/main/webapp/resources/dia_hr.txt
index c7b012a3..8bf85045 100644
--- a/src/main/webapp/resources/dia_hr.txt
+++ b/src/main/webapp/resources/dia_hr.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_hu.txt b/src/main/webapp/resources/dia_hu.txt
index 0038a270..ccf652fc 100644
--- a/src/main/webapp/resources/dia_hu.txt
+++ b/src/main/webapp/resources/dia_hu.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_i18n.txt b/src/main/webapp/resources/dia_i18n.txt
index edfbe51a..12aeb44c 100644
--- a/src/main/webapp/resources/dia_i18n.txt
+++ b/src/main/webapp/resources/dia_i18n.txt
@@ -1179,3 +1179,4 @@ lblToSvg=lblToSvg
txtSettings=txtSettings
LinksLost=LinksLost
arcSize=arcSize
+editConnectionPoints=editConnectionPoints
diff --git a/src/main/webapp/resources/dia_id.txt b/src/main/webapp/resources/dia_id.txt
index 3200d3f4..dcfa8be9 100644
--- a/src/main/webapp/resources/dia_id.txt
+++ b/src/main/webapp/resources/dia_id.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_it.txt b/src/main/webapp/resources/dia_it.txt
index 51833172..96362b53 100644
--- a/src/main/webapp/resources/dia_it.txt
+++ b/src/main/webapp/resources/dia_it.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_ja.txt b/src/main/webapp/resources/dia_ja.txt
index e5ae7baa..7bc8eb3e 100644
--- a/src/main/webapp/resources/dia_ja.txt
+++ b/src/main/webapp/resources/dia_ja.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_kn.txt b/src/main/webapp/resources/dia_kn.txt
index 6b032e7e..1f519c40 100644
--- a/src/main/webapp/resources/dia_kn.txt
+++ b/src/main/webapp/resources/dia_kn.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_ko.txt b/src/main/webapp/resources/dia_ko.txt
index 8d5b28ab..3ecb7e76 100644
--- a/src/main/webapp/resources/dia_ko.txt
+++ b/src/main/webapp/resources/dia_ko.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_lt.txt b/src/main/webapp/resources/dia_lt.txt
index 3f80c0a6..9c0ab4fe 100644
--- a/src/main/webapp/resources/dia_lt.txt
+++ b/src/main/webapp/resources/dia_lt.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_lv.txt b/src/main/webapp/resources/dia_lv.txt
index f8c72064..954fec94 100644
--- a/src/main/webapp/resources/dia_lv.txt
+++ b/src/main/webapp/resources/dia_lv.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_ml.txt b/src/main/webapp/resources/dia_ml.txt
index b997dfdc..9a4ad9cd 100644
--- a/src/main/webapp/resources/dia_ml.txt
+++ b/src/main/webapp/resources/dia_ml.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_mr.txt b/src/main/webapp/resources/dia_mr.txt
index 6e3f44ae..549e1efc 100644
--- a/src/main/webapp/resources/dia_mr.txt
+++ b/src/main/webapp/resources/dia_mr.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_ms.txt b/src/main/webapp/resources/dia_ms.txt
index fe473e66..a876a7c0 100644
--- a/src/main/webapp/resources/dia_ms.txt
+++ b/src/main/webapp/resources/dia_ms.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_my.txt b/src/main/webapp/resources/dia_my.txt
index c29117a5..a9e5cd17 100644
--- a/src/main/webapp/resources/dia_my.txt
+++ b/src/main/webapp/resources/dia_my.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_nl.txt b/src/main/webapp/resources/dia_nl.txt
index 685ada12..4840204d 100644
--- a/src/main/webapp/resources/dia_nl.txt
+++ b/src/main/webapp/resources/dia_nl.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_no.txt b/src/main/webapp/resources/dia_no.txt
index 70c6d72b..f06d2744 100644
--- a/src/main/webapp/resources/dia_no.txt
+++ b/src/main/webapp/resources/dia_no.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_pl.txt b/src/main/webapp/resources/dia_pl.txt
index 00922bcf..542a1a7d 100644
--- a/src/main/webapp/resources/dia_pl.txt
+++ b/src/main/webapp/resources/dia_pl.txt
@@ -3,10 +3,10 @@
about=O aplikacji
aboutDrawio=O aplikacji draw.io
accessDenied=Brak dostępu
-action=Action
+action=Akcja
actualSize=Rozmiar rzeczywisty
add=Dodaj
-addAccount=Add account
+addAccount=Dodaj konto
addedFile=Dodano {1}
addImages=Dodaj obrazy
addImageUrl=Dodaj adres URL obrazu
@@ -27,13 +27,13 @@ allTags=Wszystkie znaczniki
anchor=Kotwica
android=Android
angle=Kąt
-arc=Arc
+arc=Łuk
areYouSure=Czy jesteś pewny?
ensureDataSaved=Przed zamknięciem upewnij się, czy dane zostały zapisane.
allChangesSaved=Zapisano wszystkie zmiany
allChangesSavedInDrive=Wszystkie zmiany zapisano na dysku Drive
allowPopups=Zezwalaj na wyskakiwanie okienek, aby zapobiec pojawianiu się tego okna.
-allowRelativeUrl=Allow relative URL
+allowRelativeUrl=Zezwól na względny adres URL
alreadyConnected=Węzły zostały już połączone
apply=Zastosuj
archiMate21=ArchiMate 2.1
@@ -54,7 +54,7 @@ attachments=Załączniki
aws=AWS
aws3d=AWS 3D
azure=Azure
-back=Back
+back=Wróć
background=Tło
backgroundColor=Kolor tła
backgroundImage=Zdjęcie w tle
@@ -66,7 +66,7 @@ blockquote=Cytat
blog=Blog
bold=Pogrubienie
bootstrap=Bootstrap
-border=Border
+border=Granica
borderColor=Kolor ramki
borderWidth=Szerokość ramki
bottom=Dół
@@ -74,7 +74,7 @@ bottomAlign=Wyrównanie do dołu
bottomLeft=Lewy dół
bottomRight=Prawy dół
bpmn=BMPN
-bringForward=Bring Forward
+bringForward=Do przodu
browser=Przeglądarka
bulletedList=Lista wypunktowana
business=Biznesowe
@@ -83,36 +83,36 @@ cabinets=Skrzynka
cancel=Anuluj
center=Do środka
cannotLoad=Próba załadowania zakończona niepowodzeniem. Spróbuj później.
-cannotLogin=Próba logowania zakończona niepowodzeniem. Spróbuj później.
+cannotLogin=Próba zalogowania nie powiodła się. Proszę spróbować ponownie później.
cannotOpenFile=Nie można otworzyć pliku
change=Zmień
changeOrientation=Zmień orientację
changeUser=Zmień użytkownika
-changeStorage=Change storage
+changeStorage=Zmienić magazyn
changesNotSaved=Zmiany nie zostały zapisanie
-classDiagram=Class Diagram
+classDiagram=Diagram klas
userJoined={1} dołączył
userLeft={1} opuścił
chatWindowTitle=Chat
chooseAnOption=Wybierz opcję
chromeApp=Aplikacja Chrome
-collaborativeEditingNotice=Important Notice for Collaborative Editing
-compare=Compare
+collaborativeEditingNotice=Ważna informacja dotycząca wspólnego edytowania
+compare=Porównaj
compressed=Skompresowany
commitMessage=commit Wiadomość
-configLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!
-configLinkConfirm=Click OK to configure and restart draw.io.
-container=Container
+configLinkWarn=Ten link konfiguruje draw.io. Jeśli ufasz temu, kto ci go przekazał link, kliknij OK!
+configLinkConfirm=Kliknij OK, aby skonfigurować i ponownie uruchomić draw.io.
+container=Kontener
csv=CSV
-dark=Dark
-diagramXmlDesc=XML File
-diagramHtmlDesc=HTML File
-diagramPngDesc=Editable Bitmap Image
-diagramSvgDesc=Editable Vector Image
-didYouMeanToExportToPdf=Did you mean to export to PDF?
+dark=Ciemny
+diagramXmlDesc=Plik XML
+diagramHtmlDesc=Plik HTML
+diagramPngDesc=Edytowalny obraz bitmapowy
+diagramSvgDesc=Edytowalny obraz wektorowy
+didYouMeanToExportToPdf=Czy chodziło Ci o eksport do PDF?
draftFound=Znaleziono wersję roboczą {1}. Załaduj ją do edytora lub odrzuć, by kontynuować.
-draftRevisionMismatch=There is a different version of this diagram on a shared draft of this page. Please edit the diagram from the draft to ensure you are working with the latest version.
-selectDraft=Select a draft to continue editing:
+draftRevisionMismatch=Na współdzielonej wersji roboczej tej strony znajduje się inna wersja tego diagramu. Prosimy o edycję diagramu z wersji roboczej, aby upewnić się, że pracujesz z najnowszą wersją.
+selectDraft=Wybierz wersję roboczą, aby kontynuować edycję:
dragAndDropNotSupported=Przeciągnij i upuść dla obrazów nie jest wspierane. Czy chcesz zamiast tego użyć importowania?
dropboxCharsNotAllowed=Następujące znaki są niedozwolone: \ / : ? * " |
check=Sprawdź
@@ -124,7 +124,7 @@ clearDefaultStyle=Wyczyść styl domyślny
clearWaypoints=Wyczyść punkty trasy
clipart=Clipart
close=Zamknij
-closingFile=Closing file
+closingFile=Zamykanie pliku
collaborator=Współuczestnik
collaborators=Współuczestnicy
collapse=Zwiń
@@ -134,8 +134,8 @@ collapsible=Zwijalny
comic=Komiksowy
comment=Komentarz
commentsNotes=Komentarze/uwagi
-compress=Compress
-configuration=Configuration
+compress=Kompresja
+configuration=Konfiguracja
connect=Połącz
connecting=Łączenie
connectWithDrive=Połącz z Dyskiem Google
@@ -147,11 +147,11 @@ containsValidationErrors=Zawiera błędy potwierdzenia
copiedToClipboard=Skopiowano do schowka
copy=Kopiuj
copyConnect=Kopiuj przy połączeniu
-copyCreated=A copy of the file was created.
-copyData=Copy Data
+copyCreated=Utworzono kopię pliku.
+copyData=Kopiuj Dane
copyOf=Kopia {1}
copyOfDrawing=Kopia rysunku
-copySize=Copy Size
+copySize=Kopiuj rozmiar
copyStyle=Kopiuj styl
create=Utwórz
createNewDiagram=Utwórz nowy diagram
@@ -161,7 +161,7 @@ crop=Przytnij
curved=Zakrzywiony
custom=Dostosuj
current=Aktualny
-currentPage=Current page
+currentPage=Aktualna strona
cut=Wytnij
dashed=Przerywana
decideLater=Zdecyduj później
@@ -178,7 +178,7 @@ device=Urządzenie
diagram=Diagram
diagramContent=Zawartość diagramu
diagramLocked=Diagram został zablokowany w celu zabezpieczenia go przed dalszą utratą danych.
-diagramLockedBySince=The diagram is locked by {1} since {2} ago
+diagramLockedBySince=Diagram jest zablokowany przez {1}, od {2}
diagramName=Nazwa diagramu
diagramIsPublic=Diagram jest publiczny
diagramIsNotPublic=Diagram nie jest publiczny
@@ -193,13 +193,13 @@ discardChanges=Odrzuć zmiany i połącz ponownie
disconnected=Rozłączony
distribute=Rozprowadź
done=Gotowe
-doNotShowAgain=Do not show again
+doNotShowAgain=Nie wyświetlaj ponownie
dotted=Kropkowany
doubleClickOrientation=Kliknij dwukrotnie, aby zmienić położenie
doubleClickTooltip=Kliknij dwukrotnie, aby wstawić tekst
doubleClickChangeProperty=Kliknij dwukrotnie, aby zmienić nazwę atrybutu
download=Pobierz
-downloadDesktop=Get Desktop
+downloadDesktop=Pobierz na komputer
downloadAs=Pobierz jako
clickHereToSave=Kliknij tutaj, aby zapisać
dpi=DPI
@@ -236,18 +236,18 @@ googleImages=Obrazy Google
imageSearch=Wyszukiwanie obrazów
eip=EIP
embed=Osadź
-embedFonts=Embed Fonts
+embedFonts=Osadzanie czcionek
embedImages=Obrazy osadzone
mainEmbedNotice=Wklej na stronie
electrical=Elektryczne
-ellipse=Ellipse
+ellipse=Elipsa
embedNotice=Wklej na końcu strony
enterGroup=Wprowadź grupę
enterName=Wprowadź nazwę
enterPropertyName=Wprowadź nazwę atrybutu
enterValue=Wprowadź wartość
entityRelation=Związek encji
-entityRelationshipDiagram=Entity Relationship Diagram
+entityRelationshipDiagram=Diagram relacji między encjami
error=Błąd
errorDeletingFile=Błąd podczas usuwania pliku
errorLoadingFile=Błąd podczas ładowania pliku
@@ -260,7 +260,7 @@ errorSavingFileUnknown=Błąd podczas autoryzacji z serwerami Google. Proszę od
errorSavingFileForbidden=Błąd podczas zapisywania pliku. Brak wystarczających praw dostępu.
errorSavingFileNameConflict=Nie można zapisać diagramu. Aktualna strona zawiera już plik '{1}'
errorSavingFileNotFound=Błąd podczas zapisywania pliku. Plik nie został odnaleziony.
-errorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.
+errorSavingFileReadOnlyMode=Nie można zapisać schematu, gdy jest aktywny tryb tylko do odczytu.
errorSavingFileSessionTimeout=Twoja sesja wygasła. <a target='_blank' href='{1}'>{2}</a> i wróć do tej karty, by spróbować zapisać ponownie.
errorSendingFeedback=Błąd podczas przesyłania opinii.
errorUpdatingPreview=Błąd podczas aktualizowania podglądu.
@@ -272,7 +272,7 @@ exporting=Eksportowanie
exportAs=Eksportuj jako
exportOptionsDisabled=Opcja eksporu została zablokowana
exportOptionsDisabledDetails=Właściciel zablokował możliwość pobierania, drukowania i kopiowania dla przeglądających i komentujących.
-externalChanges=External Changes
+externalChanges=Zmiany zewnętrzne
extras=Dodatki
facebook=Facebook
failedToSaveTryReconnect=Błąd zapisu, próbuję połączyć ponownie
@@ -282,13 +282,13 @@ feedbackSent=Przesyłanie opinii powiodło się.
floorplans=Rzuty pomieszczeń
file=Plik
fileChangedOverwriteDialog=Plik został zmieniony. Nadpisać zmiany?
-fileChangedSyncDialog=The file has been modified.
-fileChangedSync=The file has been modified. Click here to synchronize.
+fileChangedSyncDialog=Plik został zmieniony.
+fileChangedSync=Plik został zmieniony. Kliknij tutaj, aby dokonać synchronizacji.
overwrite=Nadpisz
-synchronize=Synchronize
+synchronize=Synchronizuj
filename=Nazwa pliku
fileExists=Plik już istnieje
-fileMovedToTrash=File was moved to trash
+fileMovedToTrash=Plik przeniesiono do kosza
fileNearlyFullSeeFaq=Plik prawie pełen, sprawdź FAQ
fileNotFound=Plik nie został odnaleziony
repositoryNotFound=Repozytorium nie zostało odnalezione
@@ -296,13 +296,13 @@ fileNotFoundOrDenied=Plik nie został odnaleziony. Plik nie istnieje lub nie pos
fileNotLoaded=Plik niezaładowany
fileNotSaved=Plik niezapisany
fileOpenLocation=W jaki sposób chcesz otworzyć ten/te plik(i)?
-filetypeHtml=.html causes file to save as HTML with redirect to cloud URL
-filetypePng=.png causes file to save as PNG with embedded data
-filetypeSvg=.svg causes file to save as SVG with embedded data
+filetypeHtml=.html powoduje, że plik zostanie zapisany jako HTML z przekierowaniem na adres URL chmury
+filetypePng=.png powoduje zapisanie pliku jako PNG z umieszczonymi w nim danymi
+filetypeSvg=.svg powoduje, że plik zapisuje się jako SVG z umieszczonymi danymi
fileWillBeSavedInAppFolder={1} zostanie zapisany w folderze aplikacji.
fill=Wypełnij
fillColor=Kolor wypełnienia
-filterCards=Filter Cards
+filterCards=Filtr kart
find=Znajdź
fit=Dopasuj
fitContainer=Zmień wymiary kontenera
@@ -342,26 +342,26 @@ formatVssx=VSSX
formatXmlPlain=XML (normalny)
formatXml=XML
forum=Dyskusja/Forum wsparcia
-freehand=Freehand
+freehand=Odręcznie
fromTemplate=Z szablonu
fromTemplateUrl=Z adresu URL szablonu
fromText=Z tekstu
fromUrl=Z hiperłącza
fromThisPage=Z tej strony
fullscreen=Pełnoekranowy
-gap=Gap
+gap=Luka
gcp=GCP
general=Ogólny
-getNotionChromeExtension=Get the Notion Chrome Extension
+getNotionChromeExtension=Pobierz rozszerzenie Notion do Chrome
github=GitHub
gitlab=GitLab
gliffy=Gliffy
global=Globalny
-googleDocs=Google Docs
-googleDrive=Google Drive
+googleDocs=Dokumenty Google
+googleDrive=Dysk Google
googleGadget=Google Gadget
googlePlus=Google+
-googleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:
+googleSharingNotAvailable=Udostępnianie jest dostępne tylko przez Google Drive. Proszę kliknąć Otwórz poniżej i udostępnić z menu więcej akcji:
googleSlides=Google Slides
googleSites=Google Sites
googleSheets=Google Sheets
@@ -415,10 +415,10 @@ insertRowBefore=Wstaw wiersz u góry
insertRowAfter=Wstaw wiersz u dołu
insertText=Wstaw tekst
inserting=Wstawianie
-installApp=Install App
+installApp=Zainstaluj aplikację
invalidFilename=Nazwy diagramów nie mogą zawierać następujących znaków: \ / | : ; { } < > & + ? = "
-invalidLicenseSeeThisPage=Twoja licencja jest nieważna, sprawdź <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.
-invalidInput=Invalid input
+invalidLicenseSeeThisPage=Twoja licencja jest nieważna, sprawdź <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">stronę</a>.
+invalidInput=Nieprawidłowe wejście
invalidName=Nieprawidłowa nazwa
invalidOrMissingFile=Nieprawidłowy lub brakujący plik
invalidPublicUrl=Nieprawidłowe publiczne hiperłącze
@@ -427,7 +427,7 @@ ios=iOS
italic=Kursywa
kennedy=Kennedy
keyboardShortcuts=Skróty klawiszowe
-labels=Labels
+labels=Etykiety
layers=Warstwy
landscape=Poziomy
language=Język
@@ -436,9 +436,9 @@ lastChange=Ostatnia zmiana {1} temu
lessThanAMinute=poniżej minuty
licensingError=Błąd licencji
licenseHasExpired=Licencja dla {1} wygasła {2}. Kliknij tutaj.
-licenseRequired=This feature requires draw.io to be licensed.
+licenseRequired=Ta funkcja wymaga licencji na draw.io.
licenseWillExpire=Licencja dla {1} wygaśnie {2}. Kliknij tutaj.
-lineJumps=Line jumps
+lineJumps=Przeskoki na liniach
linkAccountRequired=Jeśli diagram nie jest publiczny, wymagane jest konto Google, by zobaczyć link.
linkText=Hiperłącze tekstu
list=Lista
@@ -470,18 +470,18 @@ loggedOut=Wylogowany
logIn=Zaloguj
loveIt=Kocham {1}
lucidchart=Lucidchart
-maps=Maps
+maps=Mapy
mathematicalTypesetting=Matematyczny zestaw znaków
makeCopy=Zrób kopię
manual=Ręczny
-merge=Merge
+merge=Połącz
mermaid=Mermaid
microsoftOffice=Microsoft Office
microsoftExcel=Microsoft Excel
microsoftPowerPoint=Microsoft PowerPoint
microsoftWord=Microsoft Word
middle=Środek
-minimal=Minimal
+minimal=Minimalna
misc=Różne
mockups=Modele
modificationDate=Data zmiany
@@ -495,13 +495,13 @@ moving=Przenoszenie
moveSelectionTo=Przenieś zaznaczone do {1}
name=Nazwa
navigation=Nawigacja
-network=Network
+network=Sieć
networking=Sieci komputerowe
new=Nowy
newLibrary=Nowa biblioteka
nextPage=Następna strona
no=Nie
-noPickFolder=No, pick folder
+noPickFolder=Nie, wybierz folder
noAttachments=Nie znaleziono załączników
noColor=Brak koloru
noFiles=Brak plików
@@ -526,7 +526,7 @@ notAUtf8File=To nie jest plik z kodowaniem UTF-8
notConnected=Niepołączony
note=Notka
notion=Notion
-notSatisfiedWithImport=Not satisfied with the import?
+notSatisfiedWithImport=Nie jesteś zadowolony z importu?
notUsingService=Nie używasz {1}?
numberedList=Lista numerowana
offline=Offline
@@ -549,7 +549,7 @@ openRecent=Otwórz ostatnie
openSupported=Wspierane są pliki utworzone w tym programie (.xml), .vsdx oraz .gliffy
options=Opcje
organic=Organiczny
-orgChart=Org Chart
+orgChart=Schemat organizacji
orthogonal=Prostopadły
otherViewer=inny użytkownik
otherViewers=inni użytkownicy
@@ -567,11 +567,11 @@ pan=Panorama
panTooltip=Spacja+przeciągnij do panoramy
paperSize=Rozmiar papieru
pattern=Wzór
-parallels=Parallels
+parallels=Równolegle
paste=Wklej
-pasteData=Paste Data
+pasteData=Wklej dane
pasteHere=Wklej tutaj
-pasteSize=Paste Size
+pasteSize=Wklej rozmiar
pasteStyle=Wklej styl
perimeter=Granica
permissionAnyone=Każdy może edytować
@@ -600,20 +600,20 @@ properties=Właściwości
publish=Publikuj
quickStart=Szybki start (wideo)
rack=Szafa serwerowa
-radial=Radial
+radial=Promienisty
radialTree=Drzewo radialne
readOnly=Tylko do odczytu
reconnecting=Łączę ponownie
recentlyUpdated=Ostatnio zakutalizowane
recentlyViewed=Ostatnio przeglądane
-rectangle=Rectangle
+rectangle=Prostokąt
redirectToNewApp=Ten plik został utworzony lub zmodyfikowany w nowszej wersji programu. Teraz nastąpi przekierowanie.
realtimeTimeout=Wygląda na to, że dokonał-eś/aś kilku zmian w trybie offline. Przepraszamy, ale te zmiany nie mogą zostać zapisane.
redo=Powtórz
refresh=Odśwież
regularExpression=Wyrażenie regularne
-relative=Relative
-relativeUrlNotAllowed=Relative URL not allowed
+relative=Względny
+relativeUrlNotAllowed=Względny adres URL nie jest dozwolony
rememberMe=Zapamiętaj mnie
rememberThisSetting=Zapamiętaj te ustawienia
removeFormat=Wyczyść formatowanie
@@ -631,7 +631,7 @@ required=wymagany
reset=Resetuj
resetView=Resetuj widok
resize=Zmień rozmiar
-resizeLargeImages=Do you want to resize large images to make the application run faster?
+resizeLargeImages=Czy chcesz zmienić rozmiar dużych obrazów, aby aplikacja działała szybciej?
retina=Retina
responsive=Responsywny
restore=Przywróć
@@ -642,7 +642,7 @@ retryingLogin=Upłynął czas logowania. Ponawiam...
reverse=Odwróć
revision=Zmiana
revisionHistory=Historia zmian
-rhombus=Rhombus
+rhombus=Romb
right=Do prawej
rightAlign=Wyrównaj do prawej
rightToLeft=Od prawej do lewej
@@ -655,11 +655,11 @@ saveAndExit=Zapisz i wyjdź
saveAs=Zapisz jako
saveAsXmlFile=Zapisać jako plik XML?
saved=Zapisany
-saveDiagramFirst=Please save the diagram first
+saveDiagramFirst=Proszę najpierw zapisać diagram
saveDiagramsTo=Zapisz diagramy w
saveLibrary403=Niewystarczające uprawnienia do edycji tej biblioteki
saveLibrary500=Wystąpił błąd podczas zapisywania biblioteki
-saveLibraryReadOnly=Could not save library while read-only mode is active
+saveLibraryReadOnly=Nie można zapisać biblioteki, gdy jest aktywny tryb tylko do odczytu
saving=Zapisuję
scratchpad=Brudnopis
scrollbars=Paski przewijania
@@ -667,15 +667,15 @@ search=Szukaj
searchShapes=Szukaj kształtów
selectAll=Zaznacz wszystko
selectionOnly=Tylko wybrane
-selectCard=Select Card
+selectCard=Wybierz kartę
selectEdges=Zaznacz brzegi
selectFile=Wybierz plik
selectFolder=Wybierz folder
selectFont=Wybierz czcionkę
selectNone=Odznacz wszystko
-selectTemplate=Select Template
+selectTemplate=Wybierz szablon
selectVertices=Zaznacz wierzchołki
-sendBackward=Send Backward
+sendBackward=Wyślij wstecz
sendMessage=Wyślij
sendYourFeedback=Wyślij opinię
serviceUnavailableOrBlocked=Usługa zablokowana lub niedostępna
@@ -687,7 +687,7 @@ shape=Kształt
shapes=Kształty
share=Udostępnij
shareLink=Hiperłącze do umożliwienia edycji innym użytkownikom
-sharingAvailable=Sharing available for Google Drive and OneDrive files.
+sharingAvailable=Udostępnianie dostępne dla plików Google Drive i OneDrive.
sharp=Ostry
show=Pokaż
showStartScreen=Pokaż ekran startowy
@@ -696,10 +696,10 @@ signs=Znaki
signOut=Wyloguj
simple=Proste
simpleArrow=Prosta strzałka
-simpleViewer=Simple Viewer
+simpleViewer=Łatwe przeglądanie
size=Rozmiar
-sketch=Sketch
-snapToGrid=Snap to Grid
+sketch=Szkic
+snapToGrid=Przyciąganie do siatki
solid=Ciągła
sourceSpacing=Rozmieszczenie źródła
south=Południe
@@ -708,23 +708,23 @@ space=Obszar
spacing=Rozmieszczenie
specialLink=Łącze specjalne
standard=Standardowe
-startDrawing=Start drawing
-stopDrawing=Stop drawing
+startDrawing=Zacznij rysować
+stopDrawing=Przestań rysować
starting=Uruchamianie
straight=Prosty
-strikethrough=Strikethrough
+strikethrough=Skreślenie
strokeColor=Kolor linii
style=Styl
subscript=Indeks dolny
summary=Podsumowanie
superscript=Indeks górny
support=Wsparcie
-swimlaneDiagram=Swimlane Diagram
+swimlaneDiagram=Diagram toru wodnego
sysml=SysML
tags=Znaczniki
table=Tabela
-tables=Tables
-takeOver=Take Over
+tables=Tabele
+takeOver=Przejąć kontrolę
targetSpacing=Rozmieszczenie celu
template=Szablon
templates=Szablony
@@ -737,8 +737,8 @@ title=Tytuł
to=do
toBack=Do tyłu
toFront=Do przodu
-tooLargeUseDownload=Too large, use download instead.
-toolbar=Toolbar
+tooLargeUseDownload=Zbyt duży, użyj opcji pobierz.
+toolbar=Pasek narzędzi
tooltips=Dymki podpowiedzi
top=Góra
topAlign=Wyrównaj do góry
@@ -756,7 +756,7 @@ uml=UML
underline=Podkreślenie
undo=Cofnij
ungroup=Rozgrupuj
-unmerge=Unmerge
+unmerge=Odłącz
unsavedChanges=Niezapisane zmiany
unsavedChangesClickHereToSave=Niezapisane zmiany. Kliknij tutaj, aby zapisać.
untitled=Bez tytułu
@@ -770,14 +770,14 @@ updatingPreview=Aktualizowanie podglądu. Proszę czekać...
updatingSelection=Aktualizowanie wyboru. Proszę czekać...
upload=Załaduj
url=URL
-useOffline=Use Offline
-useRootFolder=Use root folder?
+useOffline=Użycie w trybie offline
+useRootFolder=Użyć folderu głównego?
userManual=Podręcznik użytkownika
vertical=Pionowy
verticalFlow=Pionowy przepływ
verticalTree=Pionowe drzewo
view=Widok
-viewerSettings=Viewer Settings
+viewerSettings=Wyświetlanie ustawień
viewUrl=Hiperłącze do widoku: {1}
voiceAssistant=Asystent głosowy (beta)
warning=Ostrzeżenie
@@ -808,30 +808,30 @@ venndiagrams=Diagramy Venna
webEmailOrOther=Strona, email lub dowolny inny adres internetowy
webLink=Hiperłącze strony
wireframes=Projekty ramowe
-property=Property
-value=Value
-showMore=Show More
-showLess=Show Less
-myDiagrams=My Diagrams
-allDiagrams=All Diagrams
-recentlyUsed=Recently used
-listView=List view
-gridView=Grid view
-resultsFor=Results for '{1}'
-oneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / \ { | }
-oneDriveInvalidDeviceName=The specified device name is invalid
-officeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.
-officeSelectSingleDiag=Please select a single draw.io diagram only without other contents.
-officeSelectDiag=Please select a draw.io diagram.
-officeCannotFindDiagram=Cannot find a draw.io diagram in the selection
-noDiagrams=No diagrams found
-authFailed=Authentication failed
-officeFailedAuthMsg=Unable to successfully authenticate user or authorize application.
-convertingDiagramFailed=Converting diagram failed
-officeCopyImgErrMsg=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.
-insertingImageFailed=Inserting image failed
+property=Właściwości
+value=Wartość
+showMore=Pokaż więcej
+showLess=Pokaż mniej
+myDiagrams=Moje schematy
+allDiagrams=Wszystkie schematy
+recentlyUsed=Ostatnio używane
+listView=Widok listy
+gridView=Widok siatki
+resultsFor=Wyniki dla '{1}'
+oneDriveCharsNotAllowed=Następujące znaki są niedozwolone: ~ " # % * : < > ? / \ { | }
+oneDriveInvalidDeviceName=Podana nazwa urządzenia jest nieprawidłowa
+officeNotLoggedOD=Nie jesteś zalogowany do OneDrive. Proszę otworzyć okno zadań draw.io i najpierw się zaloguj.
+officeSelectSingleDiag=Proszę wybrać tylko jeden diagram draw.io bez innych treści.
+officeSelectDiag=Proszę wybrać diagram draw.io.
+officeCannotFindDiagram=Nie można znaleźć diagramu draw.io w zaznaczonym elemencie
+noDiagrams=Nie znaleziono diagramów
+authFailed=Autoryzacja nie powiodła się
+officeFailedAuthMsg=Nie udało się pomyślnie uwierzytelnić użytkownika lub autoryzować aplikacji.
+convertingDiagramFailed=Konwersja diagramu nie powiodła się
+officeCopyImgErrMsg=Ze względu na pewne ograniczenia w aplikacji gospodarza, obraz nie mógł zostać wstawiony. Prosimy o ręczne skopiowanie obrazu, a następnie wklejenie go do dokumentu.
+insertingImageFailed=Nie udało się wstawić obrazu
officeCopyImgInst=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.
-folderEmpty=Folder is empty
+folderEmpty=Folder jest pusty
recent=Recent
sharedWithMe=Shared With Me
sharepointSites=Sharepoint Sites
@@ -865,7 +865,7 @@ reOpened=Re-opened
markedAsResolved=Marked as resolved
noCommentsFound=No comments found
comments=Comments
-timeAgo={1} ago
+timeAgo={1} temu
confluenceCloud=Confluence Cloud
libraries=Libraries
confAnchor=Confluence Page Anchor
@@ -894,22 +894,22 @@ draftWriteErr=Draft Write Error
draftCantCreate=Draft could not be created
confDuplName=Duplicate diagram name detected. Please pick another name.
confSessionExpired=Looks like your session expired. Log in again to keep working.
-login=Login
+login=Zaloguj się
drawPrev=draw.io preview
drawDiag=draw.io diagram
invalidCallFnNotFound=Invalid Call: {1} not found
invalidCallErrOccured=Invalid Call: An error occurred, {1}
anonymous=Anonymous
confGotoPage=Go to containing page
-showComments=Show Comments
-confError=Error: {1}
+showComments=Pokaż komentarze
+confError=Błąd: {1}
gliffyImport=Gliffy Import
gliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.
gliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.
-startImport=Start Import
-drawConfig=draw.io Configuration
-customLib=Custom Libraries
-customTemp=Custom Templates
+startImport=Rozpocznij import
+drawConfig=Konfiguracja draw.io
+customLib=Biblioteki własne
+customTemp=Szablony własne
pageIdsExp=Page IDs Export
drawReindex=draw.io re-indexing (beta)
working=Working
@@ -917,16 +917,16 @@ drawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist
createConfSp=Create Config Space
unexpErrRefresh=Unexpected error, please refresh the page and try again.
configJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to
-thisPage=this page
-curCustLib=Current Custom Libraries
-libName=Library Name
-action=Action
-drawConfID=draw.io Config ID
-addLibInst=Click the "Add Library" button to upload a new library.
-addLib=Add Library
-customTempInst1=Custom templates are draw.io diagrams saved in children pages of
-customTempInst2=For more details, please refer to
-tempsPage=Templates page
+thisPage=ta strona
+curCustLib=Aktualne niestandardowe biblioteki
+libName=Nazwa biblioteki
+action=Akcja
+drawConfID=Draw.io ID konfiguracji
+addLibInst=Kliknij "Dodaj bibliotekę", aby załadować nową bibliotekę.
+addLib=Dodaj bibliotekę
+customTempInst1=Własne szablony to diagramy draw.io zapisane na stronach podrzędnych
+customTempInst2=Aby uzyskać więcej informacji, zapoznaj się z
+tempsPage=Strona szablonów
pageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.
pageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.
startExp=Start Export
@@ -942,8 +942,8 @@ confAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed success
confAUpdatePageFailed=Updating page "{1}" failed.
confANoDiagFoundInPage=No {1} diagrams found in page "{2}".
confAFetchPageFailed=Fetching the page failed.
-confANoDiagFound=No {1} diagrams found. Process finished.
-confASearchFailed=Searching for {1} diagrams failed. Please try again later.
+confANoDiagFound=Nie znaleziono diagramów {1}. Proces zakończony.
+confASearchFailed=Poszukiwanie diagramów dla {1} nie powiodło się. Proszę spróbować ponownie później.
confAGliffyDiagFound={2} diagram "{1}" found. Importing
confAGliffyDiagImported={2} diagram "{1}" imported successfully.
confASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.
@@ -985,11 +985,11 @@ pickODFile=Pick OneDrive File
pickGDriveFile=Pick Google Drive File
pickDeviceFile=Pick Device File
vsdNoConfig="vsdurl" is not configured
-ruler=Ruler
-units=Units
-points=Points
-inches=Inches
-millimeters=Millimeters
+ruler=Linijka
+units=Jednostki
+points=Punkty
+inches=Cale
+millimeters=Milimetry
confEditDraftDelOrExt=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.
confDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session's modifications.
macroNotFound=Macro Not Found
@@ -1076,7 +1076,7 @@ widthOfViewer=Width of the viewer (px)
heightOfViewer=Height of the viewer (px)
autoSetViewerSize=Automatically set the size of the viewer
thumbnail=Thumbnail
-prevInDraw=Preview in draw.io
+prevInDraw=Podgląd w draw.io
onedriveFname=OneDrive filename
diagFname=Diagram filename
diagUrl=Diagram URL
@@ -1134,48 +1134,49 @@ importingDrafts=Importing {1} Diagrams in drafts
processingDrafts=Processing drafts
updatingDrafts=Updating drafts
updateDrafts=Update drafts
-notifications=Notifications
+notifications=Powiadomienia
drawioImp=draw.io Import
confALibsImp=Importing draw.io Libraries
confALibsImpFailed=Importing {1} library failed
contributors=Contributors
-drawDiagrams=draw.io Diagrams
+drawDiagrams=Diagramy draw.io
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
-replaceWith=Replace with
-replaceAll=Replace All
+replaceWith=Zamień na
+replaceAll=Zamień wszystkie
confASkipDiagModified=Skipped "{1}" as it was modified after initial import
replFind=Replace/Find
matchesRepl={1} matches replaced
draftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.
ibm=IBM
-linkToDiagramHint=Add a link to this diagram. The diagram can only be edited from the page that owns it.
-linkToDiagram=Link to Diagram
-changedBy=Changed By
-lastModifiedOn=Last modified on
-searchResults=Search Results
-showAllTemps=Show all templates
-notionToken=Notion Token
-selectDB=Select Database
-noDBs=No Databases
-diagramEdited={1} diagram "{2}" edited
-confDraftPermissionErr=Draft cannot be written. Do you have attachment write/read permission on this page?
-confDraftTooBigErr=Draft size is too large. Pease check "Attachment Maximum Size" of "Attachment Settings" in Confluence Configuration?
-owner=Owner
-repository=Repository
+linkToDiagramHint=Dodaj link do tego diagramu. Diagram może być edytowany tylko z poziomu strony, która jest jego właścicielem.
+linkToDiagram=Link do schematu
+changedBy=Zmienione przez
+lastModifiedOn=Ostatnio zmodyfikowano
+searchResults=Wyniki wyszukiwania
+showAllTemps=Pokaż wszystkie szablony
+notionToken=Token Notion
+selectDB=Wybierz bazę danych
+noDBs=Brak bazy danych
+diagramEdited={1} diagram "{2}" edytowany
+confDraftPermissionErr=Projekt nie może być zapisany. Czy masz uprawnienia do zapisu/odczytu załącznika na tej stronie?
+confDraftTooBigErr=Rozmiar szkicu jest zbyt duży. Proszę sprawdzić "Attachment Maximum Size" w "Attachment Settings" w Konfiguracji Confluence?
+owner=Właściciel
+repository=Repozytorium
branch=Branch
-meters=Meters
-teamsNoEditingMsg=Editor functionality is only available in Desktop environment (in MS Teams App or a web browser)
-contactOwner=Contact Owner
-viewerOnlyMsg=You cannot edit the diagrams in the mobile platform, please use the desktop client or a web browser.
-website=Website
-check4Updates=Check for updates
-attWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...
-confPartialPageList=We couldn't fetch all pages due to an error in Confluence. Continuing using {1} pages only.
-spellCheck=Spell checker
-noChange=No Change
-lblToSvg=Convert labels to SVG
-txtSettings=Text Settings
-LinksLost=Links will be lost
-arcSize=Arc Size
+meters=Metry
+teamsNoEditingMsg=Funkcjonalność edytora jest dostępna tylko na komputerze stacjonarnym (w aplikacji MS Teams lub w przeglądarce internetowej)
+contactOwner=Skontaktuj się z właścicielem
+viewerOnlyMsg=Nie możesz edytować diagramów w platformie mobilnej, skorzystaj z aplikacji na komputerze lub przeglądarki internetowej.
+website=Strona internetowa
+check4Updates=Sprawdź aktualizacje
+attWriteFailedRetry={1}: Nie udało się zapisać załącznika, spróbuj ponownie za {2} sekund...
+confPartialPageList=Nie mogliśmy pobrać wszystkich stron z powodu błędu w Confluence. Kontynuacja przy użyciu tylko {1} stron.
+spellCheck=Sprawdzanie pisowni
+noChange=Bez zmian
+lblToSvg=Konwersja etykiet do SVG
+txtSettings=Ustawienia tekstu
+LinksLost=Linki zostaną utracone
+arcSize=Rozmiar łuku
+editConnectionPoints=Edycja punktów połączeń
diff --git a/src/main/webapp/resources/dia_pt-br.txt b/src/main/webapp/resources/dia_pt-br.txt
index 2312bed9..648c4282 100644
--- a/src/main/webapp/resources/dia_pt-br.txt
+++ b/src/main/webapp/resources/dia_pt-br.txt
@@ -303,7 +303,7 @@ fileWillBeSavedInAppFolder={1} será salvo na pasta do aplicativo.
fill=Preencher
fillColor=Cor de preenchimento
filterCards=Filtrar os cartões
-find=Encontrar
+find=Procurar
fit=Caber
fitContainer=Redimensionar a tela
fitIntoContainer=Caber na tela
@@ -352,7 +352,7 @@ fullscreen=Tela cheia
gap=Espaçamento
gcp=GCP
general=Geral
-getNotionChromeExtension=Get the Notion Chrome Extension
+getNotionChromeExtension=Obtenha a extensão do Notion para o Chrome
github=GitHub
gitlab=GitLab
gliffy=Gliffy
@@ -663,10 +663,10 @@ saveLibraryReadOnly=Não foi possível salvar a biblioteca porque o modo somente
saving=Salvando
scratchpad=Bloco de rascunho
scrollbars=Barras de rolagem
-search=Buscar
+search=Procurar
searchShapes=Procurar formas
selectAll=Selecionar tudo
-selectionOnly=Selecionar somente
+selectionOnly=Apenas a seleção
selectCard=Selecionar cartão
selectEdges=Selecionar bordas
selectFile=Selecionar arquivo
@@ -699,7 +699,7 @@ simpleArrow=Seta simples
simpleViewer=Visualizador simples
size=Tamanho
sketch=Esboço
-snapToGrid=Snap to Grid
+snapToGrid=Alinhar à grade
solid=Sólido
sourceSpacing=Espaçamento entre fontes
south=Inferior
@@ -756,7 +756,7 @@ uml=UML
underline=Sublinhado
undo=Desfazer
ungroup=Desagrupar
-unmerge=Unmerge
+unmerge=Dividir
unsavedChanges=Mudanças não salvas
unsavedChangesClickHereToSave=Mudanças não salvas. Clique aqui para salvar.
untitled=Sem título
@@ -1143,10 +1143,10 @@ drawDiagrams=draw.io Diagrams
errFileNotFoundOrNoPer=Error: Access Denied. File not found or you do not have permission to access "{1}" on {2}.
confACheckPagesWEmbed=Checking pages having embedded draw.io diagrams.
confADelBrokenEmbedDiagLnk=Removing broken embedded diagram links
-replaceWith=Replace with
+replaceWith=Substituir por
replaceAll=Substituir tudo
confASkipDiagModified=Skipped "{1}" as it was modified after initial import
-replFind=Replace/Find
+replFind=Substituir/Procurar
matchesRepl={1} matches replaced
draftErrDataLoss=An error occurred while reading the draft file. The diagram cannot be edited now to prevent any possible data loss. Please try again later or contact support.
ibm=IBM
@@ -1173,9 +1173,10 @@ website=Website
check4Updates=Verificar se há atualizações
attWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...
confPartialPageList=We couldn't fetch all pages due to an error in Confluence. Continuing using {1} pages only.
-spellCheck=Spell checker
-noChange=No Change
-lblToSvg=Convert labels to SVG
-txtSettings=Text Settings
+spellCheck=Verificação ortográfica
+noChange=Nenhuma alteração
+lblToSvg=Converter textos para SVG
+txtSettings=Configurações de texto
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Editar pontos de conexão
diff --git a/src/main/webapp/resources/dia_pt.txt b/src/main/webapp/resources/dia_pt.txt
index 4da28060..1c4d9ad2 100644
--- a/src/main/webapp/resources/dia_pt.txt
+++ b/src/main/webapp/resources/dia_pt.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_ro.txt b/src/main/webapp/resources/dia_ro.txt
index 3f0fb648..f82d169d 100644
--- a/src/main/webapp/resources/dia_ro.txt
+++ b/src/main/webapp/resources/dia_ro.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_ru.txt b/src/main/webapp/resources/dia_ru.txt
index f26ef522..cfc79116 100644
--- a/src/main/webapp/resources/dia_ru.txt
+++ b/src/main/webapp/resources/dia_ru.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_si.txt b/src/main/webapp/resources/dia_si.txt
index c29117a5..a9e5cd17 100644
--- a/src/main/webapp/resources/dia_si.txt
+++ b/src/main/webapp/resources/dia_si.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_sk.txt b/src/main/webapp/resources/dia_sk.txt
index d63eaa7e..6decfd32 100644
--- a/src/main/webapp/resources/dia_sk.txt
+++ b/src/main/webapp/resources/dia_sk.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_sl.txt b/src/main/webapp/resources/dia_sl.txt
index f8011c34..1eb9aa46 100644
--- a/src/main/webapp/resources/dia_sl.txt
+++ b/src/main/webapp/resources/dia_sl.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_sr.txt b/src/main/webapp/resources/dia_sr.txt
index c644d7a7..ec836435 100644
--- a/src/main/webapp/resources/dia_sr.txt
+++ b/src/main/webapp/resources/dia_sr.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_sv.txt b/src/main/webapp/resources/dia_sv.txt
index e552364e..3dc0b567 100644
--- a/src/main/webapp/resources/dia_sv.txt
+++ b/src/main/webapp/resources/dia_sv.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_sw.txt b/src/main/webapp/resources/dia_sw.txt
index 3c3c793a..e7f2f38e 100644
--- a/src/main/webapp/resources/dia_sw.txt
+++ b/src/main/webapp/resources/dia_sw.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_ta.txt b/src/main/webapp/resources/dia_ta.txt
index 168d78d4..87c08437 100644
--- a/src/main/webapp/resources/dia_ta.txt
+++ b/src/main/webapp/resources/dia_ta.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_te.txt b/src/main/webapp/resources/dia_te.txt
index ecbadfe2..2fc0f97f 100644
--- a/src/main/webapp/resources/dia_te.txt
+++ b/src/main/webapp/resources/dia_te.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_th.txt b/src/main/webapp/resources/dia_th.txt
index 1364e4e9..67f29c41 100644
--- a/src/main/webapp/resources/dia_th.txt
+++ b/src/main/webapp/resources/dia_th.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_tr.txt b/src/main/webapp/resources/dia_tr.txt
index 2bc4f0ce..4fa0131d 100644
--- a/src/main/webapp/resources/dia_tr.txt
+++ b/src/main/webapp/resources/dia_tr.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_uk.txt b/src/main/webapp/resources/dia_uk.txt
index 941b04c0..0de9d57b 100644
--- a/src/main/webapp/resources/dia_uk.txt
+++ b/src/main/webapp/resources/dia_uk.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_vi.txt b/src/main/webapp/resources/dia_vi.txt
index 3961887a..93eeb6a6 100644
--- a/src/main/webapp/resources/dia_vi.txt
+++ b/src/main/webapp/resources/dia_vi.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_zh-tw.txt b/src/main/webapp/resources/dia_zh-tw.txt
index 3d796f16..a50f2e50 100644
--- a/src/main/webapp/resources/dia_zh-tw.txt
+++ b/src/main/webapp/resources/dia_zh-tw.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/resources/dia_zh.txt b/src/main/webapp/resources/dia_zh.txt
index 79513cbc..504cfc1a 100644
--- a/src/main/webapp/resources/dia_zh.txt
+++ b/src/main/webapp/resources/dia_zh.txt
@@ -1179,3 +1179,4 @@ lblToSvg=Convert labels to SVG
txtSettings=Text Settings
LinksLost=Links will be lost
arcSize=Arc Size
+editConnectionPoints=Edit Connection Points
diff --git a/src/main/webapp/service-worker.js b/src/main/webapp/service-worker.js
index 7b7a025a..76ec0f89 100644
--- a/src/main/webapp/service-worker.js
+++ b/src/main/webapp/service-worker.js
@@ -1,2 +1,2 @@
-if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let i=Promise.resolve();return r[e]||(i=new Promise((async i=>{if("document"in self){const r=document.createElement("script");r.src=e,document.head.appendChild(r),r.onload=i}else importScripts(e),i()}))),i.then((()=>{if(!r[e])throw new Error(`Module ${e} didn’t register its module`);return r[e]}))},i=(i,r)=>{Promise.all(i.map(e)).then((e=>r(1===e.length?e[0]:e)))},r={require:Promise.resolve(i)};self.define=(i,a,c)=>{r[i]||(r[i]=Promise.resolve().then((()=>{let r={};const s={uri:location.origin+i.slice(1)};return Promise.all(a.map((i=>{switch(i){case"exports":return r;case"module":return s;default:return e(i)}}))).then((e=>{const i=c(...e);return r.default||(r.default=i),r}))})))}}define("./service-worker.js",["./workbox-12cca165"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"js/app.min.js",revision:"7a02cbad6fad3e0ad9f27fbe1eeb488a"},{url:"js/extensions.min.js",revision:"5f96202f6da7fac09289ee6738d036b9"},{url:"js/stencils.min.js",revision:"7a7bde0d8b6615eee4ebd215d2b9d761"},{url:"js/shapes-14-6-5.min.js",revision:"93cb7d82e382a16b54eb307374b1b760"},{url:"js/math-print.js",revision:"9d98c920695f6c3395da4b68f723e60a"},{url:"index.html",revision:"8b5b1cf07fc74454cf354717e9d18534"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/fonts/ArchitectsDaughter-Regular.ttf",revision:"31c2153c0530e32553b31a49b3d70736"},{url:"styles/grapheditor.css",revision:"748da0cd0a068a52eac70ee2b2c194fe"},{url:"styles/atlas.css",revision:"e8152cda9233d3a3af017422993abfce"},{url:"styles/dark.css",revision:"3179f617dd02efd2cefeb8c06f965880"},{url:"js/dropbox/Dropbox-sdk.min.js",revision:"4b9842892aa37b156db0a8364b7a83b0"},{url:"js/onedrive/OneDrive.js",revision:"505e8280346666f7ee801bc59521fa67"},{url:"js/viewer-static.min.js",revision:"0de36bcab6c523c1f6a23af1db6ad524"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"2ce6e99d95113e9ca6b24343cea202e0"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"6e9412c359a21b86dc7c5128bf6208d4"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"197ed5837ed27992688fc424699a9a78"},{url:"connect/jira/fullscreen-viewer.js",revision:"4e0775a6c156a803e777870623ac7c3e"},{url:"plugins/connectJira.js",revision:"4cefa13414e0d406550f3c073923080c"},{url:"plugins/cConf-comments.js",revision:"c787357209cff2986dcca567b599e2ef"},{url:"plugins/cConf-1-4-8.js",revision:"d7577d8f21716423852c343f027c4c27"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"d87bfe7445b9676b595ff2ceaec7bb9d"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"887d3ac605a7bb297067537e7c1f5686"},{url:"connect/confluence/viewer-init.js",revision:"4a60c6c805cab7bc782f1e52f7818d9f"},{url:"connect/confluence/viewer.js",revision:"bb9cf021b7bf90dad260b400a1eb4240"},{url:"connect/confluence/viewer-1-4-42.html",revision:"c7b38b3af4eb7a58ab6dc4791216530e"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"8b670f4b6ccde55358851da705ae884f"},{url:"connect/confluence/includeDiagram.html",revision:"c03c89622d22227313645900af4e3c3d"},{url:"connect/confluence/macro-editor.js",revision:"e273a48b8e81faac4530bf1a68d75aa0"},{url:"math/MathJax.js",revision:"b2c103388b71bb3d11cbf9aa45fe9b68"},{url:"math/config/TeX-MML-AM_SVG-full.js",revision:"d5cb8ac04050983170ae4af145bc66ff"},{url:"math/jax/output/SVG/fonts/TeX/fontdata.js",revision:"495e5a410955d1b6178870e605890ede"},{url:"math/jax/element/mml/optable/BasicLatin.js",revision:"cac9b2e71382e62270baa55fab07cc13"},{url:"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js",revision:"e3e5e4d5924beed29f0844550b5c8f46"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js",revision:"0767cbad7275b53da128e7e5e1109f7c"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js",revision:"346302a5c5ee00e01c302148c56dbfe3"},{url:"resources/dia.txt",revision:"2d1a381fcc4cff55487c6647efedf6de"},{url:"resources/dia_am.txt",revision:"de8965e0b14a200a24503b5d6d8fa40f"},{url:"resources/dia_ar.txt",revision:"d05cc111ac6bec52f40d5a9dd0f87038"},{url:"resources/dia_bg.txt",revision:"07a48a0f0710d06b67c8416a43c82abd"},{url:"resources/dia_bn.txt",revision:"eca376cf5d386ae7bf355320642718e6"},{url:"resources/dia_bs.txt",revision:"3eb3fcbe2631df0bd1265f74c8bc4ac7"},{url:"resources/dia_ca.txt",revision:"3ff92c0ce52f691f22cbaba5be40339b"},{url:"resources/dia_cs.txt",revision:"e0d135b6489371a8001550991844d912"},{url:"resources/dia_da.txt",revision:"e87b4847cb15ce4bae1dc34d3d66bd88"},{url:"resources/dia_de.txt",revision:"157e8d3c212296e10910157fd89a4df2"},{url:"resources/dia_el.txt",revision:"f2c8598a67914dc2c65416c7ab8c5ce2"},{url:"resources/dia_eo.txt",revision:"3774f7d616de9a25f44666a3bacfb3d3"},{url:"resources/dia_es.txt",revision:"11b83ee5fafe02125077def3a2a45156"},{url:"resources/dia_et.txt",revision:"ca8d60c90fb73a6d254ad526bcd6425d"},{url:"resources/dia_eu.txt",revision:"db60b7b22159aca2cf0d44c709cdffe7"},{url:"resources/dia_fa.txt",revision:"290cec7d5744b28cce85a9d148315ee7"},{url:"resources/dia_fi.txt",revision:"0246ab13e72267e2ec8f563159d3f053"},{url:"resources/dia_fil.txt",revision:"76a53d7209a44884d672b1d2fa15fba9"},{url:"resources/dia_fr.txt",revision:"95e0e458be00a700398c3754518f4044"},{url:"resources/dia_gl.txt",revision:"20186b103bdec339b042697645fb0bd2"},{url:"resources/dia_gu.txt",revision:"8a92bbfc1933a9e7fcfe28a9bf7b9b00"},{url:"resources/dia_he.txt",revision:"844f74dfbf52588aac9b2f3863439ce6"},{url:"resources/dia_hi.txt",revision:"6b8b6f55d83f0339591c1f219bd2e290"},{url:"resources/dia_hr.txt",revision:"f02c352eb31dee6f083aba1730f7bea7"},{url:"resources/dia_hu.txt",revision:"c3b3ca19d942bdec30c0efbb013885b7"},{url:"resources/dia_id.txt",revision:"3018232f8bd11cdeb117e2a612e4a503"},{url:"resources/dia_it.txt",revision:"8646353feb6aae64a80b954c0f9d3684"},{url:"resources/dia_ja.txt",revision:"b61f27fb2665297f6020c56f7a6ecaa8"},{url:"resources/dia_kn.txt",revision:"5c7a4a9d95cf4d4d7ef155eb54d72513"},{url:"resources/dia_ko.txt",revision:"0aa329ae4fdb62d187e12c2069bc95b1"},{url:"resources/dia_lt.txt",revision:"310ad0092e511889fd01ece4424bb323"},{url:"resources/dia_lv.txt",revision:"912c0e99aa02b94bb7fdd058c807a383"},{url:"resources/dia_ml.txt",revision:"5c4ed1edc68803c275f59cb6879a7112"},{url:"resources/dia_mr.txt",revision:"577ee6d3d28c1c94b433c12929810bc5"},{url:"resources/dia_ms.txt",revision:"ba5f7cef8703ee7a6d6e2b15d9bb2ce5"},{url:"resources/dia_my.txt",revision:"2d1a381fcc4cff55487c6647efedf6de"},{url:"resources/dia_nl.txt",revision:"091c04518d5ddf6e5c0a8b070a517208"},{url:"resources/dia_no.txt",revision:"7636c260d2f66aaa6e06fbde8d736c44"},{url:"resources/dia_pl.txt",revision:"cdfb2e07d87fcbcba9a922a9c875d2f7"},{url:"resources/dia_pt-br.txt",revision:"628d4747e428527edcfc147ac0cb5200"},{url:"resources/dia_pt.txt",revision:"e7a6e66aeb8ab969bd75be2aeba08807"},{url:"resources/dia_ro.txt",revision:"2f9c2135656bb37810f10e4c509f9d2b"},{url:"resources/dia_ru.txt",revision:"a5bf0195a040128e0ba2b99cd08fbf6e"},{url:"resources/dia_si.txt",revision:"2d1a381fcc4cff55487c6647efedf6de"},{url:"resources/dia_sk.txt",revision:"76926b99f970f18198d8642e7e022e4f"},{url:"resources/dia_sl.txt",revision:"0764f1e7986f6425729d8c82080748af"},{url:"resources/dia_sr.txt",revision:"030231d3e4929a45f105c3dc7222b787"},{url:"resources/dia_sv.txt",revision:"aeded3e25bf42dcf70fd7293786cb091"},{url:"resources/dia_sw.txt",revision:"731789c9f34806a9cb686910fb3b7919"},{url:"resources/dia_ta.txt",revision:"d80cd510c2f15dc5fb0c5057584fcd6e"},{url:"resources/dia_te.txt",revision:"457769728267b87b24cdbbf40adbac5c"},{url:"resources/dia_th.txt",revision:"361fcb3f167c2b64f310a52a41855f9f"},{url:"resources/dia_tr.txt",revision:"3c4133fcf6f1ac357d237042549647a0"},{url:"resources/dia_uk.txt",revision:"015e2adbd98db8eb2e4eb52db63436d6"},{url:"resources/dia_vi.txt",revision:"214984d7072d1bfd9c19eb5ed2c0a5f1"},{url:"resources/dia_zh-tw.txt",revision:"52efef0f0e0daacc72f260cb1493752a"},{url:"resources/dia_zh.txt",revision:"a4eb062bae9361954b50a50b3418cfe3"},{url:"favicon.ico",revision:"fab2d88b37c72d83607527573de45281"},{url:"images/manifest.json",revision:"c6236bde53ed79aaaec60a1aca8ee2ef"},{url:"images/logo.png",revision:"89630b64b911ebe0daa3dfe442087cfa"},{url:"images/drawlogo.svg",revision:"4bf4d14ebcf072d8bd4c5a1c89e88fc6"},{url:"images/drawlogo48.png",revision:"8b13428373aca67b895364d025f42417"},{url:"images/drawlogo-gray.svg",revision:"0aabacbc0873816e1e09e4736ae44c7d"},{url:"images/drawlogo-text-bottom.svg",revision:"f6c438823ab31f290940bd4feb8dd9c2"},{url:"images/default-user.jpg",revision:"2c399696a87c8921f12d2f9e1990cc6e"},{url:"images/logo-flat-small.png",revision:"4b178e59ff499d6dd1894fc498b59877"},{url:"images/apple-touch-icon.png",revision:"73da7989a23ce9a4be565ec65658a239"},{url:"images/favicon-16x16.png",revision:"1a79d5461a5d2bf21f6652e0ac20d6e5"},{url:"images/favicon-32x32.png",revision:"e3b92da2febe70bad5372f6f3474b034"},{url:"images/android-chrome-196x196.png",revision:"f8c045b2d7b1c719fda64edab04c415c"},{url:"images/android-chrome-512x512.png",revision:"959b5fac2453963ff6d60fb85e4b73fd"},{url:"images/delete.png",revision:"5f2350f2fd20f1a229637aed32ed8f29"},{url:"images/droptarget.png",revision:"bbf7f563fb6784de1ce96f329519b043"},{url:"images/help.png",revision:"9266c6c3915bd33c243d80037d37bf61"},{url:"images/download.png",revision:"35418dd7bd48d87502c71b578cc6c37f"},{url:"images/logo-flat.png",revision:"038070ab43aee6e54a791211859fc67b"},{url:"images/google-drive-logo.svg",revision:"5d9f2f5bbc7dcc252730a0072bb23059"},{url:"images/onedrive-logo.svg",revision:"3645b344ec0634c1290dd58d7dc87b97"},{url:"images/dropbox-logo.svg",revision:"e6be408c77cf9c82d41ac64fa854280a"},{url:"images/github-logo.svg",revision:"a1a999b69a275eac0cb918360ac05ae1"},{url:"images/gitlab-logo.svg",revision:"0faea8c818899e58533e153c44b10517"},{url:"images/trello-logo.svg",revision:"006fd0d7d70d7e95dc691674cb12e044"},{url:"images/osa_drive-harddisk.png",revision:"b954e1ae772087c5b4c6ae797e1f9649"},{url:"images/osa_database.png",revision:"c350d9d9b95f37b6cfe798b40ede5fb0"},{url:"images/google-drive-logo-white.svg",revision:"f329d8b1be7778515a85b93fc35d9f26"},{url:"images/dropbox-logo-white.svg",revision:"4ea8299ac3bc31a16f199ee3aec223bf"},{url:"images/onedrive-logo-white.svg",revision:"b3602fa0fc947009cff3f33a581cff4d"},{url:"images/github-logo-white.svg",revision:"537b1127b3ca0f95b45782d1304fb77a"},{url:"images/gitlab-logo-white.svg",revision:"5fede9ac2f394c716b8c23e3fddc3910"},{url:"images/trello-logo-white-orange.svg",revision:"e2a0a52ba3766682f138138d10a75eb5"},{url:"images/logo-confluence.png",revision:"ed1e55d44ae5eba8f999aba2c93e8331"},{url:"images/logo-jira.png",revision:"f8d460555a0d1f87cfd901e940666629"},{url:"images/clear.gif",revision:"db13c778e4382e0b55258d0f811d5d70"},{url:"images/spin.gif",revision:"487cbb40b9ced439aa1ad914e816d773"},{url:"images/checkmark.gif",revision:"ba764ce62f2bf952df5bbc2bb4d381c5"},{url:"images/hs.png",revision:"fefa1a03d92ebad25c88dca94a0b63db"},{url:"images/aui-wait.gif",revision:"5a474bcbd8d2f2826f03d10ea44bf60e"},{url:"mxgraph/css/common.css",revision:"b5b7280ec98671bb6c3847a36bc7ea12"},{url:"mxgraph/images/expanded.gif",revision:"2b67c2c035af1e9a5cc814f0d22074cf"},{url:"mxgraph/images/collapsed.gif",revision:"73cc826da002a3d740ca4ce6ec5c1f4a"},{url:"mxgraph/images/maximize.gif",revision:"5cd13d6925493ab51e876694cc1c2ec2"},{url:"mxgraph/images/minimize.gif",revision:"8957741b9b0f86af9438775f2aadbb54"},{url:"mxgraph/images/close.gif",revision:"8b84669812ac7382984fca35de8da48b"},{url:"mxgraph/images/resize.gif",revision:"a6477612b3567a34033f9cac6184eed3"},{url:"mxgraph/images/separator.gif",revision:"7819742ff106c97da7a801c2372bbbe5"},{url:"mxgraph/images/window.gif",revision:"fd9a21dd4181f98052a202a0a01f18ab"},{url:"mxgraph/images/window-title.gif",revision:"3fb1d6c43246cdf991a11dfe826dfe99"},{url:"mxgraph/images/button.gif",revision:"00759bdc3ad218fa739f584369541809"},{url:"mxgraph/images/point.gif",revision:"83a43717b284902442620f61bc4e9fa6"}],{ignoreURLParametersMatching:[/.*/]})}));
+if(!self.define){const e=e=>{"require"!==e&&(e+=".js");let i=Promise.resolve();return r[e]||(i=new Promise((async i=>{if("document"in self){const r=document.createElement("script");r.src=e,document.head.appendChild(r),r.onload=i}else importScripts(e),i()}))),i.then((()=>{if(!r[e])throw new Error(`Module ${e} didn’t register its module`);return r[e]}))},i=(i,r)=>{Promise.all(i.map(e)).then((e=>r(1===e.length?e[0]:e)))},r={require:Promise.resolve(i)};self.define=(i,a,c)=>{r[i]||(r[i]=Promise.resolve().then((()=>{let r={};const s={uri:location.origin+i.slice(1)};return Promise.all(a.map((i=>{switch(i){case"exports":return r;case"module":return s;default:return e(i)}}))).then((e=>{const i=c(...e);return r.default||(r.default=i),r}))})))}}define("./service-worker.js",["./workbox-12cca165"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"js/app.min.js",revision:"46c8f865f0f69566b7e412291df971d6"},{url:"js/extensions.min.js",revision:"5f96202f6da7fac09289ee6738d036b9"},{url:"js/stencils.min.js",revision:"7a7bde0d8b6615eee4ebd215d2b9d761"},{url:"js/shapes-14-6-5.min.js",revision:"93cb7d82e382a16b54eb307374b1b760"},{url:"js/math-print.js",revision:"9d98c920695f6c3395da4b68f723e60a"},{url:"index.html",revision:"8b5b1cf07fc74454cf354717e9d18534"},{url:"open.html",revision:"d71816b3b00e769fc6019fcdd6921662"},{url:"styles/fonts/ArchitectsDaughter-Regular.ttf",revision:"31c2153c0530e32553b31a49b3d70736"},{url:"styles/grapheditor.css",revision:"748da0cd0a068a52eac70ee2b2c194fe"},{url:"styles/atlas.css",revision:"e8152cda9233d3a3af017422993abfce"},{url:"styles/dark.css",revision:"3179f617dd02efd2cefeb8c06f965880"},{url:"js/dropbox/Dropbox-sdk.min.js",revision:"4b9842892aa37b156db0a8364b7a83b0"},{url:"js/onedrive/OneDrive.js",revision:"505e8280346666f7ee801bc59521fa67"},{url:"js/viewer-static.min.js",revision:"a9d263399bd80fd5e22af89bbb5e5788"},{url:"connect/jira/editor-1-3-3.html",revision:"a2b0e7267a08a838f3cc404eba831ec0"},{url:"connect/jira/viewerPanel-1-3-12.html",revision:"2ce6e99d95113e9ca6b24343cea202e0"},{url:"connect/jira/fullScreenViewer-1-3-3.html",revision:"ba7ece2dfb2833b72f97280d7092f25e"},{url:"connect/jira/viewerPanel.js",revision:"6e9412c359a21b86dc7c5128bf6208d4"},{url:"connect/jira/spinner.gif",revision:"7d857ab9d86123e93d74d48e958fe743"},{url:"connect/jira/editor.js",revision:"01caa325f3ad3f6565e0b4228907fb63"},{url:"connect/jira/fullscreen-viewer-init.js",revision:"197ed5837ed27992688fc424699a9a78"},{url:"connect/jira/fullscreen-viewer.js",revision:"4e0775a6c156a803e777870623ac7c3e"},{url:"plugins/connectJira.js",revision:"4cefa13414e0d406550f3c073923080c"},{url:"plugins/cConf-comments.js",revision:"c787357209cff2986dcca567b599e2ef"},{url:"plugins/cConf-1-4-8.js",revision:"d7577d8f21716423852c343f027c4c27"},{url:"connect/confluence/connectUtils-1-4-8.js",revision:"4d5f987bbe6afbb70aca28601df1eafd"},{url:"connect/new_common/cac.js",revision:"3d8c436c566db645fb1e6e6ba9f69bbc"},{url:"connect/gdrive_common/gac.js",revision:"38f1df3ecc4d78290493f47e62202138"},{url:"connect/onedrive_common/ac.js",revision:"887d3ac605a7bb297067537e7c1f5686"},{url:"connect/confluence/viewer-init.js",revision:"4a60c6c805cab7bc782f1e52f7818d9f"},{url:"connect/confluence/viewer.js",revision:"37543b7bdde2bdf515584934e286366c"},{url:"connect/confluence/viewer-1-4-42.html",revision:"c7b38b3af4eb7a58ab6dc4791216530e"},{url:"connect/confluence/macroEditor-1-4-8.html",revision:"8cd74a2fb60bf2e3e86026d66107cf11"},{url:"connect/confluence/includeDiagram-1-4-8.js",revision:"4c7730a67df6bacf5ca6d8a40cfd6e87"},{url:"connect/confluence/includeDiagram.html",revision:"c03c89622d22227313645900af4e3c3d"},{url:"connect/confluence/macro-editor.js",revision:"e273a48b8e81faac4530bf1a68d75aa0"},{url:"math/MathJax.js",revision:"b2c103388b71bb3d11cbf9aa45fe9b68"},{url:"math/config/TeX-MML-AM_SVG-full.js",revision:"d5cb8ac04050983170ae4af145bc66ff"},{url:"math/jax/output/SVG/fonts/TeX/fontdata.js",revision:"495e5a410955d1b6178870e605890ede"},{url:"math/jax/element/mml/optable/BasicLatin.js",revision:"cac9b2e71382e62270baa55fab07cc13"},{url:"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js",revision:"e3e5e4d5924beed29f0844550b5c8f46"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js",revision:"0767cbad7275b53da128e7e5e1109f7c"},{url:"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js",revision:"346302a5c5ee00e01c302148c56dbfe3"},{url:"resources/dia.txt",revision:"0ded293b93bc0fa98d99c234514ffe6f"},{url:"resources/dia_am.txt",revision:"0386be52b38f9f77437cb749e7b30939"},{url:"resources/dia_ar.txt",revision:"fd5174b2cac2aaa8335b2db4314978c6"},{url:"resources/dia_bg.txt",revision:"cb4abed85ba47ad248a68d53f357644a"},{url:"resources/dia_bn.txt",revision:"7aa9263b4ed1645bccca489c34d1b490"},{url:"resources/dia_bs.txt",revision:"1c352675c508c5a2cf39b87bd2ef27c4"},{url:"resources/dia_ca.txt",revision:"832c2cd5ec2e83f205f33e3edb9ecfac"},{url:"resources/dia_cs.txt",revision:"94103432f3d4097252b5485c237a0bad"},{url:"resources/dia_da.txt",revision:"c1b5de15635e4eac17f81ad1d561b134"},{url:"resources/dia_de.txt",revision:"1fc377a6cb1ee597db29162c1856cf98"},{url:"resources/dia_el.txt",revision:"ed520e70ae83056d7ee4caac5bf425e6"},{url:"resources/dia_eo.txt",revision:"5dda2a256c4e6bb50a02f0203da58e77"},{url:"resources/dia_es.txt",revision:"c1bc1e3185f212e6b6328d2a2c0a2479"},{url:"resources/dia_et.txt",revision:"261d74899244afc9bd2651dea3febe6d"},{url:"resources/dia_eu.txt",revision:"f8548baadeeaf48f163e402c58be8aeb"},{url:"resources/dia_fa.txt",revision:"11631d635e20991bec78d87a5f34bbeb"},{url:"resources/dia_fi.txt",revision:"611479288eb8bf0e321a1243ef70cb24"},{url:"resources/dia_fil.txt",revision:"61fd3df3b53d13a54208086cb555855f"},{url:"resources/dia_fr.txt",revision:"fc7ce084819cedec0d3131fa8a240aee"},{url:"resources/dia_gl.txt",revision:"b3daa85b59cedcd5efa5ef8d05716263"},{url:"resources/dia_gu.txt",revision:"3974a5a12435e997742b48099cfac4c4"},{url:"resources/dia_he.txt",revision:"c134b0633bec9651fc9471dcd8c904bd"},{url:"resources/dia_hi.txt",revision:"951440d0e03b03c550d21132e6498997"},{url:"resources/dia_hr.txt",revision:"ed5794501d1509dd8b60a4a6c02ea221"},{url:"resources/dia_hu.txt",revision:"0431f03750e5f3283e01da9dc047f360"},{url:"resources/dia_id.txt",revision:"a0789a391b5032a280a726ab7641f4b7"},{url:"resources/dia_it.txt",revision:"b505031dda16cfbeefab270e450f29fb"},{url:"resources/dia_ja.txt",revision:"ec71356fbc19358ad99f9dbcad33e28d"},{url:"resources/dia_kn.txt",revision:"220dc6008a16bd7e00cbd70bcb93b2e8"},{url:"resources/dia_ko.txt",revision:"9b22c4ab483814e3d4debd3321a2e4c0"},{url:"resources/dia_lt.txt",revision:"4dcbddf3f49e35b62ddc1200131aee9e"},{url:"resources/dia_lv.txt",revision:"d410f46d3c00871efa8ba53aae905084"},{url:"resources/dia_ml.txt",revision:"28b064931ddee9ddc61ca64b477b6dac"},{url:"resources/dia_mr.txt",revision:"2c9d39a0b885262b4edf1b11cddd2a44"},{url:"resources/dia_ms.txt",revision:"981af732b25d1bdcc77225ef4dec68c1"},{url:"resources/dia_my.txt",revision:"0ded293b93bc0fa98d99c234514ffe6f"},{url:"resources/dia_nl.txt",revision:"c0d4ccd2bb84a3c97bbc21c3fb083db0"},{url:"resources/dia_no.txt",revision:"de0fa32e852088266689634982544132"},{url:"resources/dia_pl.txt",revision:"0428b94d632e855f85fd774665c4d7da"},{url:"resources/dia_pt-br.txt",revision:"1bfb74139980be96c7ca73c9c269b895"},{url:"resources/dia_pt.txt",revision:"7cae74a83b336db7c307358dd2caf54b"},{url:"resources/dia_ro.txt",revision:"f4c0e8f1d200820703b5d28d53ece90c"},{url:"resources/dia_ru.txt",revision:"aac811d2ade33c58691d685e77ec7093"},{url:"resources/dia_si.txt",revision:"0ded293b93bc0fa98d99c234514ffe6f"},{url:"resources/dia_sk.txt",revision:"bfce32ad76e5b4e9464332d26e6fd4ad"},{url:"resources/dia_sl.txt",revision:"48fd88ffeb0bb831ea985dbaf75c1831"},{url:"resources/dia_sr.txt",revision:"b04259b778457fa9e91620cf892344ac"},{url:"resources/dia_sv.txt",revision:"6c8db8078b4efc5d7d6c955c5c6c9a34"},{url:"resources/dia_sw.txt",revision:"0e7df86830bad298c6e010e1e9c1e92f"},{url:"resources/dia_ta.txt",revision:"23213ee18dce71aad11e60c18884799d"},{url:"resources/dia_te.txt",revision:"2ad5fbf0f5d537e22ddf88c756a02159"},{url:"resources/dia_th.txt",revision:"1624ad9640855d610a8adb1be58357ca"},{url:"resources/dia_tr.txt",revision:"dd2f8c2f69842c14ccb6bbd100acb4a9"},{url:"resources/dia_uk.txt",revision:"474ca24fb6d4f6072dc294e2364f454d"},{url:"resources/dia_vi.txt",revision:"9a629f0c5a51a2d6e37674dcd5afbe03"},{url:"resources/dia_zh-tw.txt",revision:"548b1ca868393ec747c390ef7932063c"},{url:"resources/dia_zh.txt",revision:"dd32a7b9c3808f46c46cb3b431e95b05"},{url:"favicon.ico",revision:"fab2d88b37c72d83607527573de45281"},{url:"images/manifest.json",revision:"c6236bde53ed79aaaec60a1aca8ee2ef"},{url:"images/logo.png",revision:"89630b64b911ebe0daa3dfe442087cfa"},{url:"images/drawlogo.svg",revision:"4bf4d14ebcf072d8bd4c5a1c89e88fc6"},{url:"images/drawlogo48.png",revision:"8b13428373aca67b895364d025f42417"},{url:"images/drawlogo-gray.svg",revision:"0aabacbc0873816e1e09e4736ae44c7d"},{url:"images/drawlogo-text-bottom.svg",revision:"f6c438823ab31f290940bd4feb8dd9c2"},{url:"images/default-user.jpg",revision:"2c399696a87c8921f12d2f9e1990cc6e"},{url:"images/logo-flat-small.png",revision:"4b178e59ff499d6dd1894fc498b59877"},{url:"images/apple-touch-icon.png",revision:"73da7989a23ce9a4be565ec65658a239"},{url:"images/favicon-16x16.png",revision:"1a79d5461a5d2bf21f6652e0ac20d6e5"},{url:"images/favicon-32x32.png",revision:"e3b92da2febe70bad5372f6f3474b034"},{url:"images/android-chrome-196x196.png",revision:"f8c045b2d7b1c719fda64edab04c415c"},{url:"images/android-chrome-512x512.png",revision:"959b5fac2453963ff6d60fb85e4b73fd"},{url:"images/delete.png",revision:"5f2350f2fd20f1a229637aed32ed8f29"},{url:"images/droptarget.png",revision:"bbf7f563fb6784de1ce96f329519b043"},{url:"images/help.png",revision:"9266c6c3915bd33c243d80037d37bf61"},{url:"images/download.png",revision:"35418dd7bd48d87502c71b578cc6c37f"},{url:"images/logo-flat.png",revision:"038070ab43aee6e54a791211859fc67b"},{url:"images/google-drive-logo.svg",revision:"5d9f2f5bbc7dcc252730a0072bb23059"},{url:"images/onedrive-logo.svg",revision:"3645b344ec0634c1290dd58d7dc87b97"},{url:"images/dropbox-logo.svg",revision:"e6be408c77cf9c82d41ac64fa854280a"},{url:"images/github-logo.svg",revision:"a1a999b69a275eac0cb918360ac05ae1"},{url:"images/gitlab-logo.svg",revision:"0faea8c818899e58533e153c44b10517"},{url:"images/trello-logo.svg",revision:"006fd0d7d70d7e95dc691674cb12e044"},{url:"images/osa_drive-harddisk.png",revision:"b954e1ae772087c5b4c6ae797e1f9649"},{url:"images/osa_database.png",revision:"c350d9d9b95f37b6cfe798b40ede5fb0"},{url:"images/google-drive-logo-white.svg",revision:"f329d8b1be7778515a85b93fc35d9f26"},{url:"images/dropbox-logo-white.svg",revision:"4ea8299ac3bc31a16f199ee3aec223bf"},{url:"images/onedrive-logo-white.svg",revision:"b3602fa0fc947009cff3f33a581cff4d"},{url:"images/github-logo-white.svg",revision:"537b1127b3ca0f95b45782d1304fb77a"},{url:"images/gitlab-logo-white.svg",revision:"5fede9ac2f394c716b8c23e3fddc3910"},{url:"images/trello-logo-white-orange.svg",revision:"e2a0a52ba3766682f138138d10a75eb5"},{url:"images/logo-confluence.png",revision:"ed1e55d44ae5eba8f999aba2c93e8331"},{url:"images/logo-jira.png",revision:"f8d460555a0d1f87cfd901e940666629"},{url:"images/clear.gif",revision:"db13c778e4382e0b55258d0f811d5d70"},{url:"images/spin.gif",revision:"487cbb40b9ced439aa1ad914e816d773"},{url:"images/checkmark.gif",revision:"ba764ce62f2bf952df5bbc2bb4d381c5"},{url:"images/hs.png",revision:"fefa1a03d92ebad25c88dca94a0b63db"},{url:"images/aui-wait.gif",revision:"5a474bcbd8d2f2826f03d10ea44bf60e"},{url:"mxgraph/css/common.css",revision:"b5b7280ec98671bb6c3847a36bc7ea12"},{url:"mxgraph/images/expanded.gif",revision:"2b67c2c035af1e9a5cc814f0d22074cf"},{url:"mxgraph/images/collapsed.gif",revision:"73cc826da002a3d740ca4ce6ec5c1f4a"},{url:"mxgraph/images/maximize.gif",revision:"5cd13d6925493ab51e876694cc1c2ec2"},{url:"mxgraph/images/minimize.gif",revision:"8957741b9b0f86af9438775f2aadbb54"},{url:"mxgraph/images/close.gif",revision:"8b84669812ac7382984fca35de8da48b"},{url:"mxgraph/images/resize.gif",revision:"a6477612b3567a34033f9cac6184eed3"},{url:"mxgraph/images/separator.gif",revision:"7819742ff106c97da7a801c2372bbbe5"},{url:"mxgraph/images/window.gif",revision:"fd9a21dd4181f98052a202a0a01f18ab"},{url:"mxgraph/images/window-title.gif",revision:"3fb1d6c43246cdf991a11dfe826dfe99"},{url:"mxgraph/images/button.gif",revision:"00759bdc3ad218fa739f584369541809"},{url:"mxgraph/images/point.gif",revision:"83a43717b284902442620f61bc4e9fa6"}],{ignoreURLParametersMatching:[/.*/]})}));
//# sourceMappingURL=service-worker.js.map
diff --git a/src/main/webapp/service-worker.js.map b/src/main/webapp/service-worker.js.map
index 6c7e93c9..0323be4e 100644
--- a/src/main/webapp/service-worker.js.map
+++ b/src/main/webapp/service-worker.js.map
@@ -1 +1 @@
-{"version":3,"file":"service-worker.js","sources":["../../../../../../../tmp/572083a8df8d45c56cbd27f4f8206ed3/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.18.3/x64/lib/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"js/app.min.js\",\n \"revision\": \"7a02cbad6fad3e0ad9f27fbe1eeb488a\"\n },\n {\n \"url\": \"js/extensions.min.js\",\n \"revision\": \"5f96202f6da7fac09289ee6738d036b9\"\n },\n {\n \"url\": \"js/stencils.min.js\",\n \"revision\": \"7a7bde0d8b6615eee4ebd215d2b9d761\"\n },\n {\n \"url\": \"js/shapes-14-6-5.min.js\",\n \"revision\": \"93cb7d82e382a16b54eb307374b1b760\"\n },\n {\n \"url\": \"js/math-print.js\",\n \"revision\": \"9d98c920695f6c3395da4b68f723e60a\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"8b5b1cf07fc74454cf354717e9d18534\"\n },\n {\n \"url\": \"open.html\",\n \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n },\n {\n \"url\": \"styles/fonts/ArchitectsDaughter-Regular.ttf\",\n \"revision\": \"31c2153c0530e32553b31a49b3d70736\"\n },\n {\n \"url\": \"styles/grapheditor.css\",\n \"revision\": \"748da0cd0a068a52eac70ee2b2c194fe\"\n },\n {\n \"url\": \"styles/atlas.css\",\n \"revision\": \"e8152cda9233d3a3af017422993abfce\"\n },\n {\n \"url\": \"styles/dark.css\",\n \"revision\": \"3179f617dd02efd2cefeb8c06f965880\"\n },\n {\n \"url\": \"js/dropbox/Dropbox-sdk.min.js\",\n \"revision\": \"4b9842892aa37b156db0a8364b7a83b0\"\n },\n {\n \"url\": \"js/onedrive/OneDrive.js\",\n \"revision\": \"505e8280346666f7ee801bc59521fa67\"\n },\n {\n \"url\": \"js/viewer-static.min.js\",\n \"revision\": \"0de36bcab6c523c1f6a23af1db6ad524\"\n },\n {\n \"url\": \"connect/jira/editor-1-3-3.html\",\n \"revision\": \"a2b0e7267a08a838f3cc404eba831ec0\"\n },\n {\n \"url\": \"connect/jira/viewerPanel-1-3-12.html\",\n \"revision\": \"2ce6e99d95113e9ca6b24343cea202e0\"\n },\n {\n \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n },\n {\n \"url\": \"connect/jira/viewerPanel.js\",\n \"revision\": \"6e9412c359a21b86dc7c5128bf6208d4\"\n },\n {\n \"url\": \"connect/jira/spinner.gif\",\n \"revision\": \"7d857ab9d86123e93d74d48e958fe743\"\n },\n {\n \"url\": \"connect/jira/editor.js\",\n \"revision\": \"01caa325f3ad3f6565e0b4228907fb63\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer-init.js\",\n \"revision\": \"197ed5837ed27992688fc424699a9a78\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer.js\",\n \"revision\": \"4e0775a6c156a803e777870623ac7c3e\"\n },\n {\n \"url\": \"plugins/connectJira.js\",\n \"revision\": \"4cefa13414e0d406550f3c073923080c\"\n },\n {\n \"url\": \"plugins/cConf-comments.js\",\n \"revision\": \"c787357209cff2986dcca567b599e2ef\"\n },\n {\n \"url\": \"plugins/cConf-1-4-8.js\",\n \"revision\": \"d7577d8f21716423852c343f027c4c27\"\n },\n {\n \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n \"revision\": \"d87bfe7445b9676b595ff2ceaec7bb9d\"\n },\n {\n \"url\": \"connect/new_common/cac.js\",\n \"revision\": \"3d8c436c566db645fb1e6e6ba9f69bbc\"\n },\n {\n \"url\": \"connect/gdrive_common/gac.js\",\n \"revision\": \"38f1df3ecc4d78290493f47e62202138\"\n },\n {\n \"url\": \"connect/onedrive_common/ac.js\",\n \"revision\": \"887d3ac605a7bb297067537e7c1f5686\"\n },\n {\n \"url\": \"connect/confluence/viewer-init.js\",\n \"revision\": \"4a60c6c805cab7bc782f1e52f7818d9f\"\n },\n {\n \"url\": \"connect/confluence/viewer.js\",\n \"revision\": \"bb9cf021b7bf90dad260b400a1eb4240\"\n },\n {\n \"url\": \"connect/confluence/viewer-1-4-42.html\",\n \"revision\": \"c7b38b3af4eb7a58ab6dc4791216530e\"\n },\n {\n \"url\": \"connect/confluence/macroEditor-1-4-8.html\",\n \"revision\": \"8cd74a2fb60bf2e3e86026d66107cf11\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram-1-4-8.js\",\n \"revision\": \"8b670f4b6ccde55358851da705ae884f\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram.html\",\n \"revision\": \"c03c89622d22227313645900af4e3c3d\"\n },\n {\n \"url\": \"connect/confluence/macro-editor.js\",\n \"revision\": \"e273a48b8e81faac4530bf1a68d75aa0\"\n },\n {\n \"url\": \"math/MathJax.js\",\n \"revision\": \"b2c103388b71bb3d11cbf9aa45fe9b68\"\n },\n {\n \"url\": \"math/config/TeX-MML-AM_SVG-full.js\",\n \"revision\": \"d5cb8ac04050983170ae4af145bc66ff\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/fontdata.js\",\n \"revision\": \"495e5a410955d1b6178870e605890ede\"\n },\n {\n \"url\": \"math/jax/element/mml/optable/BasicLatin.js\",\n \"revision\": \"cac9b2e71382e62270baa55fab07cc13\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js\",\n \"revision\": \"e3e5e4d5924beed29f0844550b5c8f46\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js\",\n \"revision\": \"0767cbad7275b53da128e7e5e1109f7c\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js\",\n \"revision\": \"346302a5c5ee00e01c302148c56dbfe3\"\n },\n {\n \"url\": \"resources/dia.txt\",\n \"revision\": \"2d1a381fcc4cff55487c6647efedf6de\"\n },\n {\n \"url\": \"resources/dia_am.txt\",\n \"revision\": \"de8965e0b14a200a24503b5d6d8fa40f\"\n },\n {\n \"url\": \"resources/dia_ar.txt\",\n \"revision\": \"d05cc111ac6bec52f40d5a9dd0f87038\"\n },\n {\n \"url\": \"resources/dia_bg.txt\",\n \"revision\": \"07a48a0f0710d06b67c8416a43c82abd\"\n },\n {\n \"url\": \"resources/dia_bn.txt\",\n \"revision\": \"eca376cf5d386ae7bf355320642718e6\"\n },\n {\n \"url\": \"resources/dia_bs.txt\",\n \"revision\": \"3eb3fcbe2631df0bd1265f74c8bc4ac7\"\n },\n {\n \"url\": \"resources/dia_ca.txt\",\n \"revision\": \"3ff92c0ce52f691f22cbaba5be40339b\"\n },\n {\n \"url\": \"resources/dia_cs.txt\",\n \"revision\": \"e0d135b6489371a8001550991844d912\"\n },\n {\n \"url\": \"resources/dia_da.txt\",\n \"revision\": \"e87b4847cb15ce4bae1dc34d3d66bd88\"\n },\n {\n \"url\": \"resources/dia_de.txt\",\n \"revision\": \"157e8d3c212296e10910157fd89a4df2\"\n },\n {\n \"url\": \"resources/dia_el.txt\",\n \"revision\": \"f2c8598a67914dc2c65416c7ab8c5ce2\"\n },\n {\n \"url\": \"resources/dia_eo.txt\",\n \"revision\": \"3774f7d616de9a25f44666a3bacfb3d3\"\n },\n {\n \"url\": \"resources/dia_es.txt\",\n \"revision\": \"11b83ee5fafe02125077def3a2a45156\"\n },\n {\n \"url\": \"resources/dia_et.txt\",\n \"revision\": \"ca8d60c90fb73a6d254ad526bcd6425d\"\n },\n {\n \"url\": \"resources/dia_eu.txt\",\n \"revision\": \"db60b7b22159aca2cf0d44c709cdffe7\"\n },\n {\n \"url\": \"resources/dia_fa.txt\",\n \"revision\": \"290cec7d5744b28cce85a9d148315ee7\"\n },\n {\n \"url\": \"resources/dia_fi.txt\",\n \"revision\": \"0246ab13e72267e2ec8f563159d3f053\"\n },\n {\n \"url\": \"resources/dia_fil.txt\",\n \"revision\": \"76a53d7209a44884d672b1d2fa15fba9\"\n },\n {\n \"url\": \"resources/dia_fr.txt\",\n \"revision\": \"95e0e458be00a700398c3754518f4044\"\n },\n {\n \"url\": \"resources/dia_gl.txt\",\n \"revision\": \"20186b103bdec339b042697645fb0bd2\"\n },\n {\n \"url\": \"resources/dia_gu.txt\",\n \"revision\": \"8a92bbfc1933a9e7fcfe28a9bf7b9b00\"\n },\n {\n \"url\": \"resources/dia_he.txt\",\n \"revision\": \"844f74dfbf52588aac9b2f3863439ce6\"\n },\n {\n \"url\": \"resources/dia_hi.txt\",\n \"revision\": \"6b8b6f55d83f0339591c1f219bd2e290\"\n },\n {\n \"url\": \"resources/dia_hr.txt\",\n \"revision\": \"f02c352eb31dee6f083aba1730f7bea7\"\n },\n {\n \"url\": \"resources/dia_hu.txt\",\n \"revision\": \"c3b3ca19d942bdec30c0efbb013885b7\"\n },\n {\n \"url\": \"resources/dia_id.txt\",\n \"revision\": \"3018232f8bd11cdeb117e2a612e4a503\"\n },\n {\n \"url\": \"resources/dia_it.txt\",\n \"revision\": \"8646353feb6aae64a80b954c0f9d3684\"\n },\n {\n \"url\": \"resources/dia_ja.txt\",\n \"revision\": \"b61f27fb2665297f6020c56f7a6ecaa8\"\n },\n {\n \"url\": \"resources/dia_kn.txt\",\n \"revision\": \"5c7a4a9d95cf4d4d7ef155eb54d72513\"\n },\n {\n \"url\": \"resources/dia_ko.txt\",\n \"revision\": \"0aa329ae4fdb62d187e12c2069bc95b1\"\n },\n {\n \"url\": \"resources/dia_lt.txt\",\n \"revision\": \"310ad0092e511889fd01ece4424bb323\"\n },\n {\n \"url\": \"resources/dia_lv.txt\",\n \"revision\": \"912c0e99aa02b94bb7fdd058c807a383\"\n },\n {\n \"url\": \"resources/dia_ml.txt\",\n \"revision\": \"5c4ed1edc68803c275f59cb6879a7112\"\n },\n {\n \"url\": \"resources/dia_mr.txt\",\n \"revision\": \"577ee6d3d28c1c94b433c12929810bc5\"\n },\n {\n \"url\": \"resources/dia_ms.txt\",\n \"revision\": \"ba5f7cef8703ee7a6d6e2b15d9bb2ce5\"\n },\n {\n \"url\": \"resources/dia_my.txt\",\n \"revision\": \"2d1a381fcc4cff55487c6647efedf6de\"\n },\n {\n \"url\": \"resources/dia_nl.txt\",\n \"revision\": \"091c04518d5ddf6e5c0a8b070a517208\"\n },\n {\n \"url\": \"resources/dia_no.txt\",\n \"revision\": \"7636c260d2f66aaa6e06fbde8d736c44\"\n },\n {\n \"url\": \"resources/dia_pl.txt\",\n \"revision\": \"cdfb2e07d87fcbcba9a922a9c875d2f7\"\n },\n {\n \"url\": \"resources/dia_pt-br.txt\",\n \"revision\": \"628d4747e428527edcfc147ac0cb5200\"\n },\n {\n \"url\": \"resources/dia_pt.txt\",\n \"revision\": \"e7a6e66aeb8ab969bd75be2aeba08807\"\n },\n {\n \"url\": \"resources/dia_ro.txt\",\n \"revision\": \"2f9c2135656bb37810f10e4c509f9d2b\"\n },\n {\n \"url\": \"resources/dia_ru.txt\",\n \"revision\": \"a5bf0195a040128e0ba2b99cd08fbf6e\"\n },\n {\n \"url\": \"resources/dia_si.txt\",\n \"revision\": \"2d1a381fcc4cff55487c6647efedf6de\"\n },\n {\n \"url\": \"resources/dia_sk.txt\",\n \"revision\": \"76926b99f970f18198d8642e7e022e4f\"\n },\n {\n \"url\": \"resources/dia_sl.txt\",\n \"revision\": \"0764f1e7986f6425729d8c82080748af\"\n },\n {\n \"url\": \"resources/dia_sr.txt\",\n \"revision\": \"030231d3e4929a45f105c3dc7222b787\"\n },\n {\n \"url\": \"resources/dia_sv.txt\",\n \"revision\": \"aeded3e25bf42dcf70fd7293786cb091\"\n },\n {\n \"url\": \"resources/dia_sw.txt\",\n \"revision\": \"731789c9f34806a9cb686910fb3b7919\"\n },\n {\n \"url\": \"resources/dia_ta.txt\",\n \"revision\": \"d80cd510c2f15dc5fb0c5057584fcd6e\"\n },\n {\n \"url\": \"resources/dia_te.txt\",\n \"revision\": \"457769728267b87b24cdbbf40adbac5c\"\n },\n {\n \"url\": \"resources/dia_th.txt\",\n \"revision\": \"361fcb3f167c2b64f310a52a41855f9f\"\n },\n {\n \"url\": \"resources/dia_tr.txt\",\n \"revision\": \"3c4133fcf6f1ac357d237042549647a0\"\n },\n {\n \"url\": \"resources/dia_uk.txt\",\n \"revision\": \"015e2adbd98db8eb2e4eb52db63436d6\"\n },\n {\n \"url\": \"resources/dia_vi.txt\",\n \"revision\": \"214984d7072d1bfd9c19eb5ed2c0a5f1\"\n },\n {\n \"url\": \"resources/dia_zh-tw.txt\",\n \"revision\": \"52efef0f0e0daacc72f260cb1493752a\"\n },\n {\n \"url\": \"resources/dia_zh.txt\",\n \"revision\": \"a4eb062bae9361954b50a50b3418cfe3\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"fab2d88b37c72d83607527573de45281\"\n },\n {\n \"url\": \"images/manifest.json\",\n \"revision\": \"c6236bde53ed79aaaec60a1aca8ee2ef\"\n },\n {\n \"url\": \"images/logo.png\",\n \"revision\": \"89630b64b911ebe0daa3dfe442087cfa\"\n },\n {\n \"url\": \"images/drawlogo.svg\",\n \"revision\": \"4bf4d14ebcf072d8bd4c5a1c89e88fc6\"\n },\n {\n \"url\": \"images/drawlogo48.png\",\n \"revision\": \"8b13428373aca67b895364d025f42417\"\n },\n {\n \"url\": \"images/drawlogo-gray.svg\",\n \"revision\": \"0aabacbc0873816e1e09e4736ae44c7d\"\n },\n {\n \"url\": \"images/drawlogo-text-bottom.svg\",\n \"revision\": \"f6c438823ab31f290940bd4feb8dd9c2\"\n },\n {\n \"url\": \"images/default-user.jpg\",\n \"revision\": \"2c399696a87c8921f12d2f9e1990cc6e\"\n },\n {\n \"url\": \"images/logo-flat-small.png\",\n \"revision\": \"4b178e59ff499d6dd1894fc498b59877\"\n },\n {\n \"url\": \"images/apple-touch-icon.png\",\n \"revision\": \"73da7989a23ce9a4be565ec65658a239\"\n },\n {\n \"url\": \"images/favicon-16x16.png\",\n \"revision\": \"1a79d5461a5d2bf21f6652e0ac20d6e5\"\n },\n {\n \"url\": \"images/favicon-32x32.png\",\n \"revision\": \"e3b92da2febe70bad5372f6f3474b034\"\n },\n {\n \"url\": \"images/android-chrome-196x196.png\",\n \"revision\": \"f8c045b2d7b1c719fda64edab04c415c\"\n },\n {\n \"url\": \"images/android-chrome-512x512.png\",\n \"revision\": \"959b5fac2453963ff6d60fb85e4b73fd\"\n },\n {\n \"url\": \"images/delete.png\",\n \"revision\": \"5f2350f2fd20f1a229637aed32ed8f29\"\n },\n {\n \"url\": \"images/droptarget.png\",\n \"revision\": \"bbf7f563fb6784de1ce96f329519b043\"\n },\n {\n \"url\": \"images/help.png\",\n \"revision\": \"9266c6c3915bd33c243d80037d37bf61\"\n },\n {\n \"url\": \"images/download.png\",\n \"revision\": \"35418dd7bd48d87502c71b578cc6c37f\"\n },\n {\n \"url\": \"images/logo-flat.png\",\n \"revision\": \"038070ab43aee6e54a791211859fc67b\"\n },\n {\n \"url\": \"images/google-drive-logo.svg\",\n \"revision\": \"5d9f2f5bbc7dcc252730a0072bb23059\"\n },\n {\n \"url\": \"images/onedrive-logo.svg\",\n \"revision\": \"3645b344ec0634c1290dd58d7dc87b97\"\n },\n {\n \"url\": \"images/dropbox-logo.svg\",\n \"revision\": \"e6be408c77cf9c82d41ac64fa854280a\"\n },\n {\n \"url\": \"images/github-logo.svg\",\n \"revision\": \"a1a999b69a275eac0cb918360ac05ae1\"\n },\n {\n \"url\": \"images/gitlab-logo.svg\",\n \"revision\": \"0faea8c818899e58533e153c44b10517\"\n },\n {\n \"url\": \"images/trello-logo.svg\",\n \"revision\": \"006fd0d7d70d7e95dc691674cb12e044\"\n },\n {\n \"url\": \"images/osa_drive-harddisk.png\",\n \"revision\": \"b954e1ae772087c5b4c6ae797e1f9649\"\n },\n {\n \"url\": \"images/osa_database.png\",\n \"revision\": \"c350d9d9b95f37b6cfe798b40ede5fb0\"\n },\n {\n \"url\": \"images/google-drive-logo-white.svg\",\n \"revision\": \"f329d8b1be7778515a85b93fc35d9f26\"\n },\n {\n \"url\": \"images/dropbox-logo-white.svg\",\n \"revision\": \"4ea8299ac3bc31a16f199ee3aec223bf\"\n },\n {\n \"url\": \"images/onedrive-logo-white.svg\",\n \"revision\": \"b3602fa0fc947009cff3f33a581cff4d\"\n },\n {\n \"url\": \"images/github-logo-white.svg\",\n \"revision\": \"537b1127b3ca0f95b45782d1304fb77a\"\n },\n {\n \"url\": \"images/gitlab-logo-white.svg\",\n \"revision\": \"5fede9ac2f394c716b8c23e3fddc3910\"\n },\n {\n \"url\": \"images/trello-logo-white-orange.svg\",\n \"revision\": \"e2a0a52ba3766682f138138d10a75eb5\"\n },\n {\n \"url\": \"images/logo-confluence.png\",\n \"revision\": \"ed1e55d44ae5eba8f999aba2c93e8331\"\n },\n {\n \"url\": \"images/logo-jira.png\",\n \"revision\": \"f8d460555a0d1f87cfd901e940666629\"\n },\n {\n \"url\": \"images/clear.gif\",\n \"revision\": \"db13c778e4382e0b55258d0f811d5d70\"\n },\n {\n \"url\": \"images/spin.gif\",\n \"revision\": \"487cbb40b9ced439aa1ad914e816d773\"\n },\n {\n \"url\": \"images/checkmark.gif\",\n \"revision\": \"ba764ce62f2bf952df5bbc2bb4d381c5\"\n },\n {\n \"url\": \"images/hs.png\",\n \"revision\": \"fefa1a03d92ebad25c88dca94a0b63db\"\n },\n {\n \"url\": \"images/aui-wait.gif\",\n \"revision\": \"5a474bcbd8d2f2826f03d10ea44bf60e\"\n },\n {\n \"url\": \"mxgraph/css/common.css\",\n \"revision\": \"b5b7280ec98671bb6c3847a36bc7ea12\"\n },\n {\n \"url\": \"mxgraph/images/expanded.gif\",\n \"revision\": \"2b67c2c035af1e9a5cc814f0d22074cf\"\n },\n {\n \"url\": \"mxgraph/images/collapsed.gif\",\n \"revision\": \"73cc826da002a3d740ca4ce6ec5c1f4a\"\n },\n {\n \"url\": \"mxgraph/images/maximize.gif\",\n \"revision\": \"5cd13d6925493ab51e876694cc1c2ec2\"\n },\n {\n \"url\": \"mxgraph/images/minimize.gif\",\n \"revision\": \"8957741b9b0f86af9438775f2aadbb54\"\n },\n {\n \"url\": \"mxgraph/images/close.gif\",\n \"revision\": \"8b84669812ac7382984fca35de8da48b\"\n },\n {\n \"url\": \"mxgraph/images/resize.gif\",\n \"revision\": \"a6477612b3567a34033f9cac6184eed3\"\n },\n {\n \"url\": \"mxgraph/images/separator.gif\",\n \"revision\": \"7819742ff106c97da7a801c2372bbbe5\"\n },\n {\n \"url\": \"mxgraph/images/window.gif\",\n \"revision\": \"fd9a21dd4181f98052a202a0a01f18ab\"\n },\n {\n \"url\": \"mxgraph/images/window-title.gif\",\n \"revision\": \"3fb1d6c43246cdf991a11dfe826dfe99\"\n },\n {\n \"url\": \"mxgraph/images/button.gif\",\n \"revision\": \"00759bdc3ad218fa739f584369541809\"\n },\n {\n \"url\": \"mxgraph/images/point.gif\",\n \"revision\": \"83a43717b284902442620f61bc4e9fa6\"\n }\n], {\n \"ignoreURLParametersMatching\": [/.*/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,oCAY2B,CAClC,KACS,yBACK,oCAEd,KACS,gCACK,oCAEd,KACS,8BACK,oCAEd,KACS,mCACK,oCAEd,KACS,4BACK,oCAEd,KACS,sBACK,oCAEd,KACS,qBACK,oCAEd,KACS,uDACK,oCAEd,KACS,kCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,mCACK,oCAEd,KACS,0CACK,oCAEd,KACS,gDACK,oCAEd,KACS,oDACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kDACK,oCAEd,KACS,6CACK,oCAEd,KACS,kCACK,oCAEd,KACS,qCACK,oCAEd,KACS,kCACK,oCAEd,KACS,oDACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,yCACK,oCAEd,KACS,6CACK,oCAEd,KACS,wCACK,oCAEd,KACS,iDACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,kDACK,oCAEd,KACS,8CACK,oCAEd,KACS,2BACK,oCAEd,KACS,8CACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,+DACK,oCAEd,KACS,2EACK,oCAEd,KACS,wEACK,oCAEd,KACS,6BACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,iCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,uBACK,oCAEd,KACS,gCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,iCACK,oCAEd,KACS,oCACK,oCAEd,KACS,2CACK,oCAEd,KACS,mCACK,oCAEd,KACS,sCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,oCACK,oCAEd,KACS,6CACK,oCAEd,KACS,6CACK,oCAEd,KACS,6BACK,oCAEd,KACS,iCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,gCACK,oCAEd,KACS,wCACK,oCAEd,KACS,oCACK,oCAEd,KACS,mCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,8CACK,oCAEd,KACS,yCACK,oCAEd,KACS,0CACK,oCAEd,KACS,wCACK,oCAEd,KACS,wCACK,oCAEd,KACS,+CACK,oCAEd,KACS,sCACK,oCAEd,KACS,gCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,gCACK,oCAEd,KACS,yBACK,oCAEd,KACS,+BACK,oCAEd,KACS,kCACK,oCAEd,KACS,uCACK,oCAEd,KACS,wCACK,oCAEd,KACS,uCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,qCACK,oCAEd,KACS,2CACK,oCAEd,KACS,qCACK,oCAEd,KACS,oCACK,qCAEb,6BAC8B,CAAC"} \ No newline at end of file
+{"version":3,"file":"service-worker.js","sources":["../../../../../../../tmp/ef7316729cb45ef49f2ee14e9874af96/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/opt/hostedtoolcache/node/14.18.3/x64/lib/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"js/app.min.js\",\n \"revision\": \"46c8f865f0f69566b7e412291df971d6\"\n },\n {\n \"url\": \"js/extensions.min.js\",\n \"revision\": \"5f96202f6da7fac09289ee6738d036b9\"\n },\n {\n \"url\": \"js/stencils.min.js\",\n \"revision\": \"7a7bde0d8b6615eee4ebd215d2b9d761\"\n },\n {\n \"url\": \"js/shapes-14-6-5.min.js\",\n \"revision\": \"93cb7d82e382a16b54eb307374b1b760\"\n },\n {\n \"url\": \"js/math-print.js\",\n \"revision\": \"9d98c920695f6c3395da4b68f723e60a\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"8b5b1cf07fc74454cf354717e9d18534\"\n },\n {\n \"url\": \"open.html\",\n \"revision\": \"d71816b3b00e769fc6019fcdd6921662\"\n },\n {\n \"url\": \"styles/fonts/ArchitectsDaughter-Regular.ttf\",\n \"revision\": \"31c2153c0530e32553b31a49b3d70736\"\n },\n {\n \"url\": \"styles/grapheditor.css\",\n \"revision\": \"748da0cd0a068a52eac70ee2b2c194fe\"\n },\n {\n \"url\": \"styles/atlas.css\",\n \"revision\": \"e8152cda9233d3a3af017422993abfce\"\n },\n {\n \"url\": \"styles/dark.css\",\n \"revision\": \"3179f617dd02efd2cefeb8c06f965880\"\n },\n {\n \"url\": \"js/dropbox/Dropbox-sdk.min.js\",\n \"revision\": \"4b9842892aa37b156db0a8364b7a83b0\"\n },\n {\n \"url\": \"js/onedrive/OneDrive.js\",\n \"revision\": \"505e8280346666f7ee801bc59521fa67\"\n },\n {\n \"url\": \"js/viewer-static.min.js\",\n \"revision\": \"a9d263399bd80fd5e22af89bbb5e5788\"\n },\n {\n \"url\": \"connect/jira/editor-1-3-3.html\",\n \"revision\": \"a2b0e7267a08a838f3cc404eba831ec0\"\n },\n {\n \"url\": \"connect/jira/viewerPanel-1-3-12.html\",\n \"revision\": \"2ce6e99d95113e9ca6b24343cea202e0\"\n },\n {\n \"url\": \"connect/jira/fullScreenViewer-1-3-3.html\",\n \"revision\": \"ba7ece2dfb2833b72f97280d7092f25e\"\n },\n {\n \"url\": \"connect/jira/viewerPanel.js\",\n \"revision\": \"6e9412c359a21b86dc7c5128bf6208d4\"\n },\n {\n \"url\": \"connect/jira/spinner.gif\",\n \"revision\": \"7d857ab9d86123e93d74d48e958fe743\"\n },\n {\n \"url\": \"connect/jira/editor.js\",\n \"revision\": \"01caa325f3ad3f6565e0b4228907fb63\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer-init.js\",\n \"revision\": \"197ed5837ed27992688fc424699a9a78\"\n },\n {\n \"url\": \"connect/jira/fullscreen-viewer.js\",\n \"revision\": \"4e0775a6c156a803e777870623ac7c3e\"\n },\n {\n \"url\": \"plugins/connectJira.js\",\n \"revision\": \"4cefa13414e0d406550f3c073923080c\"\n },\n {\n \"url\": \"plugins/cConf-comments.js\",\n \"revision\": \"c787357209cff2986dcca567b599e2ef\"\n },\n {\n \"url\": \"plugins/cConf-1-4-8.js\",\n \"revision\": \"d7577d8f21716423852c343f027c4c27\"\n },\n {\n \"url\": \"connect/confluence/connectUtils-1-4-8.js\",\n \"revision\": \"4d5f987bbe6afbb70aca28601df1eafd\"\n },\n {\n \"url\": \"connect/new_common/cac.js\",\n \"revision\": \"3d8c436c566db645fb1e6e6ba9f69bbc\"\n },\n {\n \"url\": \"connect/gdrive_common/gac.js\",\n \"revision\": \"38f1df3ecc4d78290493f47e62202138\"\n },\n {\n \"url\": \"connect/onedrive_common/ac.js\",\n \"revision\": \"887d3ac605a7bb297067537e7c1f5686\"\n },\n {\n \"url\": \"connect/confluence/viewer-init.js\",\n \"revision\": \"4a60c6c805cab7bc782f1e52f7818d9f\"\n },\n {\n \"url\": \"connect/confluence/viewer.js\",\n \"revision\": \"37543b7bdde2bdf515584934e286366c\"\n },\n {\n \"url\": \"connect/confluence/viewer-1-4-42.html\",\n \"revision\": \"c7b38b3af4eb7a58ab6dc4791216530e\"\n },\n {\n \"url\": \"connect/confluence/macroEditor-1-4-8.html\",\n \"revision\": \"8cd74a2fb60bf2e3e86026d66107cf11\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram-1-4-8.js\",\n \"revision\": \"4c7730a67df6bacf5ca6d8a40cfd6e87\"\n },\n {\n \"url\": \"connect/confluence/includeDiagram.html\",\n \"revision\": \"c03c89622d22227313645900af4e3c3d\"\n },\n {\n \"url\": \"connect/confluence/macro-editor.js\",\n \"revision\": \"e273a48b8e81faac4530bf1a68d75aa0\"\n },\n {\n \"url\": \"math/MathJax.js\",\n \"revision\": \"b2c103388b71bb3d11cbf9aa45fe9b68\"\n },\n {\n \"url\": \"math/config/TeX-MML-AM_SVG-full.js\",\n \"revision\": \"d5cb8ac04050983170ae4af145bc66ff\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/fontdata.js\",\n \"revision\": \"495e5a410955d1b6178870e605890ede\"\n },\n {\n \"url\": \"math/jax/element/mml/optable/BasicLatin.js\",\n \"revision\": \"cac9b2e71382e62270baa55fab07cc13\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Size2/Regular/Main.js\",\n \"revision\": \"e3e5e4d5924beed29f0844550b5c8f46\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/LetterlikeSymbols.js\",\n \"revision\": \"0767cbad7275b53da128e7e5e1109f7c\"\n },\n {\n \"url\": \"math/jax/output/SVG/fonts/TeX/Main/Regular/GreekAndCoptic.js\",\n \"revision\": \"346302a5c5ee00e01c302148c56dbfe3\"\n },\n {\n \"url\": \"resources/dia.txt\",\n \"revision\": \"0ded293b93bc0fa98d99c234514ffe6f\"\n },\n {\n \"url\": \"resources/dia_am.txt\",\n \"revision\": \"0386be52b38f9f77437cb749e7b30939\"\n },\n {\n \"url\": \"resources/dia_ar.txt\",\n \"revision\": \"fd5174b2cac2aaa8335b2db4314978c6\"\n },\n {\n \"url\": \"resources/dia_bg.txt\",\n \"revision\": \"cb4abed85ba47ad248a68d53f357644a\"\n },\n {\n \"url\": \"resources/dia_bn.txt\",\n \"revision\": \"7aa9263b4ed1645bccca489c34d1b490\"\n },\n {\n \"url\": \"resources/dia_bs.txt\",\n \"revision\": \"1c352675c508c5a2cf39b87bd2ef27c4\"\n },\n {\n \"url\": \"resources/dia_ca.txt\",\n \"revision\": \"832c2cd5ec2e83f205f33e3edb9ecfac\"\n },\n {\n \"url\": \"resources/dia_cs.txt\",\n \"revision\": \"94103432f3d4097252b5485c237a0bad\"\n },\n {\n \"url\": \"resources/dia_da.txt\",\n \"revision\": \"c1b5de15635e4eac17f81ad1d561b134\"\n },\n {\n \"url\": \"resources/dia_de.txt\",\n \"revision\": \"1fc377a6cb1ee597db29162c1856cf98\"\n },\n {\n \"url\": \"resources/dia_el.txt\",\n \"revision\": \"ed520e70ae83056d7ee4caac5bf425e6\"\n },\n {\n \"url\": \"resources/dia_eo.txt\",\n \"revision\": \"5dda2a256c4e6bb50a02f0203da58e77\"\n },\n {\n \"url\": \"resources/dia_es.txt\",\n \"revision\": \"c1bc1e3185f212e6b6328d2a2c0a2479\"\n },\n {\n \"url\": \"resources/dia_et.txt\",\n \"revision\": \"261d74899244afc9bd2651dea3febe6d\"\n },\n {\n \"url\": \"resources/dia_eu.txt\",\n \"revision\": \"f8548baadeeaf48f163e402c58be8aeb\"\n },\n {\n \"url\": \"resources/dia_fa.txt\",\n \"revision\": \"11631d635e20991bec78d87a5f34bbeb\"\n },\n {\n \"url\": \"resources/dia_fi.txt\",\n \"revision\": \"611479288eb8bf0e321a1243ef70cb24\"\n },\n {\n \"url\": \"resources/dia_fil.txt\",\n \"revision\": \"61fd3df3b53d13a54208086cb555855f\"\n },\n {\n \"url\": \"resources/dia_fr.txt\",\n \"revision\": \"fc7ce084819cedec0d3131fa8a240aee\"\n },\n {\n \"url\": \"resources/dia_gl.txt\",\n \"revision\": \"b3daa85b59cedcd5efa5ef8d05716263\"\n },\n {\n \"url\": \"resources/dia_gu.txt\",\n \"revision\": \"3974a5a12435e997742b48099cfac4c4\"\n },\n {\n \"url\": \"resources/dia_he.txt\",\n \"revision\": \"c134b0633bec9651fc9471dcd8c904bd\"\n },\n {\n \"url\": \"resources/dia_hi.txt\",\n \"revision\": \"951440d0e03b03c550d21132e6498997\"\n },\n {\n \"url\": \"resources/dia_hr.txt\",\n \"revision\": \"ed5794501d1509dd8b60a4a6c02ea221\"\n },\n {\n \"url\": \"resources/dia_hu.txt\",\n \"revision\": \"0431f03750e5f3283e01da9dc047f360\"\n },\n {\n \"url\": \"resources/dia_id.txt\",\n \"revision\": \"a0789a391b5032a280a726ab7641f4b7\"\n },\n {\n \"url\": \"resources/dia_it.txt\",\n \"revision\": \"b505031dda16cfbeefab270e450f29fb\"\n },\n {\n \"url\": \"resources/dia_ja.txt\",\n \"revision\": \"ec71356fbc19358ad99f9dbcad33e28d\"\n },\n {\n \"url\": \"resources/dia_kn.txt\",\n \"revision\": \"220dc6008a16bd7e00cbd70bcb93b2e8\"\n },\n {\n \"url\": \"resources/dia_ko.txt\",\n \"revision\": \"9b22c4ab483814e3d4debd3321a2e4c0\"\n },\n {\n \"url\": \"resources/dia_lt.txt\",\n \"revision\": \"4dcbddf3f49e35b62ddc1200131aee9e\"\n },\n {\n \"url\": \"resources/dia_lv.txt\",\n \"revision\": \"d410f46d3c00871efa8ba53aae905084\"\n },\n {\n \"url\": \"resources/dia_ml.txt\",\n \"revision\": \"28b064931ddee9ddc61ca64b477b6dac\"\n },\n {\n \"url\": \"resources/dia_mr.txt\",\n \"revision\": \"2c9d39a0b885262b4edf1b11cddd2a44\"\n },\n {\n \"url\": \"resources/dia_ms.txt\",\n \"revision\": \"981af732b25d1bdcc77225ef4dec68c1\"\n },\n {\n \"url\": \"resources/dia_my.txt\",\n \"revision\": \"0ded293b93bc0fa98d99c234514ffe6f\"\n },\n {\n \"url\": \"resources/dia_nl.txt\",\n \"revision\": \"c0d4ccd2bb84a3c97bbc21c3fb083db0\"\n },\n {\n \"url\": \"resources/dia_no.txt\",\n \"revision\": \"de0fa32e852088266689634982544132\"\n },\n {\n \"url\": \"resources/dia_pl.txt\",\n \"revision\": \"0428b94d632e855f85fd774665c4d7da\"\n },\n {\n \"url\": \"resources/dia_pt-br.txt\",\n \"revision\": \"1bfb74139980be96c7ca73c9c269b895\"\n },\n {\n \"url\": \"resources/dia_pt.txt\",\n \"revision\": \"7cae74a83b336db7c307358dd2caf54b\"\n },\n {\n \"url\": \"resources/dia_ro.txt\",\n \"revision\": \"f4c0e8f1d200820703b5d28d53ece90c\"\n },\n {\n \"url\": \"resources/dia_ru.txt\",\n \"revision\": \"aac811d2ade33c58691d685e77ec7093\"\n },\n {\n \"url\": \"resources/dia_si.txt\",\n \"revision\": \"0ded293b93bc0fa98d99c234514ffe6f\"\n },\n {\n \"url\": \"resources/dia_sk.txt\",\n \"revision\": \"bfce32ad76e5b4e9464332d26e6fd4ad\"\n },\n {\n \"url\": \"resources/dia_sl.txt\",\n \"revision\": \"48fd88ffeb0bb831ea985dbaf75c1831\"\n },\n {\n \"url\": \"resources/dia_sr.txt\",\n \"revision\": \"b04259b778457fa9e91620cf892344ac\"\n },\n {\n \"url\": \"resources/dia_sv.txt\",\n \"revision\": \"6c8db8078b4efc5d7d6c955c5c6c9a34\"\n },\n {\n \"url\": \"resources/dia_sw.txt\",\n \"revision\": \"0e7df86830bad298c6e010e1e9c1e92f\"\n },\n {\n \"url\": \"resources/dia_ta.txt\",\n \"revision\": \"23213ee18dce71aad11e60c18884799d\"\n },\n {\n \"url\": \"resources/dia_te.txt\",\n \"revision\": \"2ad5fbf0f5d537e22ddf88c756a02159\"\n },\n {\n \"url\": \"resources/dia_th.txt\",\n \"revision\": \"1624ad9640855d610a8adb1be58357ca\"\n },\n {\n \"url\": \"resources/dia_tr.txt\",\n \"revision\": \"dd2f8c2f69842c14ccb6bbd100acb4a9\"\n },\n {\n \"url\": \"resources/dia_uk.txt\",\n \"revision\": \"474ca24fb6d4f6072dc294e2364f454d\"\n },\n {\n \"url\": \"resources/dia_vi.txt\",\n \"revision\": \"9a629f0c5a51a2d6e37674dcd5afbe03\"\n },\n {\n \"url\": \"resources/dia_zh-tw.txt\",\n \"revision\": \"548b1ca868393ec747c390ef7932063c\"\n },\n {\n \"url\": \"resources/dia_zh.txt\",\n \"revision\": \"dd32a7b9c3808f46c46cb3b431e95b05\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"fab2d88b37c72d83607527573de45281\"\n },\n {\n \"url\": \"images/manifest.json\",\n \"revision\": \"c6236bde53ed79aaaec60a1aca8ee2ef\"\n },\n {\n \"url\": \"images/logo.png\",\n \"revision\": \"89630b64b911ebe0daa3dfe442087cfa\"\n },\n {\n \"url\": \"images/drawlogo.svg\",\n \"revision\": \"4bf4d14ebcf072d8bd4c5a1c89e88fc6\"\n },\n {\n \"url\": \"images/drawlogo48.png\",\n \"revision\": \"8b13428373aca67b895364d025f42417\"\n },\n {\n \"url\": \"images/drawlogo-gray.svg\",\n \"revision\": \"0aabacbc0873816e1e09e4736ae44c7d\"\n },\n {\n \"url\": \"images/drawlogo-text-bottom.svg\",\n \"revision\": \"f6c438823ab31f290940bd4feb8dd9c2\"\n },\n {\n \"url\": \"images/default-user.jpg\",\n \"revision\": \"2c399696a87c8921f12d2f9e1990cc6e\"\n },\n {\n \"url\": \"images/logo-flat-small.png\",\n \"revision\": \"4b178e59ff499d6dd1894fc498b59877\"\n },\n {\n \"url\": \"images/apple-touch-icon.png\",\n \"revision\": \"73da7989a23ce9a4be565ec65658a239\"\n },\n {\n \"url\": \"images/favicon-16x16.png\",\n \"revision\": \"1a79d5461a5d2bf21f6652e0ac20d6e5\"\n },\n {\n \"url\": \"images/favicon-32x32.png\",\n \"revision\": \"e3b92da2febe70bad5372f6f3474b034\"\n },\n {\n \"url\": \"images/android-chrome-196x196.png\",\n \"revision\": \"f8c045b2d7b1c719fda64edab04c415c\"\n },\n {\n \"url\": \"images/android-chrome-512x512.png\",\n \"revision\": \"959b5fac2453963ff6d60fb85e4b73fd\"\n },\n {\n \"url\": \"images/delete.png\",\n \"revision\": \"5f2350f2fd20f1a229637aed32ed8f29\"\n },\n {\n \"url\": \"images/droptarget.png\",\n \"revision\": \"bbf7f563fb6784de1ce96f329519b043\"\n },\n {\n \"url\": \"images/help.png\",\n \"revision\": \"9266c6c3915bd33c243d80037d37bf61\"\n },\n {\n \"url\": \"images/download.png\",\n \"revision\": \"35418dd7bd48d87502c71b578cc6c37f\"\n },\n {\n \"url\": \"images/logo-flat.png\",\n \"revision\": \"038070ab43aee6e54a791211859fc67b\"\n },\n {\n \"url\": \"images/google-drive-logo.svg\",\n \"revision\": \"5d9f2f5bbc7dcc252730a0072bb23059\"\n },\n {\n \"url\": \"images/onedrive-logo.svg\",\n \"revision\": \"3645b344ec0634c1290dd58d7dc87b97\"\n },\n {\n \"url\": \"images/dropbox-logo.svg\",\n \"revision\": \"e6be408c77cf9c82d41ac64fa854280a\"\n },\n {\n \"url\": \"images/github-logo.svg\",\n \"revision\": \"a1a999b69a275eac0cb918360ac05ae1\"\n },\n {\n \"url\": \"images/gitlab-logo.svg\",\n \"revision\": \"0faea8c818899e58533e153c44b10517\"\n },\n {\n \"url\": \"images/trello-logo.svg\",\n \"revision\": \"006fd0d7d70d7e95dc691674cb12e044\"\n },\n {\n \"url\": \"images/osa_drive-harddisk.png\",\n \"revision\": \"b954e1ae772087c5b4c6ae797e1f9649\"\n },\n {\n \"url\": \"images/osa_database.png\",\n \"revision\": \"c350d9d9b95f37b6cfe798b40ede5fb0\"\n },\n {\n \"url\": \"images/google-drive-logo-white.svg\",\n \"revision\": \"f329d8b1be7778515a85b93fc35d9f26\"\n },\n {\n \"url\": \"images/dropbox-logo-white.svg\",\n \"revision\": \"4ea8299ac3bc31a16f199ee3aec223bf\"\n },\n {\n \"url\": \"images/onedrive-logo-white.svg\",\n \"revision\": \"b3602fa0fc947009cff3f33a581cff4d\"\n },\n {\n \"url\": \"images/github-logo-white.svg\",\n \"revision\": \"537b1127b3ca0f95b45782d1304fb77a\"\n },\n {\n \"url\": \"images/gitlab-logo-white.svg\",\n \"revision\": \"5fede9ac2f394c716b8c23e3fddc3910\"\n },\n {\n \"url\": \"images/trello-logo-white-orange.svg\",\n \"revision\": \"e2a0a52ba3766682f138138d10a75eb5\"\n },\n {\n \"url\": \"images/logo-confluence.png\",\n \"revision\": \"ed1e55d44ae5eba8f999aba2c93e8331\"\n },\n {\n \"url\": \"images/logo-jira.png\",\n \"revision\": \"f8d460555a0d1f87cfd901e940666629\"\n },\n {\n \"url\": \"images/clear.gif\",\n \"revision\": \"db13c778e4382e0b55258d0f811d5d70\"\n },\n {\n \"url\": \"images/spin.gif\",\n \"revision\": \"487cbb40b9ced439aa1ad914e816d773\"\n },\n {\n \"url\": \"images/checkmark.gif\",\n \"revision\": \"ba764ce62f2bf952df5bbc2bb4d381c5\"\n },\n {\n \"url\": \"images/hs.png\",\n \"revision\": \"fefa1a03d92ebad25c88dca94a0b63db\"\n },\n {\n \"url\": \"images/aui-wait.gif\",\n \"revision\": \"5a474bcbd8d2f2826f03d10ea44bf60e\"\n },\n {\n \"url\": \"mxgraph/css/common.css\",\n \"revision\": \"b5b7280ec98671bb6c3847a36bc7ea12\"\n },\n {\n \"url\": \"mxgraph/images/expanded.gif\",\n \"revision\": \"2b67c2c035af1e9a5cc814f0d22074cf\"\n },\n {\n \"url\": \"mxgraph/images/collapsed.gif\",\n \"revision\": \"73cc826da002a3d740ca4ce6ec5c1f4a\"\n },\n {\n \"url\": \"mxgraph/images/maximize.gif\",\n \"revision\": \"5cd13d6925493ab51e876694cc1c2ec2\"\n },\n {\n \"url\": \"mxgraph/images/minimize.gif\",\n \"revision\": \"8957741b9b0f86af9438775f2aadbb54\"\n },\n {\n \"url\": \"mxgraph/images/close.gif\",\n \"revision\": \"8b84669812ac7382984fca35de8da48b\"\n },\n {\n \"url\": \"mxgraph/images/resize.gif\",\n \"revision\": \"a6477612b3567a34033f9cac6184eed3\"\n },\n {\n \"url\": \"mxgraph/images/separator.gif\",\n \"revision\": \"7819742ff106c97da7a801c2372bbbe5\"\n },\n {\n \"url\": \"mxgraph/images/window.gif\",\n \"revision\": \"fd9a21dd4181f98052a202a0a01f18ab\"\n },\n {\n \"url\": \"mxgraph/images/window-title.gif\",\n \"revision\": \"3fb1d6c43246cdf991a11dfe826dfe99\"\n },\n {\n \"url\": \"mxgraph/images/button.gif\",\n \"revision\": \"00759bdc3ad218fa739f584369541809\"\n },\n {\n \"url\": \"mxgraph/images/point.gif\",\n \"revision\": \"83a43717b284902442620f61bc4e9fa6\"\n }\n], {\n \"ignoreURLParametersMatching\": [/.*/]\n});\n\n\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting"],"mappings":"szBAmBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,oCAY2B,CAClC,KACS,yBACK,oCAEd,KACS,gCACK,oCAEd,KACS,8BACK,oCAEd,KACS,mCACK,oCAEd,KACS,4BACK,oCAEd,KACS,sBACK,oCAEd,KACS,qBACK,oCAEd,KACS,uDACK,oCAEd,KACS,kCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,mCACK,oCAEd,KACS,0CACK,oCAEd,KACS,gDACK,oCAEd,KACS,oDACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kDACK,oCAEd,KACS,6CACK,oCAEd,KACS,kCACK,oCAEd,KACS,qCACK,oCAEd,KACS,kCACK,oCAEd,KACS,oDACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,yCACK,oCAEd,KACS,6CACK,oCAEd,KACS,wCACK,oCAEd,KACS,iDACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,kDACK,oCAEd,KACS,8CACK,oCAEd,KACS,2BACK,oCAEd,KACS,8CACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,+DACK,oCAEd,KACS,2EACK,oCAEd,KACS,wEACK,oCAEd,KACS,6BACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,iCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,gCACK,oCAEd,KACS,mCACK,oCAEd,KACS,gCACK,oCAEd,KACS,uBACK,oCAEd,KACS,gCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,iCACK,oCAEd,KACS,oCACK,oCAEd,KACS,2CACK,oCAEd,KACS,mCACK,oCAEd,KACS,sCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,oCACK,oCAEd,KACS,6CACK,oCAEd,KACS,6CACK,oCAEd,KACS,6BACK,oCAEd,KACS,iCACK,oCAEd,KACS,2BACK,oCAEd,KACS,+BACK,oCAEd,KACS,gCACK,oCAEd,KACS,wCACK,oCAEd,KACS,oCACK,oCAEd,KACS,mCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,kCACK,oCAEd,KACS,yCACK,oCAEd,KACS,mCACK,oCAEd,KACS,8CACK,oCAEd,KACS,yCACK,oCAEd,KACS,0CACK,oCAEd,KACS,wCACK,oCAEd,KACS,wCACK,oCAEd,KACS,+CACK,oCAEd,KACS,sCACK,oCAEd,KACS,gCACK,oCAEd,KACS,4BACK,oCAEd,KACS,2BACK,oCAEd,KACS,gCACK,oCAEd,KACS,yBACK,oCAEd,KACS,+BACK,oCAEd,KACS,kCACK,oCAEd,KACS,uCACK,oCAEd,KACS,wCACK,oCAEd,KACS,uCACK,oCAEd,KACS,uCACK,oCAEd,KACS,oCACK,oCAEd,KACS,qCACK,oCAEd,KACS,wCACK,oCAEd,KACS,qCACK,oCAEd,KACS,2CACK,oCAEd,KACS,qCACK,oCAEd,KACS,oCACK,qCAEb,6BAC8B,CAAC"} \ No newline at end of file
diff --git a/src/main/webapp/teams.html b/src/main/webapp/teams.html
index 592085c0..415588cf 100644
--- a/src/main/webapp/teams.html
+++ b/src/main/webapp/teams.html
@@ -43,7 +43,7 @@
for (var i = 0; i < params.length; i++)
{
- idx = params[i].indexOf('=');
+ var idx = params[i].indexOf('=');
if (idx > 0)
{
@@ -262,6 +262,8 @@
mxForceIncludes = true;
}
+ mxForceIncludes = false;
+
mxscript(drawDevUrl + 'js/PreConfig.js');
mxscript(drawDevUrl + 'js/diagramly/Init.js');
mxscript(geBasePath + '/Init.js');