Draw.loadPlugin(function(ui) { // For auto-updating port orientation // Note: this is only the 'shape', not the full style const encodedPortShapes = { in: { l: `stencil(pZNdD4IgFIZ/DbcNYa3rZvU/yE7JRHBAX/++Y0c3zXC2btzO+4wHfFEm81CqBpjgJZM7JoRc4wPHO42C06hCA0Wk7Ka8VkcDREL0roK7PsXOoG0JXseWyj3jW9Y6OJN54axFiXY2jMiAo0xpi2v5g2Td9s9uWnWna3CHGiJ4yjNKmTgsFmf/iGWOSep1ZH5URXXx7mpP01VJdnYevoAeN6rtdwJ6XLsbJFuba6cXGG0Hgg9Dtun7+UUydshFhsK4ADNXiXmiCWxQG0NfY+rKJh2/U/oD3sEL)`, r: `stencil(pZNdD4IgFIZ/DbcNYa3rZvU/yE7JQnBAVv++o0eXH9ls3bid9xkP8qJMpiFXJTDBcyZ3TAi5xgeOdxoFp1GFErJIWaW8VkcDREL07gp3fYqtQdscvI41lXvGt6x2cCbTzFmLEu1sGJAeR5nSFtfyB8na7Z/ttGrfrsQdCojgKU8oZeKwWJz8I5YpJnPHkelRZdeLdzd7mq6aZWfn4QPocKnqfiegw4Wr4H24cW3f6ukMRtueYShINl0/vzhGErlIkRkX4MtdYj5TBVaojaHPce7OJiU3Kf0CTfAC)`, t: `stencil(nZPRDoIgGIWfhtuGsNZ1s3oP0r9kIjggrbfv1183S23VDds5Z3zAAZhMQ6FqYIIXTB6YEILjgLIlKbckVaghi+Q1ymt1NkBJiN6V0Oo8DgRtC/A6dqk8Mr5nHZIzmWbOWoRoZ8NLMskRprTFufxOML4ZNvAYNKkaV6gggic3IZeJ09/g5BewTNFZO45Mzyorr97dbD6ftZpdnIeFYIxr1fU7C8a4cg1MDrfU2XI7I8BoOwHIxdZ/ISS7t4K/g2TGBfhwleivNIENamPoNa5d2azj3qUf0BtP)`, b: `stencil(nZNRD4IgFIV/Da8NYa3nZvU/EG/JQnBAWv++q1c3m9pWL27nnPHJPQCTeaxUA0zwiskTE0Jw/KDsSMo9SRUb0Im8VgWjCguUxBT8HTpTppFgXAXBpD6VZ8aPrEdyJnPtnUOI8S5+JLMcYco4XMufBOO7cQOvUZNq8A81JAjkZuQycfkbnP0Cljk6W+PIvFD6fgv+4crlqs3s6gOsBFPcqL7fRTDFtW9hNtzHaJNcr2ciWONmhOywXvwvDLn/Yxva+ghfzhL9jSqwQmMtXcetM1uUPLj0BAbjDQ==)`, } }; encodedPortShapes.out = { r: encodedPortShapes.in.l, l: encodedPortShapes.in.r, t: encodedPortShapes.in.b, b: encodedPortShapes.in.t, } // Styles for our different edge types const edgeStyles = { ctrl_flow: parseStyle("edgeStyle=0;endArrow=classic;html=1;strokeWidth=2;fontSize=14;strokeColor=#004C99;"), data_flow: parseStyle("edgeStyle=0;endArrow=open;html=1;strokeWidth=1;fontSize=14;fontColor=#000000;fillColor=#d5e8d4;strokeColor=#6D9656;endFill=0;"), typed_by: parseStyle("edgeStyle=0;endArrow=blockThin;html=1;strokeWidth=1;fontSize=14;fontColor=#000000;dashed=1;endFill=1;endSize=6;strokeColor=#999999;"), parent_version: parseStyle("edgeStyle=0;endArrow=classic;html=1;fontSize=11;fontColor=#000000;fillColor=#fff2cc;strokeColor=#d6b656;rounded=0;"), ss_link: parseStyle("edgeStyle=0;endArrow=blockThin;html=1;fontSize=11;strokeColor=#694B2E;rounded=0;dashed=1;dashPattern=1 4;endFill=1;"), comment_edge: parseStyle("endArrow=none;dashed=1;html=1;"), }; const model = ui.editor.graph.model; const TYPE_ATTR = "pmRole"; // cell attribute holding the ftgpm type function parseStyle(str) { const pairs = str.split(';').filter(s => s !== ''); const map = new Map(); pairs.map(pair => { const [key,value] = pair.split('='); map.set(key, value); }); return map; } function unparseStyle(map) { let str = ""; for (const [key, value] of map.entries()) { if (value === undefined) { str += key + ';'; } else { str += key + '=' + value + ';'; } } return str; } // copy selected keys (=array) from fromMap to toMap function mapAssign(toMap, fromMap, keys) { for (const key of keys) { const value = fromMap.get(key); if (value !== undefined) { toMap.set(key, value); } } } function reverseEdge(edge, sourceCell, targetCell) { // Reverse source and target ui.editor.graph.model.setTerminals(edge, targetCell, sourceCell); // Reverse 'waypoints' if (edge.geometry.points) { const newGeometry = edge.geometry.clone(); newGeometry.points.reverse(); ui.editor.graph.model.setGeometry(edge, newGeometry); } // Reverse entry and exit points const oldStyle = parseStyle(model.getStyle(edge)); const newStyle = new Map(oldStyle); // entry becomes exit newStyle.set('entryX', oldStyle.get('exitX')); newStyle.set('entryY', oldStyle.get('exitY')); // exit becomes entry newStyle.set('exitX', oldStyle.get('entryX')); newStyle.set('exitY', oldStyle.get('entryY')); // entryD becomes exitD newStyle.set('entryDx', oldStyle.get('exitDx')); newStyle.set('entryDy', oldStyle.get('exitDy')); // exitD becomes entryD newStyle.set('exitDx', oldStyle.get('entryDx')); newStyle.set('exitDy', oldStyle.get('entryDy')); model.setStyle(edge, unparseStyle(newStyle)); } function setEdgeStyle(edge, style_type) { // Set type attribute let value = model.getValue(edge); if (!value) { // Workaround: 'value' must be an XML element value = mxUtils.createXmlDocument().createElement('object'); value.setAttribute('label', ''); } value.setAttribute(TYPE_ATTR, style_type); model.setValue(edge, value); // Update style // Workaround: don't overwrite connection points const oldstyle = parseStyle(model.getStyle(edge)); const newstyle = new Map(edgeStyles[style_type]); mapAssign(newstyle, oldstyle, [ // retain these properties from oldstyle: "entryX", "entryY", "entryDx", "entryDy", "exitX", "exitY", "exitDx", "exitDy" ]); model.setStyle(edge, unparseStyle(newstyle)); } function isArtifact(type) { return type === "artifact"; } function isFormalism(type) { return type === "formalism"; } function isTransformation(type) { return type === "auto_transformation" || type === "transformation" || type === "comp_transformation"; } function isActivityNode(type) { return type === "autom_activity" || type === "activity" || type === "comp_activity"; } function isControlFlowPort(type) { return type === "ctrl_in" || type === "ctrl_out"; } function isDataPort(type) { return type === "data_in" || type === "data_out"; } function isInport(type) { return type === "data_in" || type === "ctrl_in"; } function isOutport(type) { return type === "data_out" || type === "ctrl_out"; } function isPort(type) { return ["data_in", "data_out", "ctrl_in", "ctrl_out"].includes(type); } function isControlFlowNode(type) { return isControlFlowPort(type) || type === "initial" || type === "final" || type === "fork_join"; } function isDataFlowNode(type) { return isDataPort(type) || isArtifact(type) || isFormalism(type); } function isTraceEvent(type) { return type === "traceevent_begin" || type === "traceevent_end"; } function isArtifactVersion(type) { return type === "artifact_version"; } function getFlowType(type) { if (isDataFlowNode(type)) { return "data"; } if (isControlFlowNode(type)) { return "ctrl"; } // throw new Error("unknown flow type"); console.log("unknown flow type"); } // [ condition, flow-type ] const edgeTypeRules = [ // PM control flow [ (src, tgt) => isControlFlowNode(src) && isControlFlowNode(tgt), "ctrl_flow" ], // PM data flow [ (src, tgt) => isDataFlowNode(src) && isDataFlowNode(tgt), "data_flow" ], // FTG data flow [ (src, tgt) => isTransformation(src) && isFormalism(tgt), "data_flow" ], [ (src, tgt) => isFormalism(src) && isTransformation(tgt), "data_flow" ], [ (src,tgt) => isActivityNode(src) && isTransformation(tgt), "typed_by" ], [ (src,tgt) => isArtifact(src) && isFormalism(tgt), "typed_by" ], [ (src,tgt) => isTraceEvent(src) && isArtifactVersion(tgt), "data_flow"], [ (src,tgt) => isArtifactVersion(src) && isTraceEvent(tgt), "data_flow"], [ (src,tgt) => isTraceEvent(src) && isTraceEvent(tgt), "ctrl_flow"], [ (src,tgt) => src === "traceevent_begin" && tgt === "ctrl_in", "typed_by"], [ (src,tgt) => src === "traceevent_end" && tgt === "ctrl_out", "typed_by"], [ (src,tgt) => isArtifactVersion(src) && isArtifact(tgt), "typed_by"], [ (src,tgt) => isArtifactVersion(src) && isArtifactVersion(tgt), "parent_version"], [ (src,tgt) => isArtifactVersion(src) && tgt === "storage", "ss_link"], [ (src,tgt) => isArtifactVersion(src) && tgt === "real_object", "ss_link"], [ (src,tgt) => src === "traceevent_begin" && tgt === "service", "ss_link"], [ (src,tgt) => src === "comment" || tgt === "comment", "comment_edge"], ]; // Very specific: This function is used to determine the correct direction of an arrow automatically // An activity or artifact at the highest level (= a direct child of a layer) has level 0 // Every time something is nested in an activity, the level increases by 1. // Ports are special: they can only be a child of an activity, but they have the same level as the activity. function getNestedLevel(cell) { function getLvlRecursive(cell) { if (!cell.parent) { throw Error("getNestedLevel called with parentless cell (i.e. cell is root, or is deleted)"); } if (model.isLayer(cell)) { return 0; // throw Error("getNestedLevel called with layer cell"); } if (cell.parent === model.isLayer(cell.parent)) { return 0; } else if (isActivityNode(cell.parent.getAttribute(TYPE_ATTR))) { return getLvlRecursive(cell.parent) + 1; } else { return getLvlRecursive(cell.parent); } } const baseLevel = getLvlRecursive(cell); if (isPort(cell.getAttribute(TYPE_ATTR))) { return baseLevel - 1; } else { return baseLevel; } } function isDirectionless(type) { return isArtifact(type) || type === "fork_join"; } ui.editor.graph.addListener(mxEvent.CELL_CONNECTED, (_, eventObj) => { // Happens whenever an edge is (dis)connected. const edge = eventObj.properties.edge; const sourceCell = edge.source; const targetCell = edge.getTerminal(); // This will change the edge style WITHIN the transaction of the edit operation. // The terminal-change and style-change will be one edit operation from point of view of undo manager. const sourceType = sourceCell ? sourceCell.getAttribute(TYPE_ATTR) : null; const targetType = targetCell ? targetCell.getAttribute(TYPE_ATTR) : null; // Update style if necessary for (const [cond, linkType] of edgeTypeRules) { if (cond(sourceType, targetType)) { setEdgeStyle(edge, linkType); } } if (sourceCell && targetCell) { // Auto-correct edge direction in certain cases. // We call 'reverseEdge' if we have an illegal situation, but reversing the arrow gives a legal situation. const sourceLvl = getNestedLevel(sourceCell); const targetLvl = getNestedLevel(targetCell); // We have 2 flow types: ctrl and data. They remain segregated. if (getFlowType(sourceType) === getFlowType(targetType)) { if (sourceLvl === targetLvl) { // Equally nested ... if (isInport(sourceType) && isOutport(targetType) || isInport(sourceType) && isDirectionless(targetType) || isDirectionless(sourceType) && isOutport(targetType)) { reverseEdge(edge, sourceCell, targetCell); } } else if (sourceLvl === targetLvl + 1) { // Source of arrow is nested deeper ... if (isInport(sourceType) && isInport(targetType) || isDirectionless(sourceType) && isInport(targetType)) { // Should flow from shallowly nested input port to deeply nested input port: reverseEdge(edge, sourceCell, targetCell); } } else if (sourceLvl + 1 === targetLvl) { // Target of arrow is nested deeper ... if (isOutport(sourceType) && isOutport(targetType) || isOutport(sourceType) && isDirectionless(targetType)) { // Should flow from deeply nested output port to shallowly nested output port reverseEdge(edge, sourceCell, targetCell); } } } } }); function outsideOffset(wOrH) { return 0; } function centerOffset(wOrH) { return -wOrH / 2; } function insideOffset(wOrH) { return -wOrH; } // Change this to position ports outside, inside or centered at the edge. const borderOffset = centerOffset; function rightOrBottomBorder(wOrH, parentWorH) { return parentWorH + borderOffset(wOrH); } function leftOrTopBorder(wOrH) { return -wOrH - borderOffset(wOrH); } function cellCenter(cellGeometry) { // Coordinates are relative to topleft corner of parent shape const {x,y, width, height} = cellGeometry; // Center of cell return { x: x + width/2, y: y + height/2, }; } // Deprecated snapping algorithm function closestBorder(cellGeometry, parentGeometry) { // Cell center is relative to parent: (0,0) is topleft const c = cellCenter(cellGeometry); // We draw two imaginary diagonals through the parent shape, to determine whether the child shape is more close to the top, right, bottom or left side. // // 2 // / // +----+ // |\ t/| // |l\/ | // | /\r| // |/b \| // +----+ // \ // 1 const slope = parentGeometry.height / parentGeometry.width; const above1 = c.y < slope * c.x; const above2 = c.y < parentGeometry.height - slope * c.x; if (above1) if (above2) return 't'; else return 'r'; else if (above2) return 'l'; else return 'b'; } // Improved snapping algorithm function closestBorder2(cellGeometry, parentGeometry) { // Cell center is relative to parent: (0,0) is topleft const c = cellCenter(cellGeometry); const slope = 1; // fixed slope, 45 degrees const above1 = c.y < slope * c.x; const above3 = c.y < (-slope) * c.x + parentGeometry.height ; const above4 = c.y < slope * (c.x - parentGeometry.width) + parentGeometry.height; const above2 = c.y < (-slope) * (c.x - parentGeometry.width); if (parentGeometry.width >= parentGeometry.height) { // Parent's width > height // // 1 2 // \ / // +------+ --> x // |\ t /| // |l\__/ |__ 5 // | / \r| // |/ b \| // +------+ // / \ // 3 4 // | // V // y const above5 = c.y < parentGeometry.height / 2; if (!above1 && above3) { return 'l'; } if (!above2 && above4) { return 'r'; } if (above1 && above2 && above5) { return 't'; } if (!above3 && !above4 && !above5) { return 'b'; } } else { // Parent's height > width // 1 2 // \ / // +----+ // |\ t/| // | \/ | // |l | | // | | | // | /\r| // |/b \| // +----+ // / | \ // 3 5 4 const leftOf5 = c.x < parentGeometry.width / 2; if (above1 && above2) { return 't'; } if (!above3 && !above4) { return 'b'; } if (above3 && !above1 && leftOf5) { return 'l'; } if (above4 && !above2 && !leftOf5) { return 'r'; } } } function moveToBorder(cell, cellGeometry, parentGeometry, border) { const style = parseStyle(model.getStyle(cell)); const type = cell.getAttribute(TYPE_ATTR); const inOrOut = isInport(type) ? "in" : "out"; style.set('shape', encodedPortShapes[inOrOut][border]); model.setStyle(cell, unparseStyle(style)); switch (border) { case 't': cellGeometry.width = 35; cellGeometry.height = 20; cellGeometry.y = leftOrTopBorder(cellGeometry.height); return; case 'r': cellGeometry.width = 20; cellGeometry.height = 35; cellGeometry.x = rightOrBottomBorder(cellGeometry.width, parentGeometry.width); return; case 'l': cellGeometry.width = 20; cellGeometry.height = 35; cellGeometry.x = leftOrTopBorder(cellGeometry.width); return; case 'b': cellGeometry.width = 35; cellGeometry.height = 20; cellGeometry.y = rightOrBottomBorder(cellGeometry.height, parentGeometry.height); return; } } ui.editor.graph.addListener(mxEvent.MOVE_CELLS, (_, eventObj) => { // High-level event: Happens when the user releases dragged shape(s) for (const cell of eventObj.properties.cells) { const type = cell.getAttribute(TYPE_ATTR); if (isPort(type)) { if (cell.parent) { const parentType = cell.parent.getAttribute(TYPE_ATTR); if (isActivityNode(parentType) || isTransformation(parentType)) { // Snap port to border const border = closestBorder2(cell.geometry, cell.parent.geometry); moveToBorder(cell, cell.geometry, cell.parent.geometry, border); } } } } }); ui.editor.graph.addListener(mxEvent.RESIZE_CELLS, (_, eventObj) => { // High-level event: Happens when the user resized cell(s) for (let i=0; i[{"xml":"dVPbkppAEP0aqpKHTQ2MAX3k4mXjEpWNRn0DaWFkuDgzgPr1O4DEtSr7QNF9Tp/u6sso2E4vU+YXsZuHQBU8VrDN8lx0VnqxgVJFQyRUsKNoGpKfok2+YNWWRYXPIBP/EeTBCQ5CRlA/aIo5LdlKUi+n0CEkI4L4tCP61G3cc1Uurr2Ex37RmFxAdiD0W7ifeA5/jcZjb1nfZH3bXt82cDU5J4llFqe/GirjYxIXq1Owhz/2frsi0h1b9nwxHVoiNsa/irO/OZZUT0znFa/BnZ95UnhNNicirLLKyPXcOvi5DW2maNZ2EVZRUm2XEzNQ32bvM35Y6ccV1yv992gx28iQ0C3RyXHNZWSsd+gUqFryVrnYkFSZDWQjk91+Hs2nhpfyWWnvJG7NxVn+Bu75aMrune8KtuqYCHgv/EPTci2XJ7FYpM1AVWkeCaV2TnPWzgYjNLBHI4lzwfIEeibLMym3GHBy84N2kEj6EBJxd5tcLBe++EQzOJSMkwq8RtejBTCSgoAmr9wNKTgsH5DVbbICJuDy5aGonxY8hVxq2VWGXDv2Rf2hYn2oD7FhaKqu6gjDi4q7NDUJRdzF4e7eUAwkisUz5vPOj/5lf1ymNO531bv3W+3dx5toQ5+ezAc=","w":30,"h":30,"aspect":"fixed","title":"(PM) Initial"},{"xml":"dVNRj6IwEP41JHcPe6F0ZeFRQI2onGIOlbeiFeoVim0R3F+/BfRckzMpycz3zTdDZ6YadPNmwlGZLdgBUw2ONOhyxmRv5Y2LKdUMnRw06GmGoatPM8YvWNCxeok4LuR/BCw54b1UERQlbTGvIztJHjKKe+RICkR7+J64i3quKeT1LhAZKltTSFzsCf1xjOZzT0zT0fKKLuvlCHtxpP7BXK75ppmx4Xhh2tbcWdn2buRP4xRNYESHwdgE09ovXLEKfntWM77gaVmDSil36TWez4pJIhea4ajjidQJAAvJ6g9OmT/e7tMInvIkHE1NvdF3E2GFYqwCZ4tqScXg4jd2bgxUqrPJAagmjuUHIWpK2yxYtY0Hn8HAAnOH7tdpePY2CydT4ncbxeCkjG3AotpPomgY10U8DY7Hs6VLUcHVJigUP8qOqftTg06dEYnXJdq37ajVWBWWybxtNVDmkVDqMsp41zeo6++ubStcSM7+4tfMhhxkphg1A4djQT5R0vVeVz4+EHlz2xKcSSS/0RzvKy7IBYet7o6WmJMcS9yWU+MkpcDLB+T0w79gLnHzcrPAt52YYKa0/KpCrj37Bn4BaFqmBT8+DGACU4f4DcA+TX27j/Jgv6B6hkmayWcMid5P/2V/rLIybqt4d2/LfXcfj6gLfXpjXw==","w":30,"h":30,"aspect":"fixed","title":"(PM) Final"},{"xml":"dVK7csIwEPwatRnZjgvKYBIqGihSZoR1YIGs88jila/PnSSHMBMKzdzt7r0lqqa/Lr0auhVqsKJ6F1XjEUOy+msD1opSGi2qhShLSU+UH0/YIrJyUB5c+CcAtwdoAyms2nKxRSRjSL9GCwnZoT9+HdC4RE3Jo/Kx7hhuU5DHk9PAUimq+aUzATaDapm90HiEdaHnkgWZO3RhY76ZLFg+Bo9H+DQ6dASVrDDWNmjRx+yVlK/NbEa4smbvCGtpQCByfgYfTKvsWyZ6ozX3lHNOORw6BgeaKoycs56LekEIaBPUNk7BnXloT340Z1jDmBrk/tIiuBRcn266+LOfJWAPwd9IcslTsULKlzoFdmD2XQ7MN5JqTP7+N/h+OTLy1ic333Jy738mSh++1A8=","w":100.5,"h":20,"aspect":"fixed","title":"(PM) Fork / Join"},{"xml":"dVLNToQwEH6aXk1L0Q1Hl9U9mRj34NF0YRaqhdm0o4JPb6GUhegeSGbm+xvaMpk33d6qc/2EJRgmH5jMLSKFqulyMIYlXJdM7liScP+x5PEKKkaUn5WFlv4R4PEdCvIMo45D2G4ER0nzggbCpCBr3k4GvwMUzUfmOtdRH0VQVnCYWs7kFtry3lrvIXeFUc7pwg9raoZU4UtHFj/gVZdU+4k33p6wpYP+GQwEnxk5GrRjhOQ8zbPMI2GvIfHqb4vFsnvABsj2nmLBKNJfa51yoa1m3ix9Rt0O59UHRsrXCoeftoCJtLyXqOui7oZzeZtkqRCbu3SzdiFlK6A/Lr5Y7H4ZjWcf2+lGY3t5OUG9fFi/","w":40.0035294117647,"h":40,"aspect":"fixed","title":"Control Flow"},{"xml":"dZJNb4MwDIZ/Te6BULQdN1h7mjSthx2ntHFptoBR8DbYr18+gILWIiH5431sJw4TRd3vrGzPz6jAMPHERGERKVp1X4AxLOVaMVGyNOXuZ+n2RjYJWd5KCw1dAfDwAUdyCiMPvlkZkgGpX9FAjChJ8v1k8CempuJBue7b0TBBoCrYjy5n4hEa9WCtqyFKbKFxkTPVvmXizI4sfsKbVnQeIydsaK9/PZ1ko1+gQRuqCx4+H9fGLOJqA3cqmysuMnl5n2/yOMjWQeNY8Uh+2Js3lizOuQOsgezgJBaMJP295mQX3WrWzegL6sZf9RAVGV8THX7ZI4yi5Uonrr/OkbQV0D/OGYtpL6GwqMkd1z+5l2cW6eUr/AM=","w":40,"h":40,"aspect":"fixed","title":"Data Flow"},{"xml":"dVJNT8MwDP01uafNhMQROrYTEmJIHFHamDZbWlepgZZfT5qkX2KLFMnP9vNzHDOR1f3RyrZ6RgWGiScmMotIwar7DIxhKdeKiT1LU+4uSw83oomP8lZaaOgKAfMzFOQyjMxHsb0Pekr9igaCh4YW1Ec+hMhU2yduZTsaJg6oEk4RciYeoVEP1uKPg7nB4vJW6ca5K6pH2cSZHVm8wLtWVEXPJzZ00r9jiWQXcYYGrZcQ3B/nV7KrQEWSEzpoYxYUK9zNEqsS9/64SHja2PTNwSWr9x4BayDrJsItGEn6e8uTXYDlnDdTX1A348SHkLHjW0aHX7aAmLT+2YnXX+eRtCXQP54zVt0uLv9hE4xbMMFl2wJ7vYx/","w":40,"h":40,"aspect":"fixed","title":"Typed-by"},{"xml":"dVRtc6IwEP41zNx96Ex4EY+PyptFi56tBf1yEyBCLBAuiQL99ZcotHbmOqMz++zus3mS3UXR7arzKWyKJ5KhUtFdRbcpIfxmVZ2NylLRAM4U3VE0DYi/onnfRNVrFDSQopr/h0CSE0q5yChhIg9zrsFJQyivYYWEORQYHdeMFNeDu4QpKkiZIcq+HlhtSTlmc1r+GRmjME3Cr5oZ70cKK2AjTcZRneLyR3MIM8d4zL3Hg5DuJGm4hzo9XHYC9e402C7ms1heSpuL3x6k+ntsawl/XwtotIuj51a/VPvvvDnlweFpGpBtarSbxdrQbGAW9gxEb9Ml/PX6ljpbdwUoWU43LF4THwQxQ1F/0k+RtTfXQTgxYOfheK+dnvCMgK7B2mWSay+ZxaxzVEc11O2FjwOjP4XL6iVnXnUUyrAfrZ9Rox4Wk902jrtp1WyA+hpk9R5dyAyFJuVZG5jxiiWBd06gmca+DxZ5bjn8XE/FPXa7PmOFV7ClMXPCGMcVtqPutw/C416E6TIoZGPlmxBHZ+7qp6LP2wJz9NyINonnbMVYCV/BK9lqVZjioTPSCgAEoIjhd5hcm3DD6ZkyfEFbGRi9FbnInNUwMLJKhTh0M8zHopySN2STktBrO3UADNuyPiIRznghIpo8g5zrDGVD7SMuyzueY7iqN5E8cQFc5y9EyHceTOFJSYXTUSfhkN/pvk3aBVGOum/XQL0bQB8RcQXai5R20CZH9LYpoEA4LwaWPuwDHMY9/2B+FNsQXMuNGo5+0KwbpR+wan4tQY5Hhvj9UgrjTtOn67onIxw2d4SfX4gb+/4D8g8=","w":20,"h":35,"aspect":"fixed","title":"Control Input Port"},{"xml":"dVRbc6IwFP41zOw+dCZc1PKo3CxadG0t6MtOgAixQNgkCvTXN1GwdmY7AzPnO9cvOedE0a2y9Sis82eSokLRHUW3KCH8KpWthYpC0QBOFd1WNA2IX9HcH6zqxQpqSFHF/xNA4iNKuPAoYCyL2RfjqCaUV7BEQuwTDIqLR0JOvNcXMEE5KVJE2feK5YYUgzunxd9byEBNk/A7a8a7IYblsJYi46hKcPGr3gepbTxl7tNekLfjJNhBne7PW4E6Z+Jv5rNpJI+lzcS3A4n+EVlazD9WAhrN/OA65aNq/ZvVx8zfP098skmMZj1fGZoFxrk1BeH7ZAEf394Te+MsASWLyZpFK+IBP2Io7I76MTR345UfjAzYujjaacdnPCWgrbF2HmXaa2oy8xRWYQV1a+5h3+iOwaJ8zZhbHgQz7IWrF1Sr+/lou4midlLWa6C++Wm1Q2cyRcGY8rTxx9GSxb57iuE4iTwPzLPMtPmpmohzbLddynI3ZwtjagcRjkpshe0fDwSHnTDThZ/L1so7IbbOnOVvRZ81OebopRZ9EtfZiMESupyXstmqEMVFp6QRAAhAEcMfML404YqTE2X4jDbSMGhLcpY+y35kZJYSceikmA9JOSXvyCIFoZd26gAYlmneLCFOeS4smqxBTlWK0j73ARfFXZxtOKo7knHiALjKXomgbz+MhSYhJU4GnoRDfsf7OmlnRDlqf1wE9W4APUTEEWgnXJqemxzR666AHOEs76P0fiNgP+/ZLfKWbE1wJXeqLz3U7q7wQTW/ZyCHA0P8fiuFcEfpS3VZkwH2qzvAryfiGn3/gnwC","w":20,"h":35,"aspect":"fixed","title":"Control Output Port"},{"xml":"dVRtk6IwDP41zNx98KZQRP2ovLnoqueuC/rlpkCBukC5torur78isLoztyPO5EnS5EmTVIFmcXEZqrJnGuNcgbYCTUapaKXiYuI8VzRAYgVaiqYB+Vc05xurerOCCjFciv8coOERR0J65Chsklk347CiTJSowFLsAvSKm0dMyk6dowhnNI8x418TFlua995IoD/9iZ6Y1sCvnLm49kd4hqpG5AKXEcl/VIdVbOlPqfN0kNStMFrtEWSH806iqz3ytvPZNGiK0mby24MIfgSmFoqPtYR6PU8cuxir5t9ZdUy9w/PIo9tIrzfzta6ZwMjMKfDfRws0fnuPrK29BIwuRhserKkLvIBj/3qER3+yN9beaqiji0OCvXZ8JlMKLhXRzsNUe40nfHLyS79E0Jy7xNOvx9WieE25UySSGXH99Quu1MN8uNsGwWVUVBugvnlxucdnOsUrg4m49oxgyUPPOYXIiALXBfM0nVjiVI5kHbvdNeaZk/GFPrVWAQkKYvqX3y5YJXtpZgsvaxrb3Am1ILeXPxU4qzMi8Esl2ySvs5ZjJXWZKJpWq1KUFx3TWgIgAcOcfKDw1oQWRyfGyRlvG0OvLei58Vl2A9NEKbBAdkxEH1Qw+o5NmlN2ayc0rIkxND4tPolF1vkyeipjHHexuSRKyvSVSprWoDkR0YJEnTWhpXhpiaja3VvCB7TEiej9SZ4/sLChM7K1W04hR/JeZzuZZ8wEvny7NurDwLqYypLZVbpcW+vwlzHWoa6OxwYYy5+GB6reBqm7apuhb3cPZJikWRcXdhuGugVKP2N/pttQUjY72pEbwC5Ml3vQ0+1D0CThWDyuuRQeWN9Vt83rYfcW9PD+5rSnH5+kfw==","w":20,"h":35,"aspect":"fixed","title":"Data Input Port"},{"xml":"dVRtb6MwDP41SHcfJvFWWD+2vHW0o71uHbRfTgECpAPCJWmB/folLXSddJNA8mP7cezYjqRZVecR0BTPOIWlpDmSZhGM2VWqOguWpaTKKJU0W1JVmf+S6v5gVS5WuQEE1uw/BBwfYcK4RwlicZh9MU4aTFgNKsjFIcCouHik+MQGfQkSWOAyhYR+P7Ha4nJ0Bwz8vVHG1FQBv2dNWT9yaAEaIVIG6wSVv5pDkNr6U+4+HXjydpwEe6CRw3nHUe+Y/nYxn0WiLHXOv72caB+RpcbsY82h3i4y16keFevfvDnm/uHZ9PE20dvNYq2rlmwU1kwO380leHx7T+yts5IJXpobGq2xJ/sRhWF/1I7hdG+s/WCig85F0V49PqMZlrsGqedJrr6mUzo9hXVYA81aeMjX+2OwrF5z6lYZzwx54foFNsphMdlto6gzq2YjK29+Wu/hGc9gYBCWtr4RrWjsu6cYGEnkefIiz6c2O9Umr2O361NauAVd6jM7iFBUISvs/nhykO25mSz9QrRW3Am2NeqsfkvavC0Qgy8N7xO/zpYPFtcVrBLNVrjILzrFLQcyBwRS9AHiSxOuODkRis5wKwyjtsJn4bMaRkZEqSADTorYGJQR/A4tXGJyaadm2FNjYtwsIUpZMfgSfKpTmA6xM1SWdzxHc01HFTxeAKrzV8zTtx9EpARXKBlYg5WjO98VzNhYB2Z8Br/quk7iGRIGux8XRbkbUA9iXiLpuUs75C5G+LpLcgFRXgwsbdgYMOxDfmPegm0wqsXODUePZ/dX+KA8fo+As4xCdr+1XLhL6Ut1WaMRDqs9wq8n5Mq+f2E+AQ==","w":20,"h":35,"aspect":"fixed","title":"Data Output Port"},{"xml":"jVNLb9swDP41ug7yK12OjZP2smFAO2DHQrZYW6ssGbQSJ/v1o2TJTYZ12MGwSH58fHywoh7OjyjG/quVoFlxYEWN1rrlNZxr0JrlXElW7Fmec/pY/vCBNQtWPgoE4/7iYJuf0DpCaNH4ZB7QQKcMK+5ZvhHDyIqdaSb/I1lTjF1Dj84FRSVap07KXV6MGIDkhKEEV7Doh0kzWnT/mcBD/x088BuerIalfIeiBTgR35eFyYLQpO2tloDTTWtuGQTLH6SC+1pGQLQpbOpz7sXbEUzukkqae+XgeaQKSJ5ptlR47wbf74yek0P7Bj+UdD1pKM6utcYJZQAjorVai3FSTYjISSPRjt8FduAixNgvcYTejNAecVIneIJJ/UpOcB6FkVFoRPvWoT0a+e3oNCWLesptaCfEksuHHsCJg1QpE1onkpmHaSrjQlOrHav2nlAvpJ2j+ZW4PC81ZJ6b0NrO94h2nmJAge0K+LTdlPyuLO8yXhb5503IRzWCjOBXpXVttcXQ2mJfHrKHam3ilYXzst5u1xU5ATo4f3gV2dUAH8ESZbwQZI5D8Yh4ObwH1fXRrajiFsWl6lbX9xujR1yKJMarS+L7dQfozfH/Bg==","w":120,"h":35,"aspect":"fixed","title":"(Trace) Begin-event"},{"xml":"jVNLb9swDP41vg7yK12OjZP2smFAO2DHQrZZW6tsGjQTJ/v1o2TZTYZ12MGwyO/jm4zSojs/kh7ar1iDjdJDlBaEyPOrOxdgbZQoU0fpPkoSJV+UPHyAxh5Vgybo+S8GWP6EioVhdemCOQL0YnwfJRvdDVG668vR/US24mFXyqNhr8h1xeZk+PLS6w5EXjji/ooW7GjRDEj8nwEc9d/OfXXdE1qYk2fSFcBJqn1xdcy4FV2LtgYab9pym79H/ijJm69JeEaFR56BpcmJE2/7P/JlyWhqDcPzICmIPMlgJe+WO9fsWJ4jE77BD1NzKxrxs6uwZ216oMCo0Fo9jKb0HpVoasLhu6YGOFB6/BLm52CC6kijOcETjObXYgTnQbvJeqHU1VtDeOzrb0e2EizoJXYvC6HnWM51B6wPtVkiEbJeYOWHaXr2Xc13Ub53BbW6xinAr1LL85xD7GrT1uJ0T4TTGBxqqlbCp+0mU3dZdherLE0+b3w8yRHqQH411hZokXxr0312iB/ytYlXiFJZsd2uG3ICYjh/eBLx1QAfAaVkughlCkNxjHA2qgXTtMEszcMaha1qVtP3A5NHWIpFDCe3iO+n7ak3l/8b","w":120,"h":35,"aspect":"fixed","title":"(Trace) End-event"},{"xml":"dVPBboMwDP2aXCcgotuuUNrTLmulnVNwIWsSoyQd7b5+JoS2TBsC4ff8nNixw3ipL1sr+u4NG1CMV4yXFtFPlr6UoBTLEtkwvmZZltDHss0/3jR4k15YMP6PADx8Qu1JocRh3GwdnLkRGugXg/U7Kph8R7RaKOn05Aq64Nhfe4hyJWroUDVg3SKJOadshMt0nb/OO1g8mwZGacJ4MXTSw66nFYkY6FSI67weM03JdJ1ocIjaVgnnou28xRN8yMZ3UXpE40tUaMM2PAkP8VRNa4ir6YDARuEu5jMKwskUoj61IbV5DYOGFEWNWtZRKc4enfyeAx2lLU27x35JFOg96iVHaEXIAsWLQ9h7TFqDF1Uj/VyDVOqhhopvnqvsVu2DZ7V+XeXjgj1K40Mb8oJe6n2ZPOUsJ1E5YrKJ+YXTG07venp5MTXyC6yHy78Dlj70dwtINdgrSYbYDPK+TDOYdCDbLkbxyIk4NO0t8j6tZMSRmWGc3xne70mQLq7RDw==","w":80,"h":30,"aspect":"fixed","title":"(FTG) Type"},{"xml":"dVPJcoMwDP0aXzssJZ0eC1lOvTSZ6dkBBdwYizFKk/TrKxuTQCedYZGenqRnWxZp0V42VnbNO1agRboSaWERabDaSwFaiyRSlUiXIkkifkWy/ica+2jUSQuGHiTg/gtKYoaWe9ds6YOZkS3wj3GRvrlvktG1GyBfr/1ADQNdWlIH6Yr4iJYlNKgrsP1Mgi/5IMHX9fjOd0gm6hPnzhfW03VsbPFkKnBUVpmfG0Ww7bg7A2feP8Yaat2aYjb7RlZ4Dtxay74Pdk8Wj/CpKmoC9aC0LlCj9W3SVbp+WbGMXGpVG8ZK3kqwjoiGtkHPM/t+D3NZHmsvbaxh0DAjL7FVZWgqT4S9+oFRA8tWpmZvwZ4FDsm9LxvfFE4ULZavi8wxWyC5qhQFYofKkN/1LOeHT62InjKRcU7hfLYZ+ePHNz++8/lhHUiSgo6Jyh12cyBHImwDNhzgN1iCy78jGE/OdQPIy7BXppzDIThGNIxp1ICqm5CWBkyGyapvqfeBZiPMyuiGER/d+1Xy1NlN+wU=","w":100,"h":30,"aspect":"fixed","title":"(PM) Artifact"},{"xml":"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","w":160,"h":40,"aspect":"fixed","title":"(S/S) Service"},{"xml":"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","w":160,"h":40,"aspect":"fixed","title":"(S/S) Storage"},{"xml":"jVTBbtswDP0aXwdHSrr02LhdLx06dLsXsk3b2mTTkOQ42dePkuVERp2hBgyIj3wkRT4o4Vl7etaib75jCSrhTwnPNKKdTu0pA6USlsoy4Y8JYyn9Cft2w7vx3rQXGjq7QsD8NxSWIpTIXbFH79xN8HsJptCytxI7AqdUKy7Peg2ZfDklCmhQlaDNso/2DRVMkAah3jFizT0zZy6vY+x5pplG9O5YnJXsqABP+GFspIWfPRUlx0izI6yxrbvPho45DhRZvuQXQBR/au3Q18FSGgi4kX/dcftlf8/3+5Sle07fV+eqsLMZKtS+C175j/BSY/9L6BrcdFMCCgoUlFJfbKVEb2TuL+CQFo+CrJcwcQdpKAZt5BHeIPTgUbTCiogIVjyV0oZuK6lU1NLd/fbAaGqHaZpH0BZON1WwiYb8DEip9ZlCRlnaJkTcTUpJG5B1E2jbgImw1/pCvWT7gbJzippr84lxnky+5GNVGbCxIukQdXSFvBJmM8hmXfOhxFGoAWZFs6WIInGsaWfWmDSYDTmwG5JxO6GQh672eTe7T29SO6f4IImrhDq6XoQIpXB80BpHE5BPLZmtLzkQdovFzHuKFMBWBMD+I4DFChf7ur5f03rj5+0f","w":160,"h":40,"aspect":"fixed","title":"(S/S) Real-world object"},{"xml":"dVPbkqIwEP0aqnbfuKzKPsrNwXHUGVFX3wK0EAkkGyKIXz/h4jpW7RSVok+fTqfTfaIYdn6dccTSNxoDUQxXMWxOqeit/GoDIYqu4lgxHEXXVbkU3fuG1TpWZYhDIf6zgYZniISMIChsD3M6clSgHORv2Jx/UAI9JzgqyhPlORKYFgNPUAQpJTHw8unULkvnmEYCV1g0QcOg5+4F6i18rr0Uzf24MkWsNUsBRYTJj/PRC53ST1x396e+yVvYdnbbnfbTCdlm86VvMSNUzb95drWspT0qvCadZO/GOWNHbL9tSr9KF27AwF0purVbZHVpvEtLq6PosE3JSDeO1PesiTmn82OiRtGlus7HTlabxi/LqGJ3vHl9+ZhQx0z8IEaXZnWRg9EtIOeb5i4Dflhc6NI7IF/8Rt709Xg9xXtZ5rrJNajetcN4H9D4pQrXpTXbIbFkN5Pu/e1ZJvFWe2bWB3nbn4ph1SkWsGGys9JRSzlIXyrydkSaNDmU+IbCrk9qi6lA4gvOQSA3xmIIjzllAeIJiIGPaCEQLoAPWDY6pvUAGHAsE3SkHAlmJawfLuuECbEpobybkeE67Sf9/WAr4AKu36pP+zLvGVCZkzcypMaxSPuISS9QNQWcpOLZhwaBJf92PqQsjUFCdziI+w4fj6gLfXpjnw==","w":70,"h":70,"aspect":"fixed","title":"(FTG) ActivityType"},{"xml":"pVZZc6pIFP41Vs283IJGE31k05BrtxK3wBsCaVabQWT79XO6wcTcWWqqxsSyz/b1WT48ThQ9b1elV0SYBWE2UcyJopeMVcMpb/UwyyZIioOJYkwQkuA9Qct/sMrCKhVeGV6qvwlg5yT0K/DIvDO/zBDG2cXLQ/gYg/M3loWDrSq9y/WDlblXxewy2jPPDyOWBWF5/XarQBEK1a/iOq66fVeEg81necGucfWJexsN98wRF78Xda26ex7XyCv48VqFFz/Ofkvc5dm4WtQ0j+9ND+XpetofP07qc3ZIX4mlFcpZmv+Rp62mEX12WXbRc2orSVq4sY53V6uO1ua+CM3NBGnHddpcFRtOcuP7ziHKZkhxmbXUnuev7NWlku/f6vb1yUibuTLVlDown3Y/X96emTGn1j7wbt3mBhNDWpglvWySfemsb4wsHc+qFt5S/em2H8EJ0tx2uRzWtuw8nfYseKnP26u2OnoVKfo5O1mHBECWm1Mxbxyo9veJojURNG1XQMtB0QBPQBdVOZ+dDMcyvMa9dxZ9krjMKq96kPOw8swgrkb3oGTF3itpWI12n10qL76E5ShDowPWjEIRljEACCOMJC6u4fZLpX3EWaazjJViRopp8D/QD4Otw7IK23+kpfww71XIALPswKWJgyoaPJ4H5kpRGNOo+q7zRubRz8gvjsNhpNBdHFn/L0/Ar7z3RgJb/p31d54q/4mnce5R+NR4E2Lfy9b8si1/APhjpBhnVlUsBweRheb5KS3Z7RI8tPNDvB4w1CymPLZinAPetRA1GR9xG0JumrhSvWuluwbOATBioqiDiJbXmgJTW6AQ0rcvBLmdNj2f2pvfS7H38ib5BqvXSqAE3UzB3az2c7/GidpgfdEHuR9bL27hvgf6WaELK1Ep7i1K9j6yDFva6BYNUJYGK247KCS2qLc6Fi6KpO3OkohB423SROudFFmmW58vNrXfg8xHi8rdabafzymJp80acJ1LSu0V93mLAnTsz0jOLF2iIscX/LTuFvkZzSTnM36WnJFE96sscU+z3t2plbWKpOBF6zfxvHbzxS1YLRX3ndTn0+HmQMwatYWDjjcfHehPk+vlzM9J4ZyaBxzIAy2a8P1V1GEZVoMTi74JvAzunPVrXXs95/gG+VXbpG2c9zdmreyFlUodNijdGJoBPZxaxqFfJ/YMMLrNbipbBu7gLJNY7XFKe5yAX2+jdXIQfcW98xCD0UZXp3jptMR4MwabqWBd4EjQN/g0Z5hj8bns025n4BZnTof7V4sYjmT39ozoU35/D36y8IM5rRMTZmg1oJ9ulg7PwwJ5avcHmQz4HdZVmfQO5GS3PL9h5pDT0pEA3xg5IG+E/z3OnvI4nFAKs292ho2IicHfv5GdKm0MFfTmQ5zdQi843onXB/lyuQcf4T/Gifp4PSIvk0qE+yeU+ytQV7cx8I3jkITeiM7lu781Bf8e7zm+BfnweAz4zifu0FfIcZgP73lPkuhEwNfuhSyRPRX+Y5yog+OJek3akb0L87Zmok9QN+fMQ5zgBMc7JoBnYiHf+3qPG/BGbsA8cOJIx0Tk30L+Bt6rMDeYR8LxzWaoU9TdYsPm+ingd1/+ePqFayKsf/a1JWPdxwQqTLGQiXEY/Me4oQ6zhf5CvcAPI4IaId5IR9tDjP44Q/WhtsH/3qtxfjIBjm4Aj+ydTz5uIDds+CDzZ0TcK3g89AF4nn7vM+f72OeW9Opnn/HeBn/ahLFVw3dP7SvuZUv5lyz/1+BHV3jfmHxF+hm7hA/yrxvVyzLWqGXJmut95/6yg3NWP0iwQS7wnfy4o0P/Vl7jOnzjgXftf9qa6O+35hiAlB/zp+ni6zUAPOxUhH6g+V/Xqvz8Q5H/72YF8et3q3D99rP2Tw==","w":70,"h":70,"aspect":"fixed","title":"(FTG) ActivityType (Composite)"},{"xml":"dVPJkqMwDP0aqmZuLJOlj4FAmnQ6+zLJzcEKOBjsMQZCvn4MgUmnavpAIb0nPdmWpFlOcpsIxKNPhoFqlqtZjmBMPqzk5gClmqkTrFljzTR19Wmm9w1rNKzOkYBU/ieBna8QSBVB0bkuNm7IXooSUL82OVkzCg9OCpRmFyYSJAlLW56iACJGMYjspWqj0gCjQJKCyGpbcXhwKJdMiQDudPOW6E5u1u7rpTJZdefIIsRrM5OQBoT+uJ688zjzQ9fd/y7v6nqOE9/3l8NoQHfxdO7b3Drrwz9JfLPtudNLvSoaxCvrGvMTcT43mV9EM3fLwV1opr2fxWVmrZRllEFw3EW0Z1on5nv2YDhl01OoB0Fe3Kb9cVwOrV+2VWC3v/l4Xw/YeBj6W4zyapGrjpk20OvdcOdbcZzlbO4dkS/fkDf6ON0u+KCOuawSA4qVcewftgy/F+dlZk/2SM75fcgO/u6qRLzFgQ/Lo7rtT82yy4hI2HD15Aoo1ZwoLJJJ3TtDmQIyckfn5p302mcSyS9+AhK5mMg2HAvGt0iEIFs+YKlEJAXR5UOQi4wUsK6FO5UChCQBoiNKwlRhCcG4LmGrvmBWtlEcBFH1Gi3VQcIzWD4h+0IodRhlommp5XnOuP+m8Mcc1CXg9u0UG1/GYwJMaYpKhZQEy+gRMXgMuh4BCSP5iqF2UMN/mc+VUEY7cZ3bLknnPpexCX3Z1b8=","w":70,"h":70,"aspect":"fixed","title":"(FTG) ActivityType (Automated)"},{"xml":"pVbZcqs4EP0aV8283GKxE/uRzY5yLWy8Bt4wELFaDGC2r5+WwImTuXdqqsaVFOru00e9CTGRtaxdFW4eYuoH6UQ2JrJWUFoNq6zVgjSdSELkT2R9IkkC/E+k5W+sIrcKuVsE1+oXDvQSB14FiNS9sM10bpxd3SyAx+ic7WgaDLaqcK/lOy0yt4rodbSnrheENPWDovyyK2fhCsWrojqqukOXB4PNo1lOy6j64L2NBvdWUWAP/O+Ge0oSE79mW1bdPcAydHO2LKvg6kXpH7GzvOglIoZxemt6yFvTkv70flae02PyaiI1ly/C/K8saVXV1GbXZRc+J5YcJ7kTaXhfojpcG4c8MDYTST2tk6aULViJjefZxzCdSbJD0VJ9nr/SV4cInner29cnPWnm8lSVa9942v982T1TfU7QwXdv3eYGrZTUII170TAPhb2+UXNpu6hauEvlp9O++2cIc9tlYlBbov10PlD/pb5sS3V1cisz7+f0jI4xkCw353ze2JDtnxNZbUKo5j6HXoCigQECXVhlrKkiLIugjHr3wuskMJlWbvUgZ0HlGn5UjXC/oPnBLUhQjXaPXis3ugbFKEOhfdqMQh4UERBwI7Qkystg+6lS36M01WhKC94jebnU9KcF6IfG1kFRBe1v51V86PcqoMBZdABpIr8KB8TzMNJCGEQkrL7q3HEkyYfn5/DDYhyhuzgeh385Gt8PhDtONvLux+E+p/J/mtMocwk8VVaEyHPTNdtsy04GO1+yfqEVnAcA8ChU10tIQW9X/6Gc7/z3wKGkEWG+FWUz4JY5z0l/j1p2qlS+pXLXCncNrH2YiImsDKK0LGsCk9rCCEna9sWUnE6dXs7tzeuFyH3ZCZ5O67Xsy343k3E3q73Mq3GsNFhb9H7mRejFyZ03X7vIZIFiheAeEfPgSUi3hI2GiC+lib9itqNsRoi4q1PuSKGw3SPB1Em0jZtwvRdCZDj15WoR681PPWlROXvV8rI5MaNpswZe+5oQa8Uwu9CXTv1FElOkCYTH+IKf1t0iu0gzwf7wn8UXSSCHVRo751nv7JUKrULBf1H7TTSvnWxx81dL2Xkz68v5eLPBZy21uS2dbp50JD8NphdTLzNz+9w88EAc0qIJ3l55HkhHDY4R2XG+FPac9WtNfb1k+AbxVdu4bey3HUUra4ESocM6IRtd1aGGU6Qf+3VszYCj2+ynItJxB2vRjJQeJ6THMeB6S1rHR15X3NsPPljaaMoUL+3W1Hf6YDNkrHEeAeoGT2OGGRfryyHp9jpucWp3uH9Fpm4LVm/NTG3K9u8BJ3Ic9GkdG9BD1IB+ulnaLA4E8tTqj6I58HdYU0SztyEmq2XxDT2HmJa2APz6OAPihuPvftaU+eGYEOh9s9ctyTQw4L2buVeEja6A3njws1qoBeM7s/wgXib3gOH40Y/nx/LhcRlEMBk+JgwvQ17dRsc3xmPG5GZqTL7j0RTwPT4wfgTxMH8M/PYH71BXiHHoD6t5b8bh2QSs1XNZMA+E40c/ngfj4/kapDMPDvQbzXidIG82Mw9+fCYY3ykGPgNz+V7Xu9/AN84G9APHtnCKefwtxK/jgwJ9g37EjN9ohjx53i3WLaafAn/3icfTT15DwtpHXVtzzPsUQ4YJ5rKpHwf86DfkYbRQX8gX5kMPIUfw15PR9uCjPfZQechtwN9rNfZPNGFGN8BnHuyPedxAbFj3QGZnhO/L53ioA8x58rXObN7HOrdmr3zUGR8swJMmiFAN757ak53rlrCXLPtT4WssuN+Y7Ir0UnoNHuTvN6qbprRRioI25f3O/XYHZ7R+kOAGucI7+fGODrxbUUZ1sGOOd+1/ujWlX9+ao4Mk/5g/TRefv4Hg4U6VpB/S/J/Xqvj8Qxb/780K4ucHLYd++d79Gw==","w":70,"h":70,"aspect":"fixed","title":"(FTG) ActivityType (Composite, Automated)"},{"xml":"dVNNj5swEP01ltpLBSZE22MC6V62qrS7Us8GJuCu8bCDE5L++o6NCRupK0Kw35sZv/mwyIr+8khq6H5iA0ZkB5EVhOjmVX8pwBghE92IrBRSJvwK+eMTNg1sMigC6/7jgNUfqB1bGFX5w8pAbg3b7sdBWWZGdzUQmO37ycvY12iQRLZjktrqCwfkX8H/H1ZfV3NetfM3t6oH/iwnVLRyM8LC5mMXOKjvnzFKkI6UHY9IvXIa7cyHqIHd1U6ftbu+XgeIvkbV0KFpgMa7kiwVkn57X7w1Y0l4sg1405TlTJ128DJwRAYm7hFjnetNpEdH+Aa/deO6iNRondIW6LY3Rg2jrkL8hJGGcHhV1IKLJorqF/3X0w/f8s2GSym3m/Qh2yaetfgUG+WdCeoTjfoMzzDOPh6FC1ewiZtK1W9tyOLXyRmWEnFWZrnzalbiQ/fg1KHRiw5CpxbaOwyorQslzPciL326nWpwivSRM426U+nTMAanHRFOYwwYLGJlk1u1inmWSote2v6ojVkgIbND6Z/bIJyBHFw+nez0QysfATkhurLJFBviLfJ5+pMOdNtFt+8RU3FA2pvrek94Ecdj2cabs2zXGxpM7y7wPw==","w":150,"h":90,"aspect":"fixed","title":"(FTG) ActivityType w/ ports"},{"xml":"dVNtj5swDP41kbZvFNRK97HA9b5smnR3fyAQF7ILMTOhtPv1c0JSrtJOAmL78RuPY1FUw/WF5Nj/RAVGFM+iqAjRrdJwrcAYkWdaiaIWeZ7xK/LTF+guoNkoCaz7TwA2v6F17GFk44vVATwY9i2nUVpGJnczEJDDn9m3UbZokERxZJC65hsn5Kfi7yfp++bOUreeeysH4CNVaGjDVgs3tpZN5tD98IqxhdyRtNMZaZBOo13xkDWgx9bpi3a399sIMdbIFno0Cmh6oETODjkJqJR3jhGJutyrj6xuVORLrx28jZyc9YXHxd32bvAU7gJF1kltge66MXKcdBPiM7YowvFdUgcuulj8EWfgYYJ2pklf4BUm/TcFwZXJUVFpZPvREc5W/Zqd4WLRzrUtD1WutXzqAZx8VjpVInQywT5gRG1dYGdfin3tR99LhUuEz/wvb2sPO2aklMbgciTCZbon5CYCk16bHOEHVOslqS36xsqzNiaZRF6cTlV9eLpP+ALk4Prlld19GsULIP8O3dhl0cr10WO/XuusB931Mewp2mScfHcP3RaAhTjepMaVSOq2esH1YTP/AQ==","w":150,"h":90,"aspect":"fixed","title":"(FTG) ActivityType w/ ports (Automated)"},{"xml":"pVZbc6s2EP41nmlfzoCANH7EiDicWjjEzgW/cYsAA6IYm8uv70oIx+k5p9OZJk7Q3j7tfrtCXmhW2a+boE4Ji5NiodkLzWoYa6dV2VtJUSyQksULDS8QUuBvgR5+YVWFVamDJqnanwSwME+iFjyKIOSbYWG8K8B3daqDCiyndigSYbn768zTWEWsYM1CM8HY0PA3AISPBf9vVr9/usOKTk+jCsoEHvMOYfNpmzSQ2LTtrBbZl89MpoDaJqhOH6wpgzZj1WQXqMJqRm12ydphP9SJjC2CKElZESfN6QslEStrdsraK+5ZRszUIS5+ZfWTCtSwcxUn3FWFPLsUgHY1bAWKDpoHurQtC2k+tQ07Jm9Z3KZSE7GqDbIqaa5yUQT1KQsFvgKauGH1Pmho0kqXoIl22cjN998MXQeO0Z2u3mt3CrdWbCM7yIObJDo3p+ySPCenKYZrkx6ojaUQBtGRiiq257aAVKQeMqtgJIIpEw5dJm1gx9mcR8PaYDbzgJplVSu4NVYLA/Ny0yBmnTR/QKUybxXxMoqCdWbTsO4kAYWHZFa5smVNQ4YrxlNbfWRFMasWSLMx/71OyCVp2qT/5cirN61cJwwKagZw6WRDuIcxHQslTTKayrCl1AVycug19PMAwUKOxyzKI/Uvx+ufMx3IqXWieaLnGdT+dQaB55ovszKgnCPOQhYFhZiEJz7c/IhoOGRty0pwEFmsro2/4fND/NxgmEVGeWzL+CwHp1rUhD+yng/9Smxpzlpl1sA6huGAd8Mkwmm+0AVa9XAUkPX06KLDsNLDt/4cjUoWPD4rEWaXjRZr8WBoZDAuURldSG52xFqOcRllzuOhPrzHVqjRpZOblIwOdfcRcrCnbC2Hxqg4xmtue9HczKHB+rU+oFR52jmKi2n2lHfpZqekjn24hJVHvfe4iNCyPexWXlTeUzfTuw3g+tWRemvu85zG6HUMkVo4lkJFjo/kbjMsyxAZin+NN/IQKXS/LvLDmzEedmbrrFMlflyN2+z+ciiX53j9oB3e3Uv49nL2IWaD+tpHr+cIvdA/ba5Xi6h0a/+tu8GBPNCyS96/izoc7HQkd+izwCtgT2PcWKvvYUnOkF/7lPed//7MnLW3dI7KQDClW7zCwKHu4Jdxk3sGYAzbna46mAywVt3MHMmRjiQHv9FDm/xF8EpG/yaGoK1l6uTB7138jCebrRFL4CjAGzxtg3As3pf9cdhh0pPCH8j43XGxr3ijZ7iWzvcfwU8VftCnTW5DD50O9Pr2wed5OCDr3viiuhP+QCxTdUcfcvJ6nt/Uc8jpwVcAH8sZULfCf47zdB5Hckqh990Oe8i1CfhHZ3dnKltsgt6+ifN64ILjvfH6IF8uj+Aj/GWcqI/XI/KyqeJy/5xyfw3qGraYnDmOm9Oza3F59nd08B/JnuM7kA+PJ4DvX3EnXiHHqT+c89HN0zcXfL1RyIq7p8Jfxok6OJ6o16aDuz9Avx1D8AR185m5iRMzwfFec8CziZBnXue4CU/OBvSD5L7ymov8e8gfk70JfYN+5Bzf7qY6Rd09wR7X64A/fPoT/RPXRsS68tq7su7XHCo8EiG7+GXyl3FTHXYP/EK9MB84hRohHh+l7SbGuu2heVPb5D9zJfunujCjW8Bz9/51HreQG8ERyPyMiH3FHE88wJwfv/LM513y3LujeeWZ7D3wp12SORd491wi7VA9Uf6S5Z8fLs+SXW6kht/WX+SfXeNfb9Af72zlv16L6OfX4hwwX1XDJOuTdHNpIvQN3f94bap/fNPU/3tzgvj5pVe4fvlO/Dc=","w":150,"h":90,"aspect":"fixed","title":"(FTG) ActivityType (Composite)"},{"xml":"pVZZc6pIFP41Vs283IJGMtdHpNFwx8bgkgTf2NKAQDMIsvz6Od2AmrvVVE3KaJ/tO9uH7UzRs3ZdukVEWBCmM8WYKXrJWDWcslYP03SGpDiYKXiGkAT/M7T6hVUWVqlwyzCvfhLAvCT0K/BIXY8nw8L4lILv8lK4OVguVZeGwvL0T83LWPosZeVM0cBYUu8PAISXDu8Ppz/v7nCiw6eau1kIH1MGr7zbBg0UNqSd1KL6bMfGElBVuvnlg5WZW8UsH+wCVVg1v4qvcdUduiIcY1PXDyOWBmF5+TQSn2UFu8TVDbceI9y6YoAeBt8bppkiLn4e931GqGR1HohgGRpoIsiwL6AGUDSwVdBFVZaOZp/llRvnYXmT09QtLrEn0CTQBCUrDm5Jw2p0ydlmXBU3l6Ffl5f4Gu7CS9xPQWELMwxGwXP9MxVVbesqhWSjHnLnsHt3yMWhs7ByjSCeMpWsciczDyhYnFdiiOpypmLOkMgNWDOaP6CX/VCDDPNZumnKGq0sWXMZAS9Vyc6hPrAH54yXsvyI03RSzZCyWun4aXFb/TUsq7D9JZflh1WsQwYNlB24NHFQRaOHOvBdisKYRmPYYtS5IyXoLfT+ZMBhXO8kjs/Kb56b78nqjnQ0/YmqE4eU33II5lrwY5y5lM+ITyH23VRs/oWzlnNfwR6rgKvgIKpY3hb9MM8P8feAoaUx5bEV41x0L4XoCX/ELSftUqTUJq00aeAcABngoR9EeEyvdIaWLVAZ6S/PFjp1y7n31tZ+L8Xu807yMbtulEAJOlUhnXr1M/9KEq0h+qIPMj82n0/F6T3QPYUuzESjpDepdfCRiW1pq5s0QOk5WHPbUbFik7rr1+KEIullb0oWpvFL0kSbvRSZxunq5Ta134PUR4vqtF/afvaVWvG82QCuk5+pveY+uyhAr72H5NTUJSpqfCZPm26ReUiVnFu8mnhIood1mpze1P601ypzHUnB87Lfxl+vp2xRB+uVcnq3rt7bsXYgZoPawkGvtY+O9G+D6+XUz6zCeWsecKAOtGjC92+iDxObDUlMuhN4KeRU+42+/OZlpIb6qpekbZz3HTPX9sI8Sx3BlG7xEsMM5yY+9pvEVgGj2+7nsolJB2fZirWenGlPEvDrbbRJjmKupHceYgja6tqcrJzWwjs82AyF6AJHgrnBp6ESjsX3cjh3e0xakjod6b+ZFnYku7dVS5/z/D34ycIP9rRJDNih2YB+vl05vA4T5LndH2VrwO+IrslW70BNdsvrG3YONa0cCfDxyAF5K/ynOHvO40hCKey+2WMbWQYBf7+29pq0xRrojYc4u4VZcLw33h/Uy+UefIT/GCf64/2IugwqWdw/odxfgb66LSY1x7ESWls6lyd/cw7+PTlwfBPq4fEE8J0b7jBXqHHYD595byXRmwW+di9kyTpQ4T/GiT44nujXoJ11OMG+TVXMCfrmnHmIE5zgeK8J4BlEyNNcp7gBb+QG7IMkjvSaiPpbqB+TgwZ7g30kHN9ohj5F3y3BNtfPAb+7+5P5HddARL/NtbXGvl8T6PBMhGzh4+A/xg19GC3MF/oFfuAIeoR4fB5tDzH64w61h94G/2lW4/5kCzi6BTzr4Nz4uIXaCPZB5s+IyCt4PMwBeH7+PGfO93HOrdVrtzmTgw3+tAlj8wrfPVdfOeUvlH/J8tcPl2XGrg9SyW/nT/LPru3PN+aPd7T0X69F9PNrcQqYrqpukOeD9HBpIvQFff3x2pT/+qLI//fmBPH+a1a4fvqx+y8=","w":150,"h":90,"aspect":"fixed","title":"(FTG) ActivityType (Composite, Automated)"},{"xml":"dVPbbqMwEP0aS92XFTGlKx4T0vZlV5XaSvu4MngKbg3DDiYk+/U7NiYkUitC8MyZy/FcRFq0x0dSffMLNViR3ou0IEQ3n9pjAdYKmRgt0r2QMuFXyIcv0E1Ak14RdO4TByzfoXJsYVXpk+0DeGfZdjeyenAnC0F993f0HHYVWiSRbhmkurzhaPwr+P/i9G0151M9f7NOtcCfJXxJZyxEY8id+ksLZjmu/uEe7TNGPlJVzhyMO81ICH6l/zPn82CIG8BtBF9DphDSqgoatBpouKrZUkLpxevqrlWRhGOnwZtumOXUGAcvPUdkxcRNZF3jWhvhwRF+wG+jXRM1FXZOmQ7oLFur+sGUIX7CGk3YvyqqwUUTRdWL+efhH99vszTL8lze5nmeMtbhz9hH70pQjTSYAzzDMHt4LRx71ekolKr6qMMdnkZnmUjUM6+OB0PNPHzaFpy612ZhQejUAnuHHk3nQgGzncj2/rKN0jhF+I3vGVlvpJeNtcU8SVzF9GHrH385a3HaEuE0xERzMw5ADo5fzvTmokePgMyVeC6SKVbaW2Tz3CcNmLpZ3OIyJCq2vj77rivCh9j4RYxLs4jrcgbTq939Dw==","w":150,"h":120.00000000000001,"aspect":"fixed","title":"(PM) Activity"},{"xml":"dVNtb5tADP41SNuHVnAUwj4mpOmXTZPaSvs4HeDCrQdHjQnJfv18xxESaZV4OfuxH7+cHcR5e3pC2Tc/TAU6iB+DOEdjaD61pxy0DkSoqiDeB0KE/Abi8AkaOTTsJUJH/3EwxR8oiS20LGywvQNTzba7kdUDnTU4dfox2hx2pdEGg3jLINbFF2bjJ+fv1enras6nev4nnWyBfwt9gRfMsTFE5/7agrMcV39XR/tsfD5ClqSOis4z4shv9L/neBZ0vA7cevDVRXKUWpbQGF0BDjc9kyOZVhL4ThKO3mPprbDibdvXdgk0Y1c554jTnxpF8NJzKFZMfLusa6jVHh4IzTv8UhU1XlOajqTqAC+y1rIfVOH4Q9ZUaPpXiTWQN5FYvqi/Ft7cJ1H6kIYiC/kVWcZoZ777K7bOCOWIgzrCMwyzj9XCqZdd5YVClu+1q+LnSJpT8XrOrOOZkXMmNnALJB8rteSBhuQCW4feqI5cb5NdkOxtuY2szOThN67U5x0JW4bWZtoimmnwhG9K63weO+5sfDjk+/TbZSaOgASnT8c9urqlJzCcK/LIhOcZvYvuozjN0izebESURmkYw10UzzSTvw/LksxrEzag6mah9rsUSj859YV/3TA++PFYRL9zi7jutjO9Wf1/","w":150,"h":120.00000000000001,"aspect":"fixed","title":"(PM) Activity (Automated)"},{"xml":"pVZZc6pIFP41Vs083FTTiDGPCGi4Y2NwicGXKbY0IIiDIMuvn9MNKNZNbk3VJCp9tq/P8rXtSFSSapHZ54Cknh+PRG0kKlma5u0qqRQ/jkcYhd5IVEcYI3iP8Pwbq8Ct6Gxn/in/IiB1It/NwSO2HbaZyo2TGHxnBagveR37XD35p2A5zNw0TrORKIMxo84fgAYvBT4Hqz/v7rCi7VM62YkPjx7eyW42jgamvD4PPSDL4h7P60jWaZcPtt08vIZ53Vo4+IP+73Y/ZuS43Ch3xi3fiUPGtusHaez52eWhZ26anNNLmHeReVZ0EX1vMRMf235vF87S4uT5zFWA9MsAgDZn2AoUJUwXdEGexJ35kmfp0d+HXh50Gjc95XZ48rObHMf2+RI6HB+BxsvS89bOqJ93LnbmbsKGmZ+fJGEyniA8RfDG0ylYT+myGzELzny3yC7h1V/7lzaGaf3qbJ+8TnBs90h5FasijyGVTg+ZnYAzdpsJ2zjxc1vzwj6PLM3t3swCzml4ynlvpdlIUlm5ge2lZWf+hEq7vAXMyojjtJSzLC0vHeBnGMdKSzvorDiX2f+NE1c/y/3qW7oLgykt/BRyzYAyqG6tP4QnQZxMJ1Px+RkLE2GCRP+HILYwZTcPhiK1xwYFfkiDHro7S8jumENv+PcTBouOHr3YnbnfnL/vqK5D7x85KP6Wg9BnTvwwsSk8Z6xVoWvHnAlvjNwhAIqqk+Z5moADz2J2G/yg6Z/8b4AhxyFlsXnKuGxfzrwm9TOsGOlnfEu516JeA2sPyAEnvhXx/HKlIzyr4Chg5e3VwId6Nnb2VeE2KLRf18hV0+tS9ESvlkRSS1c3ca8kkkuivDRe4ob66+F8+PAUR6QveiRT0ujU2LpYV020UnTq4fjoLZhtJxqhTu3F+/mAA/S20ZGh0vAtKoPlBgW6drg6J5OaH17s4pf8sJmZbjKlRjgul4BrnY7UXDCfdeDh98bBQqwriPIcX8lkWb8kDpaQdYuXIgcjul3E0WEvNYeNnOuLAHmvs2YVTq+H5KXwFnPx8GFcnf2usCBmiauzhd8LF+/oXxrTC7GbGGdrXw5wIA/8UvofP3kduqqXJNLpmuPFsKfULJXZTychBeSXv0VVaX2sU31hvuhHVBOV0pU6U6GHY13dNcvIlACjXm3Ggq6SGtaCEcoNOdKGRODXmHgZ7XhfSWMNYgheKfKYzK3KUNdqa9NEonAcBH2DpyYRhsXmsj3WG5VUJLZq0vzUDdVCZmNKhjJm+zfgJ3A/mNMy0mCGegn68WpusTx0kMdmsxOMFr8miiwYjQU5mRXLr5055DS3EOCrHQeEFffv48wxiyMRpTD7cqOa2NAI+LuFsZHRSpVBrw3izAp6wfD2rD7Il8kN+HD/Lo7Xx+rheWkUGcw/osxfhLrqlUoKhmNEtDAUJvf++hj8G7Jl+Drkw+IJ4Fs33LavkGM7H9bzxoiCvQG+ZsNlZGwp9+/ieB0Mj9er0drYHmDeusT7BHUzzgziOCcY3nsEeBrhct/XPq7F67gB8yCRhd4jnn8F+atkK8PcYB4Rw9fKtk5ed0VUk+nHgF/f/cn4jqthotz6Whld3e8RVHgkXDbUXevfxbV1aBX0F+oFfqgB1Ajx6rGzDWKU4QzlQW2tf9+rbn6CARxdAZ6xtW58XEFuRHVBZmeE78t53PYBeH587DPje9fnymjkW5/J1gR/WvqhfoXvnqsrHk5vlH3Jstcvlyf8BPSHcsbu64GcpNeB9Hg3f3/RP96x6L/epfjru7QP6K+u7m4d/3KLYvyEp1/co89PovB/b1IQ77+SuevDj+h/AQ==","w":150,"h":120.00000000000001,"aspect":"fixed","title":"(PM) Activity (Composite)"},{"xml":"pVZbk6I4FP41Vu0+TFcI4ugjErSZNdi09gVftrh1AEFcBLn8+j0JYOPO9NZWbZc2Obcv37mEOJG1tF7nzjmkmR8kE1mfyFqeZUW3SmstSJIJRpE/kckEYwTfCV59YZWEFZ2dPDgVvwjI3DjwCvBIHJdvRoRxloDvsgT1pWiSQKhnf5Wcw9LLkiyfyCoYc+b+Bmjw0eD/aPX7pzusWPdUTk4awGOAd/ObTaCBqWjOYw9gWX7GizzS56zngx2viK5R0XQWAX6n/7PbjxsFrjCqvXEvdhKQieMFYZb4QX65q5mXpefsEhV9ZJGXfYRTFlnqFIH/T8NQdMzF+3581hHnWXnyRbAEeVUh7LA7AwdQVNB20IVFmvTmS5Fnx+At8ouw13jZqXCiU5Df5CRxzpfIFfgINH6enfdOzoKid3Fybxe13Pz9QZFm0xnCcwRfPJ+D9ZRt+t7z4DzwyvwSXYPn4NLFcG1Qn52T3wuu4x2ZyGJbFglQ6fXA7ATD5HRM+MZpUDi6Hw088qxwBjMPOGfRqRBFV5YThfB0Q8fPqt78AZn2vCXM00iSrFLzPKsuPeBHlCRaN49QWXm10shscRuWa5AXQf3lOZBGXVoHGXDNYZZQ01m/SQ+SPJvP5vL371iaSTMkB98kuYOp+n5wFKU7TygMIhYO0P0hQ04/UuyG/3n0YNGPxyD2h/FfDuZXZ8CA2t/PoPyvMwh1FiciSh0GzyUvVeQ5iZiEJz71EQDKxM0KmHVwECyWt8aPiv4h/kYYahIxHltkfJady1nkRD6img/9UmypDlo0aGDtw3DAq6AT8epyZRO8rOEoYO3p0cSHZjl13+rSa1HkPD4jj2TXjezLfqPItFGuXupdaaxWVFu0fupFxuPhfHj3NVdmCyNWGW0NZu49bBALbTWD+Tg5+mtue5HNyGDO+vV8wCF62hnIJCx6iqtws0OhoR+u7sli1rufeHhRHHZLy0vnzIym1QZw7dORWWvu8xz6+LV1sZQYGmKC4yOdbZpF6mIF2bd4JXYxYvt1Eh/elPawUwtjHSL/cdluo/n1kC5Kf72SD+/m1X17KW2I2eD6bOPX0sMv7A+d66XES82z/VaNcIAHXlTB+w+Rh0GMisYGexZ4CeyptBtt+cNNaQn8iqe4ruz358xYWwvjiBpKGNuSJYEaTg3y0m5iSwGMZrubSgahDawlM1JbemQtjcGvtfAmfhF1pa09iqF4q6lTurJrkzyTzqbLVBM4COoGT12hHIv3ZX9sdoTWNLEb2v4wTGIjq7UUU5vy/Vvwk4Qf9GkT69BDowL9dLuyOQ8D5KnVvkhmh99QTZXM1gZOVs35dT0HTisbAT7pZ0DaCv8hzpryOBozBr2vdsTCpk7B3yvNnYq2RAW9PoqzaqgFx3vj+QFfLrfgI/z7OJEfz0fw0hkyuX/MuL8MeTVbQkuOY8asNDUuD/7GFPxbuuf4BvDh8RTw7RtuV1fg2PWH17w14/DNBF+rFTIy90z493EiD44n8tVZY+4P0G9DEXWCvPnMjOLETHC81xjwdCrkoa5DXIfXzwb0g8Y2eo0F/xr4E7pXoW/Qj5jj61WXp8i7psTi+ingN5/+dPqJq2Oq3epam33erzFkeKRCNslL59/HdXnoNdQX8oX5ICHkCPHk2NtGMdq4h+oot85/qFXfP8mEGd0Cnrm3b/O4BW6UeCDzMyL2FXPc1QHm/HhfZz7vfZ1rs1VvdaZ7C/xZFUTGFd49V08+nJ4Yf8nyz0+XJ/w2DMZyzu/rkZxm15F0fzd/fdHf37Hov96l+Nd36RAwXF393Tr96RbF+AHPf3GPfn+Qpf97k4L4+fNZuN79uv4b","w":150,"h":120.00000000000001,"aspect":"fixed","title":"(PM) Activity (Composite, Automated)"},{"xml":"dVRbd6o6EP41rLX3Gxex5VFQu62V2nrvy1kBAkRDgkkQ9NfvCaK2a539IM58880lycwYTlA0LwKV+YwnmBrOyHACwbm6SkUTYEoN2ySJ4QwN2zbhZ9jjf1it1mqWSGCm/seBR3scK2BQFOlkw9bYp8D1KxAyLRi2y1CB4Q+IhjPQX9tV5/IKXdmReNCvCCT5HuKEhSSctS66pjZkm/AaXGNtzBZbttHb2imKcc5pAv4/D1V8ctrRkVAkRbH6755FM25KSzldD36/GlurP29NqvMtoMxRW4pUmMWE/lJf22TPZ9losklzJcPFCRHac6L0w7D9o3Q3qyx7OVYQVJ+b2/kSVea8jhe7i3/pFZOG5W/DwBK1f1DvSAbAW7hNAVn9GepVvcKNkG/OFT1PwD/HGcVypiNNGNrHZz84+iSMxdMk4WsVmxfwk9O39SLwx8heBa6Z/3nJ46nnhemwqebgmR1zXUp2iIu38YSdt64HTqfd/tmz6pBOvV20O6bi4KHdMG/WDDl27+t9IP9IOb0E56+iWT9t8978s/TWYQKu1nFu8YGDR4uN25vb5mX39Tqv+IrNnAUkCptwELDVuJrXY5OMqudl9TEdfZRqt2HH5+m7s80kV59hLD+KQT4e4vB8qqPV29Nhvg0I89JoYL7uoXwLLmUc1PZrWuu3cIa/oYHqnCi8KKEVAKhhPADLVaFb1tLdh+JDJnjFkvdKUcJwh7cQ1i8OjevDoya87pSMIik7ueSEKSxGJ5iSGyaV4AcccMpF2xJOf+j13T5YUkLpN3zkjJ9Gto4oUEIgws3GuK7DR5RkugdjrHMAAG2pSIzooDMUJEl03/kpZ2rR9eCjhA1JVN6dR8INEJaB1n9oS17eHK6Az5XiRYfFvCDxXWYKwe2ITk8EL5dIZFjdCZSiUpLoXoPgCin0TcdxBVN1wp9YkssNLbBCo4Sorsz7+Cnc/HMRWd8G8AVzCCHOQKm742qG1c1sjkmWd25OFwp12yC7uz7WGgjdUN/UbtHd1MdCbak/9u1f","w":110,"h":31,"aspect":"fixed","title":"(Trace) Versioned Artifact (w/ version)"},{"xml":"dVRdd6o6EP01rHXOGx9iy6Mg9lgrpfW7L3cFCBANCZIg6K8/E0Rt17rnQZzZ2XtmkkxGs7yifalQmc95gqlm+ZrlVZzLq1W0HqZUM3WSaNZYM00dfpo5+ceq0a3qJaowk/8j4NEexxIYFEUq2bhbHFLgujUYmTI002aowPAHRM0aqa9py3N5ha5sCPlNoJJ2mi7iVa2wTtRhy07eFUdRjHNOE1yJn1UXn5z2dFRJkqJY/ncCFuHsyrht01TuzxMQ8nzTihx1WYXELCb0l/zaJns+z/zpJs2lCBYnROjAitIPzXSPwt6ssuzlWENQtStu5ktU62ETL3YX9zIopi3L38aeUTXuQb4j4QFvYbcFZHXnaFAPCjtCrh5Kep6CPscZxWKuIk0Z2sdn1zu6JIirp2nC1zLWL6ATs7f1wnMnyFx5tp7/ecnjmeME6bitQ1Bmx1yVkh3i4m0yZeet7YDotNs/O0YT0Jmzi3bHtDo4aDfO2zVDljn4eh+JP0LMLt75q2jXT9t8EH6WzjpIQGocQ4OPLOwvNvYgNPXL7us1rPmKza0FJAraYOSx1aQOm4lO/Pp5WX/M/I9S7jbs+Dx7t7aZ4PIziMVHMconYxycT020ens6hFuPMCeNRvrrHso34FAmXmO+po26C2v8G9qjyYnEixJuHYAGWh2wXBaq/QwwIxQfsorXLHmvJSUM93gHYXXj0IQuXGrCm97JKBKit0tOmMSVf4KOv2FCVvyAPU551bWENRw7Q3sIKymh9BvuW5Mn31QRK5QQiHBbY1zV4SJKMgZujFUOAKAdJYkRHfULBUkS1Xduyplc9D34KGFDEpn3+xFwAoRl4A0f3pKXN8EVcLmUvOixmBckvttMIjidqveTipdLVGVY3gmUolKQ6F5DheMaXs8Jf2JBLneUSyTRg1VgifyEyL7M60tT+8TtP4eK8e0BvmAOIaozUJp+u4phXAePnmOS5b3M6kOh/uFnd+ljRIHRP+qb2w+tm/sYjh31x+z8Cw==","w":110,"h":31,"aspect":"fixed","title":"(Trace) Versioned Artifact"},{"xml":"dVJNbwIhEP01XBs+thqPda2empjae4MydaksYwBb7a8vC4vupvVAMm/mvXkDAxF1e145eWxeUIEh4pmI2iGGHLXnGowhnGpFxIJwTuMhfHmnylKVHqUDG/4R4PYTdiEyjNx2ZotUTJL2FQ3kjPfvRttDLpTWiTd29eFSJKD2sOkhJWIOVj05h98Rbg3uDm+NtjHdhLZzZTH8QBs2+qcTsA774PAANRp0qaWYzKo5j35zhyerQPWdlfRNAqwHaxkCOJsynFbZfKlNMcrX6Aa8+0ZscLcVYAvBXSLFgZFBf4110me4v/Ku0jVq2z3uJTMqOlZ4PLkd9KThEovuXHQPlIpHPqsYm06q6bhLkG4P4U+XGAxmv6XSqgrs11/g7Ztl9fAX/gI=","w":40.0035294117647,"h":40,"aspect":"fixed","title":"Trace - S/S Link"},{"xml":"dZLdTsMwDIWfJvdpA72HDnY1CbEHQFnjdoG0npxstDw9+Wm3VLBKlXLs88VOHCbqftySPB13qMAw8cJETYgurfqxBmNYybViYsPKkvufla93skXM8pMkGNw/AB4+oXHeYeQhFNvEZET6dzSQIgn/uABZjUPKLxWifV3cumkhQXWwnyVn4hkG9USE3142RlqrGx88uj6ULvyyxcHt9U+wF4uu0SDF7QSPX4hrY7J427ZlE7ayjvALsoyqDtVj5TOE50GBmvtIZwjd3b2nIjvYFrAHR5O3EBjp9GXNSZtkd/Vd0TfUQ7jgKTke+JqweKYGZlM+yIUbZ06sOSepA/eH84us21soTmaR89AXeXtcic7f3i8=","w":43,"h":40,"aspect":"fixed","title":"(Trace) Parent Version"},{"xml":"dVLbboMwDP2avE4BtGqvK9v6VFVavyAEj2TNBQW3wL5+DgnrKrUPKD7H59ixA6tqO+2C6NXet2BY9c6qOniPKbJTDcawkuuWVW+sLDl9rPx4kC2WLO9FAId3DL75BomkMKKJzaJAemujOjntpzdwJ7F2KCO8bT7gvFoGJfoYOo90bEelEY69kJEbaUjiFNrYuKCwEfLUBX927eGMRjvIfCvC6UAujTMx/Ik/EymM7hxBA1802fYCAbUU5jXT6GPxQf8sRWKVdO+og+nhdop/4+zAW8Awk2TULaqkeEkL5Ap0p7Jrs0mcGBLu/pzXVVOQN7TCvPwVXh95kd78A78=","w":80,"h":66,"aspect":"fixed","title":"Comment"},{"xml":"dZLdbsMgDIWfhvv8qA+wpluvKk19gYoGKzABrhx3Sd5+BEKbaO1FJB/b3zE4iLpx45HkTZ9QgRX1p6gbQuQUubEBa0VVGCXqg6iqInyi+npTLWO1uEkCzy8AvP5Ay6HDyus87BCLEXFntJAyLToX+AuoDlI1+8fm7eiep8yBVx9EOATl0YfkXslew8yWQWh2dgmTa/R/d+5yNeoI6IBpCi2DUaxTxy5drdBgOs3bHIGVbH639rJPsnvYPSZ8o/HzXqatTSZ6vFMLS9N6/5kbX3MsqQP+x4VgdalnKq40y+VfZfl8E4leP5k/","w":50,"h":50,"aspect":"fixed","title":"Comment Edge"}]`; ui.loadLibrary(new LocalLibrary(ui, encodedLib, "FTG+PM (plugin, hardcoded)")); // For debugging only window.ui = ui; });