1(function()
2{
3	Sidebar.prototype.addSysMLPalette = function()
4	{
5		this.setCurrentSearchEntryLibrary('sysml', 'sysmlModel Elements');
6		this.addSysMLModelElementsPalette();
7		this.setCurrentSearchEntryLibrary('sysml', 'sysmlBlocks');
8		this.addSysMLBlocksPalette();
9		this.setCurrentSearchEntryLibrary('sysml', 'sysmlPorts and Flows');
10		this.addSysMLPortsAndFlowsPalette();
11		this.setCurrentSearchEntryLibrary('sysml', 'sysmlConstraint Blocks');
12		this.addSysMLConstraintBlocksPalette();
13		this.setCurrentSearchEntryLibrary('sysml', 'sysmlActivities');
14		this.addSysMLActivitiesPalette();
15		this.setCurrentSearchEntryLibrary('sysml', 'sysmlInteractions');
16		this.addSysMLInteractionsPalette();
17		this.setCurrentSearchEntryLibrary('sysml', 'sysmlState Machines');
18		this.addSysMLStateMachinesPalette();
19		this.setCurrentSearchEntryLibrary('sysml', 'sysmlUse Cases');
20		this.addSysMLUseCasesPalette();
21		this.setCurrentSearchEntryLibrary('sysml', 'sysmlAllocations');
22		this.addSysMLAllocationsPalette();
23		this.setCurrentSearchEntryLibrary('sysml', 'sysmlRequirements');
24		this.addSysMLRequirementsPalette();
25		this.setCurrentSearchEntryLibrary('sysml', 'sysmlProfiles');
26		this.addSysMLProfilesPalette();
27		this.setCurrentSearchEntryLibrary('sysml', 'sysmlStereotypes');
28		this.addSysMLStereotypesPalette();
29		this.setCurrentSearchEntryLibrary();
30	}
31
32	/**
33	 * Adds the sysML palettes to the sidebar.
34	 */
35	Sidebar.prototype.addSysMLModelElementsPalette = function(expand)
36	{
37		var gn = '';
38		var dt = 'sysml model element ';
39		var sb = this;
40		var s = 'html=1;shape=mxgraph.sysml.';
41		var inh = 'strokeColor=inherit;fillColor=inherit;gradientColor=inherit;';
42
43		var fns = [
44			this.addDataEntry(dt + 'comment', 180, 80, 'Comment',
45				'1ZS7bsMgFIafhrXCOJGytk6bpZUqZWlHFE4NEgYLn8ROn74Hg5I4FylDlg6W///cgM8WrKyaYRVkqz+8AsvKV1ZWwXtMqhkqsJYJbhQrl0wITg8TbzeyxZjlrQzg8J4GkRp20m4hRSrfNLFZcIQBU7rDvc3pTss2SueRXi+d+Y2umJOW1tSOjIUfjKlWboyr30e3LDiFNDY2apK9NghrKontPZ2fYnkvEGjlm+cZQ/kwK/ANYNhTyT5lZ+m4vDcKdW6Y55gGU2uc1sku+fow6QiLROZ1nV15we6CFqga1tk67yIxcOo5BN+fRAaDX2T50yy77+hIK9lpUJnYCby0Thw+wdT5bdjA5MPeQW6KOoCVaHbTwdco5UGf3ow/S54izriiDDVgLjpDe9jDXbRnD6e9+Pe0i8WjcJM9Xjqp/PRO+gM='),
46			this.addDataEntry(dt + 'constraint note', 180, 80, 'Constraint Note',
47				'1ZQxb8IwEIV/jVcUO1BYIaUsVKrE0o4WvsaWHDtyDEn663uOLSAUJAaWDlHuPd8921+kkLyouo3jtXy3AjTJ1yQvnLU+VlVXgNaEZUqQ/JUwluFD2NudVTqsZjV3YPwjAywOHLk+QHTIfFVQki/RxXJLyRzdbE0nXXDYS4m5q+CwST+shfnG9zrNN5LXoTTW42vVqJ+g6AxrrlVpUGj4DiFNzffKlNtBvdIMLekrHWosW6k87LAljLcIaNh2OCw4D93dCw9Wuu0GbAXe9djSx9Vp5JG1SniZBmbJk6BK6cd9vIm6PCWdaWKRgN6Gm/+Fe00LRAm7JI01gRgYsXTOthdOp/wnymwyTeorKKwFbySIROwCXtwnhI8wNfbg9jD68g+QG6N2oLlXx3HwLUop6MMqzD+lsCuunrsSfGq6Qns6w0O0p0+nvfj3tOniWbhRnv9Ksf3yp/UL'),
48			this.addDataEntry(dt + 'constraint textual note', 160, 60, 'Constraint Textual Note',
49				'lVNNb8MgDP01SNuNgtSel6TrZZMm9bAzTdyASiAidEn362cCaZV+SN0ByX72g+dnQXjeDBsnWvlpK9CErwnPnbU+Rs2Qg9aEUVURXhDGKB7C3h9UF2OVtsKB8c8QWCT8CH2EiKw1NEjGm5aE8QUlPHsR5oRNdVCpShH4BsW+Rm7nTzpxOynaEDoo8fWs884e4FtVXiLIENlb47epf4G59I1OYS+Vh20rylDr8SnEhFa1wbREQeAQSGrBeRgeTjxCadwN2Aa8C/L7pCN0LKMrVIKqZaJNmOhiXp+pF/8wSBbet5Pf2ElWWWkNOiEU6mMUhXuyKm6sm0bVsPdzY8K0wfW31NGoqgqsTIsd6C/bKa9sKLg4y5nwcVWfEzNRHmpnj6bKrbZobmGsgWlH6ndcUbIEJzC4UrGb1NKnFsHuL2K4WsIpefd//zG9fJWxNvtJfw=='),
50			this.addDataEntry(dt + 'constraint textual note', 160, 0, 'Constraint Textual Note',
51				'lVNBbsIwEHyNj5WMI5UzCS2nSpU49GySJVg4XuQsNPD6rmNDSBskerDkHc+s7RlbZEXTrbw+7D6wAiuyN5EVHpHirOkKsFYoaSqRLYVSkodQ7w9WZ/2qPGgPjp4RqCg4aXuEiIh5XqJryWvDLZQk6EjMl5HX0tkm3gk8mVLbhTW1Y2iDRNiILN9Rw9dYzngKrlp4j99cOnQQkKqGdWqSIKs3YHNd7muPR1cVaNEPq1t0tDaXwJ9JrvlguIcvU9GOIcVIPFlo/NCDHkoGrAAbIH9migeryZzGOt3Gsr7xbtJPjJZcKS0efQkJvTf5SuxS51c57k3a10B/hDy5O98A9ZlN55dN5adduF0dHlVIqDeD7ZoI0UNrLnrTl3KcnU65Wtiyi/nvuAkP/84ubs+vy0FJadfbC5VhB+geZqimM0yCl6R4OtKR54PBXA6fL+Zx/zd/AA=='),
52
53		    this.createVertexTemplateEntry(s + 'composite;symbol0=folder;fontStyle=1;spacingTop=15;tabWidth=80;tabHeight=20;tabPosition=left;symbol1=triangle;symbol1Width=7;symbol1Height=10;symbol1Align=right;symbol1VerticalAlign=top;symbol1Spacing=8;symbol1VSpacing=25;symbol1Direction=north;strokeWidth=2;whiteSpace=wrap;align=center;',
54		    		160, 90, 'Model', 'Model', null, null, this.getTagsForStencil(gn, '', dt + 'model').join(' ')),
55
56			this.addEntry(dt + 'package diagram', function()
57		   	{
58			    var bg = new mxCell('<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>pkg</b>   Name</p>', new mxGeometry(0, 0, 300, 120), s + 'package;xSize=90;align=left;spacingLeft=10;overflow=fill;strokeWidth=1;recursiveResize=0;');
59		    	bg.vertex = true;
60			    var cardCell2 = new mxCell('\nSubpackage1', new mxGeometry(15, 60, 100, 50), inh + 'shape=folder;spacingLeft=10;tabWidth=40;tabHeight=14;tabPosition=left;fontSize=10;html=1;whiteSpace=wrap;');
61		    	cardCell2.vertex = true;
62		    	bg.insert(cardCell2);
63			    var cardCell3 = new mxCell('\nSubpackage2', new mxGeometry(190, 20, 100, 50), inh + 'shape=folder;spacingLeft=10;tabWidth=40;tabHeight=14;tabPosition=left;fontSize=10;html=1;whiteSpace=wrap;');
64		    	cardCell3.vertex = true;
65		    	bg.insert(cardCell3);
66		    	var assoc1 = new mxCell('&lt;&lt;import&gt;&gt;', new mxGeometry(0, 0, 0, 0), inh + 'edgeStyle=none;endArrow=open;dashed=1;verticalAlign=top;labelBackgroundColor=none;endSize=12;html=1;');
67		    	assoc1.geometry.relative = true;
68		    	assoc1.edge = true;
69		    	cardCell2.insertEdge(assoc1, true);
70		    	cardCell3.insertEdge(assoc1, false);
71		    	bg.insert(assoc1);
72
73			   	return sb.createVertexTemplateFromCells([bg], 300, 120, 'Package Diagram');
74			}),
75
76			this.addEntry(dt + 'package tab', function()
77		   	{
78			    var bg = new mxCell('Package1', new mxGeometry(0, 0, 300, 120), 'shape=folder;xSize=90;align=left;spacingLeft=10;align=left;verticalAlign=top;spacingLeft=5;spacingTop=-4;tabWidth=70;tabHeight=20;tabPosition=left;html=1;strokeWidth=1;recursiveResize=0;');
79		    	bg.vertex = true;
80			    var cardCell2 = new mxCell('\nSubpackage1', new mxGeometry(15, 60, 100, 50), inh + 'shape=folder;spacingLeft=10;tabWidth=40;tabHeight=14;tabPosition=left;fontSize=10;html=1;whiteSpace=wrap;');
81		    	cardCell2.vertex = true;
82		    	bg.insert(cardCell2);
83			    var cardCell3 = new mxCell('\nSubpackage2', new mxGeometry(190, 30, 100, 50), inh + 'shape=folder;spacingLeft=10;tabWidth=40;tabHeight=14;tabPosition=left;fontSize=10;html=1;whiteSpace=wrap;');
84		    	cardCell3.vertex = true;
85		    	bg.insert(cardCell3);
86		    	var assoc1 = new mxCell('&lt;&lt;import&gt;&gt;', new mxGeometry(0, 0, 0, 0), inh + 'edgeStyle=none;endArrow=open;dashed=1;verticalAlign=top;labelBackgroundColor=none;endSize=12;html=1;');
87		    	assoc1.geometry.relative = true;
88		    	assoc1.edge = true;
89		    	cardCell2.insertEdge(assoc1, true);
90		    	cardCell3.insertEdge(assoc1, false);
91		    	bg.insert(assoc1);
92
93			   	return sb.createVertexTemplateFromCells([bg], 300, 120, 'Package (Tab)');
94			}),
95
96		    this.createVertexTemplateEntry('shape=folder;tabWidth=80;tabHeight=20;tabPosition=left;strokeWidth=2;html=1;whiteSpace=wrap;align=center;',
97		    		160, 90, 'Package1', 'Package (Name)', null, null, this.getTagsForStencil(gn, '', dt + 'package name').join(' ')),
98		    this.createVertexTemplateEntry('shape=note;size=15;align=left;spacingLeft=10;html=1;whiteSpace=wrap;',
99		    		160, 60, '&lt;&lt;problem&gt;&gt;\nDescription', 'Problem', null, null, this.getTagsForStencil(gn, '', dt + 'problem').join(' ')),
100		    this.createVertexTemplateEntry('shape=note;size=15;align=left;spacingLeft=10;html=1;whiteSpace=wrap;',
101		    		160, 60, '&lt;&lt;rationale&gt;&gt;\nDescription', 'Rationale', null, null, this.getTagsForStencil(gn, '', dt + 'rationale').join(' ')),
102		    this.createVertexTemplateEntry('shape=folder;tabWidth=80;tabHeight=20;tabPosition=left;html=1;whiteSpace=wrap;align=center;',
103		    		160, 80, '\n&lt;&lt;view&gt;&gt;\n{viewpoint = View name}\nName', 'View (Name)', null, null, this.getTagsForStencil(gn, '', dt + 'view name').join(' ')),
104		    this.createVertexTemplateEntry('shape=folder;html=1;tabWidth=80;tabHeight=40;tabPosition=left;align=left;verticalAlign=top;spacingLeft=10;whiteSpace=wrap;',
105		    		160, 120, '&lt;&lt;view&gt;&gt;\nName', 'View', null, null, this.getTagsForStencil(gn, '', dt + 'view').join(' ')),
106		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 120, 140,
107		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
108	    			'&lt;&lt;viewpoint&gt;&gt;<br/>' +
109	    			'<b>Name</b></p><hr/>' +
110					'<p style="margin:0px;margin-left:8px;text-align:left;">' +
111	    			'stakeholders="..."<br/>' +
112	    			'purpose="..."<br>' +
113	    			'concerns="..."<br>' +
114	    			'languages="..."<br>' +
115	    			'methods="..."</p>',
116		    		'Viewpoint', null, null, this.getTagsForStencil(gn, '', dt + 'viewpoint').join(' ')),
117			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
118					160, 0, '&lt;&lt;conform&gt;&gt;', 'Conform', null, this.getTagsForStencil(gn, '', dt + 'conform').join(' ')),
119			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
120					160, 0, '&lt;&lt;stereotype1&gt;&gt;\ndependency1', 'Dependency', null, this.getTagsForStencil(gn, '', dt + 'dependency').join(' ')),
121			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
122					160, 0, '&lt;&lt;import&gt;&gt;', 'Public Package Import', null, this.getTagsForStencil(gn, '', dt + 'public package import').join(' ')),
123			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
124					160, 0, '&lt;&lt;access&gt;&gt;', 'Private Package Import', null, this.getTagsForStencil(gn, '', dt + 'private package import').join(' ')),
125			this.createEdgeTemplateEntry('edgeStyle=none;html=1;' + mxConstants.STYLE_STARTARROW + '=sysMLPackCont;startSize=12;' + mxConstants.STYLE_ENDARROW + '=none;',
126					160, 0, '', 'Package Containment', null, this.getTagsForStencil(gn, '', dt + 'package containment').join(' ')),
127			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endSize=12;endArrow=block;endFill=0;dashed=1;',
128					160, 0, '', 'Realization', null, this.getTagsForStencil(gn, '', dt + 'realization').join(' ')),
129			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
130					160, 0, '&lt;&lt;refine&gt;&gt;', 'Refine', null, this.getTagsForStencil(gn, '', dt + 'refine').join(' '))
131		];
132
133		this.addPalette('sysmlModel Elements', 'SysML / Model Elements', expand || false, mxUtils.bind(this, function(content)
134		{
135			for (var i = 0; i < fns.length; i++)
136			{
137				content.appendChild(fns[i](content));
138			}
139		}));
140	};
141
142	Sidebar.prototype.addSysMLBlocksPalette = function(expand)
143	{
144		var gn = '';
145		var dt = 'sysml block ';
146		var sb = this;
147		var s = 'html=1;strokeWidth=1;shape=mxgraph.sysml.';
148		var inh = 'strokeColor=inherit;fillColor=inherit;gradientColor=inherit;';
149
150		var fns =
151		[
152			this.addEntry(dt + 'block definition diagram', function()
153		   	{
154			    var bg = new mxCell('<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>bdd</b>   Namespace1</p>', new mxGeometry(0, 0, 300, 100), s + 'package;labelX=120;align=left;spacingLeft=10;overflow=fill;recursiveResize=0;');
155		    	bg.vertex = true;
156			    var cardCell2 = new mxCell('Block1', new mxGeometry(15, 30, 100, 50), inh + 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;');
157		    	cardCell2.vertex = true;
158		    	bg.insert(cardCell2);
159			    var cardCell3 = new mxCell('Block2', new mxGeometry(190, 30, 100, 50), inh + 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;');
160		    	cardCell3.vertex = true;
161		    	bg.insert(cardCell3);
162				var assoc = new mxCell('part1', new mxGeometry(0, 0, 0, 0), inh + 'align=right;html=1;verticalAlign=bottom;endArrow=none;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=none;endFill=0;labelBackgroundColor=none;');
163				assoc.geometry.relative = true;
164				assoc.geometry.x=1;
165				assoc.edge = true;
166				bg.insert(assoc);
167		    	var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
168		    	sourceLabel.geometry.relative = true;
169		    	sourceLabel.setConnectable(false);
170		    	sourceLabel.vertex = true;
171		    	assoc.insert(sourceLabel);
172		    	var targetLabel = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
173		    	targetLabel.geometry.relative = true;
174		    	targetLabel.setConnectable(false);
175		    	targetLabel.vertex = true;
176		    	assoc.insert(targetLabel);
177		    	cardCell2.insertEdge(assoc, true);
178		    	cardCell3.insertEdge(assoc, false);
179
180			   	return sb.createVertexTemplateFromCells([bg], 300, 100, 'Block Definition Diagram');
181			}),
182
183			this.addDataEntry(dt + 'relation', 160, 0, 'Relation',
184				'zVRNb8IwDP01vUwaCi3aHcrgNGkS+wOhMW20NEapYYVfP9MmLVVh2qYddqjkPNvPHy9NlKRlvXZyX7ygAhMlz1GSOkRqrbJOwZgoFlpFyTKKY8FfFK/ueKeNV+ylA0vfSYjbhKM0B2gRziVPU9HJeFQanVs2nc4LJl4UVHKvyymbR3CkM2nmPmSLRFiyA6yaO4cfjFm0TLSoiMkDprQs0aq3Qtvg2ujzpd50FoCVNqEMqBw2viFP13Z5cdydvoH86GvAEsidOKQeJDgwkvRxyCKr9ph3WR3RK2rm70MqPLgMPHq97BAYyj2JITePmAONEtm46raHGu1u65iMdBxr6KDSZ7ltjmKoYZDXwI5uSEq4Z9TILZiFzN5zhwerUjToejF2aDv9/JgZWgsZ+ZLdXRQXeqjvahZ/qdnjT0UbbPWLFc5GKxSTycNvthh+kv+8xj/aIh/7x6q9t9dv2Sc='),
185		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;verticalAlign=top;align=left;whiteSpace=wrap;', 220, 340,
186		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
187	    			'&lt;&lt;block&gt;&gt;<br/>' +
188	    			'{encapsulated}<br/>' +
189	    			'<b>Block1</b></p><hr/>' +
190					'<p style="font-size:10px;margin:0px;text-align:center;"><i>constraints</i></p>' +
191					'<p style="margin:0px;margin-left:8px;text-align:left;">{x &gt; y}</p><hr/>' +
192					'<p style="font-size:10px;margin:0px;text-align:center;"><i>operations</i></p>' +
193					'<p style="margin:0px;margin-left:8px;text-align:left;">operation1 (p1 : Type1) : Type2</p><hr/>' +
194					'<p style="font-size:10px;margin:0px;text-align:center;"><i>parts</i></p>' +
195					'<p style="margin:0px;margin-left:8px;text-align:left;">property1 : Block2</p><hr/>' +
196					'<p style="font-size:10px;margin:0px;text-align:center;"><i>references</i></p>' +
197					'<p style="margin:0px;margin-left:8px;text-align:left;">property2 : Block3 [0..*] {ordered}</p><hr/>' +
198					'<p style="font-size:10px;margin:0px;text-align:center;"><i>values</i></p>' +
199					'<p style="margin:0px;margin-left:8px;text-align:left;">property3 : Integer = 99 {readOnly}<br/>property4 : Real = 10.0</p><hr/>' +
200					'<p style="font-size:10px;margin:0px;text-align:center;"><i>properties</i></p>' +
201					'<p style="margin:0px;margin-left:8px;text-align:left;">property5 : Type1</p>',
202		    		'Block', null, null, this.getTagsForStencil(gn, '', dt + 'block').join(' ')),
203		    this.createVertexTemplateEntry('shape=umlActor;html=1;verticalLabelPosition=bottom;verticalAlign=top;align=center;',
204		    		30, 60, 'ActorName', 'Actor', null, null, this.getTagsForStencil(gn, '', dt + 'actor').join(' ')),
205		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 160, 80,
206		    		'<p>&lt;&lt;actor&gt;&gt;<br/><b>ActorName</b></p>',
207		    		'Actor', null, null, this.getTagsForStencil(gn, '', dt + 'actor').join(' ')),
208		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 180,
209		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
210	    			'&lt;&lt;valueType&gt;&gt;<br/>' +
211	    			'<b>ValueType1</b></p><hr/>' +
212					'<p style="font-size:10px;margin:0px;text-align:center;"><i>operations</i></p>' +
213					'<p style="margin:0px;margin-left:8px;text-align:left;">operation1 (p1 : Type1) : Type2</p><hr/>' +
214					'<p style="font-size:10px;margin:0px;text-align:center;"><i>properties</i></p>' +
215					'<p style="margin:0px;margin-left:8px;text-align:left;">property1 : Type3</p><hr/>' +
216					'<p style="margin:0px;margin-left:8px;text-align:center;">&lt;&lt;valueType&gt;&gt;</p>' +
217					'<p style="margin:0px;margin-left:8px;text-align:left;">unit = UnitName</p>',
218		    		'ValueType', null, null, this.getTagsForStencil(gn, '', dt + 'value type valuetype').join(' ')),
219		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 80,
220		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
221	    			'&lt;&lt;enumeration&gt;&gt;<br/>' +
222	    			'<b>Enumeration1</b></p><hr/>' +
223					'<p style="margin:0px;margin-left:8px;text-align:left;">literalName1<br/>literalName2</p>',
224		    		'Enumeration', null, null, this.getTagsForStencil(gn, '', dt + 'enumeration').join(' ')),
225		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 80, 40,
226		    		'<p style="margin:13px;"><b><i>Name</i></b></p>',
227		    		'Abstract Definition', null, null, this.getTagsForStencil(gn, '', dt + 'abstract definition').join(' ')),
228		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 80, 40,
229		    		'<p style="margin:5px;">{abstract}<br/><b><i>Name</i></b></p>',
230		    		'Abstract Definition', null, null, this.getTagsForStencil(gn, '', dt + 'abstract definition').join(' ')),
231		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 80, 40,
232		    		'<p style="margin:5px;"><b><i>Name</i></b><br/>{abstract}</p>',
233		    		'Abstract Definition', null, null, this.getTagsForStencil(gn, '', dt + 'abstract definition').join(' ')),
234		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 200, 80,
235		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
236	    			'&lt;&lt;stereotype1&gt;&gt;<br/>' +
237	    			'<b>Block1</b></p><hr/>' +
238					'<p style="margin:0px;margin-left:8px;text-align:center;">&lt;&lt;stereotype1&gt;&gt;</p>' +
239					'<p style="margin:0px;margin-left:8px;text-align:left;">property1 = value</p>',
240		    		'Stereotype Property Compartment', null, null, this.getTagsForStencil(gn, '', dt + 'stereotype property compartment').join(' ')),
241
242			this.addEntry(dt + 'namespace compartment', function()
243		   	{
244			    var bg = new mxCell(
245			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
246		    			'<b>Block1</b></p><hr/>' +
247						'<p style="font-size:10px;margin:0px;text-align:center;"><i>namespace</i></p>',
248			    		new mxGeometry(0, 0, 300, 120), 'shape=rect;align=left;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
249		    	bg.vertex = true;
250			    var cardCell2 = new mxCell('Block2', new mxGeometry(15, 60, 100, 50), inh + 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
251		    	cardCell2.vertex = true;
252		    	bg.insert(cardCell2);
253			    var cardCell3 = new mxCell('Block3', new mxGeometry(190, 60, 100, 50), inh + 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
254		    	cardCell3.vertex = true;
255		    	bg.insert(cardCell3);
256				var assoc = new mxCell('part1', new mxGeometry(0, 0, 0, 0), inh + 'align=right;verticalAlign=bottom;endArrow=none;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=none;html=1;labelBackgroundColor=none;');
257				assoc.geometry.relative = true;
258				assoc.geometry.x=1;
259				assoc.edge = true;
260				bg.insert(assoc);
261		    	var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
262		    	sourceLabel.geometry.relative = true;
263		    	sourceLabel.setConnectable(false);
264		    	sourceLabel.vertex = true;
265		    	assoc.insert(sourceLabel);
266		    	var targetLabel = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
267		    	targetLabel.geometry.relative = true;
268		    	targetLabel.setConnectable(false);
269		    	targetLabel.vertex = true;
270		    	assoc.insert(targetLabel);
271		    	cardCell2.insertEdge(assoc, true);
272		    	cardCell3.insertEdge(assoc, false);
273
274			   	return sb.createVertexTemplateFromCells([bg], 300, 100, 'Namespace Compartment');
275			}),
276
277		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 250, 100,
278		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
279	    			'<b>Block1</b></p><hr/>' +
280					'<p style="font-size:10px;margin:0px;text-align:center;"><i>namespace</i></p>',
281		    		'Block', null, null, this.getTagsForStencil(gn, '', dt + 'block').join(' ')),
282
283			this.addEntry(dt + 'structure compartment', function()
284		   	{
285			    var bg = new mxCell(
286			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
287		    			'<b>Block1</b></p><hr/>' +
288						'<p style="font-size:10px;margin:0px;text-align:center;"><i>structure</i></p>',
289			    		new mxGeometry(0, 0, 300, 120), 'shape=rect;align=left;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
290		    	bg.vertex = true;
291			    var cardCell2 = new mxCell('Block2', new mxGeometry(15, 60, 100, 50), inh + 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
292		    	cardCell2.vertex = true;
293		    	bg.insert(cardCell2);
294			    var cardCell3 = new mxCell('Block3', new mxGeometry(190, 60, 100, 50), inh + 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
295		    	cardCell3.vertex = true;
296		    	bg.insert(cardCell3);
297				var assoc = new mxCell('c1:', new mxGeometry(0, 0, 0, 0), inh + 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=none;labelBackgroundColor=none;');
298				assoc.geometry.relative = true;
299				assoc.edge = true;
300				bg.insert(assoc);
301		    	var targetLabel = new mxCell('e1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
302		    	targetLabel.geometry.relative = true;
303		    	targetLabel.setConnectable(false);
304		    	targetLabel.vertex = true;
305		    	assoc.insert(targetLabel);
306		    	var targetLabel2 = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
307		    	targetLabel2.geometry.relative = true;
308		    	targetLabel2.setConnectable(false);
309		    	targetLabel2.vertex = true;
310		    	assoc.insert(targetLabel2);
311		    	cardCell2.insertEdge(assoc, true);
312		    	cardCell3.insertEdge(assoc, false);
313
314			   	return sb.createVertexTemplateFromCells([bg], 300, 100, 'Structure Compartment');
315			}),
316
317			this.addDataEntry(dt + 'relation', 160, 0, 'Relation',
318				'3VTLboMwEPwa3x2Ieg/kcapUKV/gwNZYNV60bFKSr68BB4IIVQ499YDkHe+MvTMWIk7L5kCqKt4xByvinYhTQuR+VTYpWCsiaXIRb0UUSf+JaL+wu+p2ZaUIHL9CiHrCRdkz9EgWNGq+2gBdgNhkym6s0c5DJ2TGUsRJwaW/8Xbll+DyDRF++9Kh88SkZkX8DDuaWyu8Wt+BvbGtjGxlcg3HcDISF6jRKbsb0aS/Xdu3OHIHhXkPgCUwXX0LgVVsLlOeqvtSD30D9QONVxxbajxTBgF99PTe2ATlNznV9jNq4BnRLx7uN0JdRM/jimdxzdMiqM1NnbpSTkNSIUAyuvBeJYvBWnUCm6jsSxOeXZ6iRRpT/EQ3hBhGzdA5yDgcOzw72Z4AzWJS0fOkpoSXc5sY+4uL65mL8Kc2Mlb/zUNfjj+l/uE+/rN+AA=='),
319
320		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 60,
321		    		'<p style="margin:0px;margin-top:10px;text-align:center;">' +
322	    			'&lt;&lt;unit&gt;&gt;<br/>' +
323					'<p style="margin:0px;margin-left:8px;text-align:center;">{quantityKind = QuantityKind1}<br/>' +
324	    			'<b>Unit1</b></p>',
325		    		'Unit', null, null, this.getTagsForStencil(gn, '', dt + 'unit').join(' ')),
326		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 80,
327		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
328	    			'<b>Unit1</b></p><hr/>' +
329	    			'<p style="margin:0px;margin-left:8px;text-align:center;">&lt;&lt;unit&gt;&gt;<br/>' +
330					'{quantityKind = QuantityKind1}</p>',
331		    		'Unit', null, null, this.getTagsForStencil(gn, '', dt + 'unit').join(' ')),
332		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 60,
333		    		'<p style="margin:0px;margin-top:10px;text-align:center;">' +
334	    			'&lt;&lt;quantityKind&gt;&gt;<br/>' +
335					'<p style="margin:0px;margin-left:8px;text-align:center;"><b>QuantityKind1</b></p>',
336		    		'Quantity Kind', null, null, this.getTagsForStencil(gn, '', dt + 'quantity kind').join(' ')),
337		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;fontSize=15;whiteSpace=wrap;', 70, 30,
338		    		'<p style="margin:0px;margin-top:4px;text-align:center;text-decoration:underline;">' +
339	    			'<B>i1: Type1</b><br/>',
340		    		'Instance Specification', null, null, this.getTagsForStencil(gn, '', dt + 'instance specification').join(' ')),
341			this.addDataEntry(dt + 'instance specification', 280, 30, 'Instance Specification',
342				'3VVNj5swEP01HFcCk416DWG7p5VWSv+AgQlYNR7XOF/76zvGBkLYtDmt1B6ieJ7nDeP3PBCl2/b8arhu3rACGaUvUbo1iNav2vMWpIxYLKoozSPGYvpF7Pud3aTfjTU3oOwjBOYJRy4P4JGIrSVRM01wZy/Sw+tfB9dS1nJTCxWlm1ifx/DJoiZo1UMWzvaJS1G7rJLaADOgFZRouBXotg6qAiOFovrZVJ9WdfjvuxgBkRCHWvpx0ZAMu3Su4pZRGHfaEWSzY7Cu4dotDZRuv7EtSZ5T7QyPYPYSTxTuBWmUZntUdic+XHryTPGpERZ2mpcOOZFl4wOISge8a0EPBf1fAVuw5kIpJ1HZxmd88y7FDYi6Caw0YLzzcT0yJz9pESz93N70n7GXTfay/8PeQGBx8PEL7F4t7N4kC43caUTJ5cabmBdoLbZztUBVG2N6tVCD8sggFnNhVcMu1ERjG6xRcfkyoUE6lzcTrsODKWH28rF0y8DOLuwD8hqQdNeO8+qfiReo7yio4pTiGwno9RtySBwMX98Y49tdEHtvxv4esut5YZdOF3YZ6MQHL/ownrsUxjA3/hZlt872c5tJXoDMePmzNkhTuUWJNLK5wn42r6cgHLREpWh+wjPHT8jfxmD1xzEIhIddu3PlKZw+jl7y62/nbw=='),
343			this.addDataEntry(dt + 'relation', 160, 0, 'Relation',
344				'jVPBbsIwDP2a3Esi7U4L4zRpEl8QWi+NlsaV60Lh65c2gdIBEodK9rP9Er/XCFU0w450W39hBU6orVAFIXKMmqEA54TMbCXURkiZhU/IzxfV1VTNWk3g+Z0BGQeO2vUQkXXi6PjsEnQEYltqt3bW+AAdkBkbofKam3DjzSqE4Ks1EZ5Cii34iOztZaRYyTGtDOwTJxLXaNBrt53RPJ479r1cZoLSJjvABpjOoYXAabbH5ZzuYmpufbfRb7SBcW7psKcSEnqv1rVxSMwf2ZKbNRngh8EQ3N1vhibxnxuhHoxo1YMRBJ296MOUZkv9dfKGrKmDWPl/zxjbgDp9AJfr8tcQ9r4q0CGFokc/GvCDnq+WpUVL9B5KTmfefqdspIfhpU/yuU/LgbddW8g6axjS+aFEye/f0R8='),
345
346		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 120, 60,
347		    		'<p style="margin:0px;margin-top:10px;text-align:center;text-decoration:underline;">' +
348	    			'instance1: Type1<br/></p>' +
349	    			'<p style="margin:0px;margin-top:4px;text-align:center;">value1</p>',
350		    		'Instance Specification', null, null, this.getTagsForStencil(gn, '', dt + 'instance specification').join(' ')),
351		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 160, 80,
352		    		'<p style="margin:0px;margin-top:10px;text-align:center;text-decoration:underline;">' +
353	    			'instance1: Type1<br/></p><hr/>' +
354	    			'<p style="margin:0px;margin-top:4px;margin-left:4px;text-align:left;">property1 = 10<br/>property2 = "value"</p>',
355		    		'Instance Specification', null, null, this.getTagsForStencil(gn, '', dt + 'instance specification').join(' ')),
356
357			this.addEntry(dt + 'instance specification', function()
358			{
359			    var bg = new mxCell(
360			    		'<p style="margin:0px;margin-top:5px;text-align:center;text-decoration:underline;">' +
361		    			': Type1<hr/></p>',
362			   			new mxGeometry(0, 0, 200, 180), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
363			   	bg.vertex = true;
364			   	var cardCell2 = new mxCell(
365			    		'<p style="margin:0px;margin-top:5px;text-align:center;text-decoration:underline;">' +
366		    			'instance1 / property1: Type2<hr/></p>',
367			   			new mxGeometry(10, 30, 180, 140), inh + 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;');
368			   	cardCell2.vertex = true;
369			   	bg.insert(cardCell2);
370			   	var cardCell3 = new mxCell(
371			    		'<p style="margin:0px;margin-top:5px;text-align:center;text-decoration:underline;">' +
372		    			'instance2 / property2:<br/>Type3<hr/></p>' +
373		    			'<p style="margin:0px;margin-top:4px;margin-left:4px;text-align:left;">property1 = 10<br/>property2 = "value"</p>',
374			   			new mxGeometry(20, 60, 160, 100), inh + 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;');
375			   	cardCell3.vertex = true;
376			   	bg.insert(cardCell3);
377
378			   	return sb.createVertexTemplateFromCells([bg], 200, 180, 'Instance Specification');
379			}),
380
381		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 160,
382		    		'<p style="margin:0px;margin-top:4px;text-align:center;text-decoration:underline;">' +
383	    			': Type1</p><hr/>',
384		    		'Instance Specification', null, null, this.getTagsForStencil(gn, '', dt + 'instance specification').join(' ')),
385
386			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
387					160, 0, '&lt;&lt;stereotype&gt;&gt;\ndependency1', 'Dependency', null, null, this.getTagsForStencil(gn, '', dt + 'dependency').join(' ')),
388			this.addDataEntry(dt + 'reference association', 250, 0, 'Reference Association',
389				'3VRRa4MwEP41eRlMoq6UPda269Ng0F+Q6lXDYk7OtLP99Yuaap11jMJg7EHIfXffJfm+eCxc5tWGRJG9YgKKhWsWLgnRtKu8WoJSLOAyYeGKBQG3HwteJrJ+k+WFINDmJ4SgJRyFOkCLiLLEWAojUbtupTkplzwCGRkLtVAy1RbaoTGYszDKTG7PvvLtEnSyIMIPG2IBukW28ly38IM6TFLYup5IJsMUtVDrHo3afeu6yWs1kLvTBjAHQydbQqDs0Y9DnijbMO3qOuobStuxLynxQDE49Fq3S2HldJvxYW8jKAUzItrF1fl6qLHhtiXhyBLueWMrCEp5Frsm5EMHhHNHwd6qFX01zWBhUSV2oCIRv6eEB50sUSHZpEZdO7BHbS6euZvGqDXExm3ZvSxet4dq0qjgtlGO8OgYP/ZtIOw3Kj6NVGTzCCkBgoTNbcx9z3u4R1WSafbXZeXe8y/pOhvpWpD9zcmc7nqiU2J2g+Wf6WnDfri3w+F69n8C'),
390			this.addDataEntry(dt + 'reference association', 250, 0, 'Reference Association',
391				'3ZVRb4IwEMc/TV+WzFSYM3sUdD4tWeInqHBis9IjR3Xop1+BDmTIYoxLzB5Iete74/r7H5T5YVosSWTbN4xBMX/B/JAQTb1KixCUYh6XMfPnzPO4fZj3OrA7rnZ5Jgi0uSTBqxP2Qu2g9og8x0gKI1G7ark5KLe5BzIyEmqmZKKta43GYMr8YGtS2/t8bJeg4xkRflpTo4bSEyewckWQzBYT1EItWm9Qv6iMGzxH5XKHWAKmYOhgQwiU7XXfzRN5bSZNXJP6jtJWbENy3FEEznsK6juwcKAmvFvbCErA9BLt4qS/1lVxP6+B39OgD54gl0exrkze5S2cFgo2FlXwUyKDmfUqsQYViOgjIdzpOESF1Aq0QW1W8lgWH7tjRqg1RMa9spkjXpaHYlAl77xKLuHRZVwsWofqLwifeggzwsy2evBuiLKZ9n9Oc9KjyaYBUgwEMZtam/PR6OEasCST7b0PKR+9/BHX58EpveqDH4J5Z2N6M57WbC/G+j97em9+AQ=='),
392			this.addDataEntry(dt + 'part association', 250, 0, 'Part Association',
393				'3VXLasMwEPwaXQo1st0QeozzOhUK6Q8o1sYWlbVmraRJvr6yrThO3ZQQKJQeDNrZ3Vlpxkgsnhb7JYkyf0EJmsVzFk8J0barYj8FrVnElWTxjEURdx+LFleyYZPlpSAw9paGqG3YCb2FFhFVhakSVqHxbJU9aJ/cAVmVCj3RKjMOWqO1WLA4yW3h9j4L3RKMnBDhhwuxBNMiK3WsKcKoDmUGK8+JZHPM0Ag9P6NJZQXZhdInyibuUzTAaYpUokAj33JVD2v3XM+4KkkDeT2WgAVYOrgSAu2OvbvsE1UbZl1d1/qKyjGeSyrcUgoe7Wt+Ktx7zUf8ktsdJgM7aHSL3v7OUGPh93bGAzt5EAxtJKjUUaybkF+6J7yzGjZOreSr4RZLh2qxBp2I9D0j3Bo5RY3kkgZN7d4GTWeWP2mKxkBq/cjur+Q1PeyvGhV9b5RveOTBc9tzs3MX0v6g49NARzZOkCQQSDZ2MQ+D4OEeXUll+V8X9vd0HQ10LcldEmQPd/2k18TsrqV/pqcLz09Dez30X45P'),
394			this.addDataEntry(dt + 'part association', 250, 0, 'Part Association',
395				'3VXLbsIwEPwaXyoVmaQU9Uh4nSpVoj9g4iWx6nijjaHA19ckJoGmqRCiEuohkne8s17P2DELx9l2TiJPX1GCZuGUhWNCtNUo245BaxZwJVk4YUHA3ceCWcdsv5zluSAw9hJCUBE2Qq+hQkRRYKyEVWh8tcLutJ/cAFkVCz3SKjEOWqK1mLEwSm3mep/03RCMHBHhpwsNGjggMoGFL4JkU0zQCD1t0KiwguxM6WONMl6o/YHRD47AsaxUIkMj31PleoiqJg9rdGpQQl6AOWAGlnYuhUC7fW7OeaKowqTOq6lvqFzFJqXANcXg0VORj4lbL/KAn9d2m0nAtohucNJfA5We/exf2PKvbRpBofZiWYb83CvhfdSwclJF3+21mDtUiyXoSMQfCeHayDFqpMbcFZraKb/NGI2B2Pol6zPID+Vh2+lS8LNLnvDIey8V52LbznT9RcSnlog5Ye6a3QU3FLO+K/9ez0FLTzaMkCQQSDZ0Mee93sM10pJK0ns/qH+n63PnOb3q0neJeWcH9WZ6urB5WKt/7em7+wU='),
396			this.addDataEntry(dt + 'shared association', 250, 0, 'Shared Association',
397				'3VXLasMwEPwaXQo1st0QeozzOhUK6Q8o1sYWlbVmraRJvr6yrThO3ZQQKJQeDNrZ3Vlpxkgsnhb7JYkyf0EJmsVzFk8J0barYj8FrVnElWTxjEURdx+LFleyYZPlpSAw9paGqG3YCb2FFhFVhakSVqHxbJU9aJ/cAVmVCj3RKjMOWqO1WLA4yW3h9j4L3RKMnBDhhwuxBNMiK3WsKcKoDmUGK8+JZHPM0Ag9P6NJZQXZhdI1JT/FfYoGOE2RShRo5Fuu6mHtnusZVyVpIK/HErAASwdXQqDdsXeXfaJqw6yr61pfUTnGc0mFW0rBo33NT4V7r/mIX3K7w2RgB41u0dvfGWos/N7OeGAnD4KhjQSVOop1E/JL94R3VsPGqZV8Ndxi6VAt1qATkb5nhFsjp6iRXNKgqd3boOnM8idN0RhIrR/Z/ZW8pof9VaOi743yDY88eG57bnbuQtofdHwa6MjGCZIEAsnGLuZhEDzcoyupLP/rwv6erqOBriW5S4Ls4a6f9JqY3bX0z/R04flpaK+H/svxCQ=='),
398			this.addDataEntry(dt + 'shared association', 250, 0, 'Shared Association',
399				'3VXLbsIwEPwaXyoVmaQU9Uh4nSpVoj9g4iWx6nijjaHA19chJoGmqRCiEuohkne8s17P2DELx9l2TiJPX1GCZuGUhWNCtNUo245BaxZwJVk4YUHA3ceCWcds/zDLc0Fg7CWEoCJshF5DhYiiwFgJq9D4aoXdaT+5AbIqFnqkVWIctERrMWNhlNrM9T7puyEYOSLCTxcaNFAiMoGFL4JkU0zQCD1t0KiwguxM6bIGP8YLtS8Z/eAIHMtKJTI08j1VroeoarJco1ODA+QFmANmYGnnUgi02+fmnCeKKkzqvJr6hspVbFIKXFMMHj0V+Zi49SIP+Hltt5kEbIvoBif9NdDBs5/9C1v+tU0jKNReLA8hP/dKeB81rJxU0Xd7LeYO1WIJOhLxR0K4NnKMGqkxd4WmdspvM0ZjILZ+yfoM8rI8bDtdCn52yRMeee+l4lxs25muv4j41BIxJ8xds7vghmLWd+Xf6zlo6cmGEZIEAsmGLua813u4RlpSSXrvB/XvdH3uPKdXXfouMe/soN5MTxc2D2v1rz19d78A'),
400			this.addDataEntry(dt + 'multibranch part association', 250, 50, 'Multibranch Part Association',
401				'7VbBbuIwEP2aXPZQBbts99rQwqnSSt0fMPGQWHU8kWMo8PU7iU1oGiJStbS7UpGQPDOZ5/F7eeCIz4rtwooyf0AJOuL3EZ9ZROdXxXYGWkcsVjLidxFjMX0jNh+oTppqXAoLxo1pYL5hI/QafEZUFaZKOIUmoFVup0NxA9apVOhbrTJDqSU6h0XEk9wVNPvdhJa0gSorakhWSusZarRNM4+bD+UrZ/EJTlXCNLQLbAdP1KTCcRaABTi7o0cODYz7lp2PQ/SspMt95tpnclBZ7jopUfkwa1GP1NEisHeaSd5jsrRY0kl2fRpBZvAYQtBLfL4/JrpUUo3WOVq1R+MEFRIRuLd+/GRQEzDy1toGwKCpoS2ujYR64JpsLZagE5E+ZU3+oEd41g9dT9oRosK1TaHz8rxBG99gQdP7tekCn+I+AP1GRfgtCpvGHYWnXQAnbAYu9LzSrx1plKTXPUnjq6sfPTUtVGovlk0YdwU8p5XD8qwQKxL+Ue1r9MlY2VI0BlIXhmp/Bc45i3+oemOdMx10Dnu3cw6Ef/vmhG/iSxnn5z9onPf4YvolvrgZ9AW/hC80rMbaQipRoJF/cmV67qDH5kq3+xl5kID9j9a59F/Mr57G/dvCCJsMaPe5Lrn5DJdQeLwde8JfXp7/Ag=='),
402			this.addDataEntry(dt + 'multibranch shared association', 250, 50, 'Multibranch Shared Association',
403				'7VbbToQwEP0aXnwwbOuqr7LqPpmY6A90YRYaS4eU7vXrHWjZFVkiZl0viSQknZnOYTiHExrwSb6eGlFkD5iACvhdwCcG0bpVvp6AUgELZRLw24CxkO6A3fdUR3U1LIQBbYc0MNewFGoBLiPKEmMprETt0Uq7Ub64BGNlLNSNkqmm1AytxTzgUWZzmv12REt6gCxKaojmUqkJKjR1Mw/ri/L+mYQF696565QfegqYgzUb2tI0MO5aNi720UomNnOZC5fJQKaZbaVE6cJ0h7oniBaeo8N88Q5fhcGC3mTTJQuSFJ58CGqGq7t9ok0Y1WidoZFb1FZQIRKeYePGj3qZB53cGFMDaNQVtMGFTqAauCJbiRmoSMQvaZ1v9PB73dDVpC0hSlyYGFqfyCe0cQ0GFH1FyzbwIe490CNKwt+hsHHYUnjcBrDCpGB9zzv9diMNkvSiI2l4fn7WUdNAKbdiVofhAYHeCPpeK4vFh0LMSfgnua3QR0Nli1FriK0fauf1j5zFv1S9oc4Z9zqHHe2chvB/3xzwTXgq41z+QuMc44vxj/jiqtcX/BS+UDAfaotEihx18pxJ3XEHbbuX1Ts1USMB+4vWOfUv5rqjcfe00GcTL9ivccnVd7iEwv0Z2BH+9oj8Cg=='),
404
405			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endSize=12;endArrow=block;endFill=0;',
406					160, 0, '', 'Generalization', null, this.getTagsForStencil(gn, '', dt + 'generalization').join(' ')),
407			this.addDataEntry(dt + 'multibranch generalization', 140, 50, 'Multibranch Generalization',
408				'7VXLbsIwEPwa350Y2l4hPE6VKvEFBm8TC8eLnOX59XViF3AFag70UIlIkbyzu5P1TCwzUdSHuZOb6h0VGCamTBQOkcKqPhRgDMu5VkxMWJ5z/7J8diebdVm+kQ4s9WnIQ8NOmi0EJAANHU0EduBIr6QZGV1aDy2RCGsmxhXVft5J5peeVG8a3zD+1MYUaNB1zYJ3j8cbcriGW5k4gf8KHO7uooPiFuaANZA7+pLY8PIWOo5xUyKEe62oCtAgIBXosqIEkk0IyzPrRS6/iIrdVk/8rh6oEhYxBLPE/fQCJApatdCntirLQzhyDvet3gZX6wDNdDvKhHeKL7tshU6f0JL0ibHDrVWgYkmYpR0gkbXBrVtBYn9/pSOHAyNJ71LiW0pGog/Unv/M8srTDpKuBIpFP+Q/z9DLkcEDHYkKf///Hrp7FK7ssmjhH1mRDXhydoZ/Zs3waU1Pax5thQ8vN0oov75wvgA='),
409			this.addDataEntry(dt + 'generalization set', 140, 50, 'Generalization Set',
410				'7VXJbsIwEP0a37NA6ZWE5VQJiS9w8JBMcTJoYtavrxO7QApIOdBDpUaKNO/Nouc3jiLitDzOWW6LD1KgRTwVccpExkXlMQWtRRSgEvFERFFgXxHNnmTDNhtsJUNl+jRErmEv9Q4cI0aJwvqT0A4YTVy6Nift07Ydt7UFSWFKK3cS2nCNWqekiduaOGgfy9eGaQOPMlpmoBdUo0GqbI4xL6zgRGrMG6xh3UCvDtjA8ekJW8ofbw5UguGTLfENb++u4+QPHDt4QGUKRw0cU4DTcEPJ2sH8MvVqpQ28m4+dje+dvfNS5bD0EHRGh+mVuLUXKrXEc1MVRg6OmelgcaZptXHUDBspk8bcdpaNC2I8U2WkTSRMu0qB8iVOSyOgY2tNO15B52r0d9rPYNDS4L47+JGTftCivWqXKaOg22Ek52B80Q/7Lxp6bWTwwo14h5ubiavW3+9w7G9wRsZQ2V1XRRX8oVWEg6Dz7Qx/bTXD/9X0XM2rV2Hh9W/jym9/Rl8='),
411			this.addDataEntry(dt + 'generalization set', 150, 80, 'Generalization Set',
412				'5ZXBboMwDIafJncITPQ6YO1pUqU+QVo8iGYSFFIGe/oFErUwilYxqZceEPlt/5blT1FIkJTtTrGqeJcZIAneSJAoKbU9lW0CiIR6PCNBSij1zEfodiHrD1mvYgqEvsdAraFheAYbsYFad+gCkOVwcFJIYX5xoUszaeqbI4jsVSn5ZeQR5enThrYc+wLPqgP/7s0+NdK273suTjyE3Lg7kCVo1ZkSBcg0b6Y+VluZX+ou1r3kpiP1Wmfwpg7NVA7aFY03tODrrNz8alPLszrBrI05jIa/hob130YRPA2KcCWK8FEowqdBEa1EET0KxcscRRTLBhSyquIiJ1G6no1LZqwuIHNpZEfAvay55lKYmOJ5YRDEDHnea4QP/S9i7cSwll93+yotLH7GbzPld+eN/JufkdfHy5aP37Yf'),
413			this.addDataEntry(dt + 'block namespace containment', 140, 70, 'Block Namespace Containment',
414				'7ZXPjoIwEMafhjtQ192roOtlTUx8gmpHaCyMKfUPPv0OtKJ1McvBwx6WxKTztfMxfD8MAUuL81zzfb5AASpgs4ClGtHYVXFOQakgDqUI2DSI45B+Qfz5ZDdqd8M911CaIQ2xbThydQCrWKEytXLCEbSRG64mSmYlSWs0BouAJbkpaN5pREsylfuKGpKtVCpFhbptZmF7kV4ZjTvo23ET0F3g/PQpWsk9whywAKNrOuIaxh+2o7Ylc+VJCpNbaWSVHGSWG0/ilS2zzvUWFy1cYv3psd/TA5HBypWg1nia3QQvwVKs5KU5FcW2nGiNJ6qrulp8Lflml2KTRtK6kJ6jlheSOFkkGg+lgGasJlLuUCnYNh2PBAspBN2/HbWZz0u9woPegPd2DAfhPDQobuTRN+4L2hktUZJ/5/IeejijsW9guM7AuJ4HWN1Ig/iNXsjPUblm3RN798e5g1tiCT/w/V0y0chHcyX1ejRv/2gGonk1Cipv3x97/P7z9A0='),
415			this.addDataEntry(dt + 'participant property', 400, 140, 'Participant Property',
416				'5ZfbbtswDEC/xi8DWviS2x7tZOvLBhTrFyg2YwuVLU9WmmRfP+qW1LfBRdKhQB+aiqTpkEekqHjRujw+CFIXP3kGzIu+edFacC7NqjyugTEv9GnmRRsvDH3888LvI9ZAW/2aCKjkFIfQOLwQtgejSRhPn626kSdm1U1BarUUkOKLk0KWGOsmwOWOV/LJPqjkQ0ElPNUkVYoDZoY6wmheoZhiWCBQYb8WhITjaOhaZeN+AF6CFCd85EAzWZgn5iY7vwCaF9bLZuyTxsj52fPCARcWxTCWaBhL8JGxWIfIMfkPmGY9TF64YApE3cK0+L1XBZ2UROQUE479+ngW7yRHFvFMqzBveWexxK+wuDfgKrf/9fdsnSJuGp5SIimvAmfE8Lddh0Ko7DpKVNVd3VsyYLBDY7x6awqkVFXA+hJut6QprQnuuTO0nazke8sEqkwtVJh+LXiN1aPqIfCWWhNoY4yfuoa1xdHrwHjXeEIbT9iLJxzeh8mtxrFhdowfUNxRVayDzXaD3nJ9dDLiot9pkT/QaqsbtNq812rtiu/AgiwHd/pUvII2MNyhWAgNzBoVFpoSFtsTacul5OWZmnpdi1nD9yKF1gyR2AsgW+fnBLICGKbw0n77NaAWPVCuBgeGGlYIrfIfun03URuSO5xNc48TYmQL7JE3VO2Eqk+z8UafkPQ5F3xfZWvOuLgA1+OB/tHTwZZHyqsKa5tsXXj+pJKd/7Nk76zHzTkve5wHpuMVfPVU+KxwV6NFPAr5lz1vRig7cJPL2G7LxwD9Xpy/9i8wy4SLDARkZlz59/dfbox8uLI/BW8XdOvGeOXoykhTQGbNE8bV7Pazybo+cqruRw5i6LevC0HnGmAGpnXqMDxHMYQVxcsvRPP46x+QfwE='),
417
418			this.addEntry(dt + 'participant property', function()
419		    {
420			   	var cardCell = new mxCell('Block2', new mxGeometry(0, 0, 50, 20), 'shape=rect;html=1;strokeWidth=1;fontStyle=1;whiteSpace=wrap;align=center;');
421			   	cardCell.vertex = true;
422			   	var cardCell2 = new mxCell('Block1', new mxGeometry(350, 0, 50, 20), 'shape=rect;html=1;strokeWidth=1;fontStyle=1;whiteSpace=wrap;align=center;');
423			   	cardCell2.vertex = true;
424			   	var bg = new mxCell(
425			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
426		    			'<b>Association1</b></p><hr/>' +
427		    			'<p style="margin:0px;text-align:center;"><i>structure</i></p>',
428			   			new mxGeometry(20, 60, 360, 150), 'shape=rect;html=1;strokeWidth=1;overflow=fill;whiteSpace=wrap;recursiveResize=0;');
429			   	bg.vertex = true;
430			   	var cardCell4 = new mxCell(
431			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
432		    			'&lt;&lt;participant&gt;&gt;<br/>' +
433		    			'{end = property 2}<br/><br/>' +
434		    			'<b>p2 : Block 2</b></p>',
435			   			new mxGeometry(20, 50, 150, 80), inh + 'shape=rect;html=1;overflow=fill;dashed=1;whiteSpace=wrap;');
436			   	cardCell4.vertex = true;
437			   	bg.insert(cardCell4);
438			   	var cardCell5 = new mxCell(
439			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
440		    			'&lt;&lt;participant&gt;&gt;<br/>' +
441		    			'{end = property 1}<br/><br/>' +
442		    			'<b>p1 : Block 1</b></p>',
443			   			new mxGeometry(190, 50, 150, 80), inh + 'shape=rect;html=1;overflow=fill;dashed=1;whiteSpace=wrap;');
444			   	cardCell5.vertex = true;
445			   	bg.insert(cardCell5);
446			   	var edge1 = new mxCell('Association1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;');
447		    	edge1.geometry.relative = true;
448			   	edge1.edge = true;
449		    	cardCell.insertEdge(edge1, true);
450		    	cardCell2.insertEdge(edge1, false);
451			   	var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;dashed=1;');
452			   	edge2.geometry.setTerminalPoint(new mxPoint(200, 10), false);
453		    	edge2.geometry.relative = true;
454			   	edge2.edge = true;
455		    	bg.insertEdge(edge2, true);
456		    	var label1 = new mxCell('property2', new mxGeometry(-1, 0, 0, 0), 'spacingLeft=3;html=1;align=left;verticalAlign=bottom;labelPosition=right;labelBackgroundColor=none;fontSize=10');
457		    	label1.geometry.relative = true;
458		    	label1.setConnectable(false);
459		    	label1.vertex = true;
460		    	edge1.insert(label1);
461		    	var label2 = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'spacingLeft=3;html=1;align=left;verticalAlign=top;labelPosition=right;labelBackgroundColor=none;fontSize=10');
462		    	label2.geometry.relative = true;
463		    	label2.setConnectable(false);
464		    	label2.vertex = true;
465		    	edge1.insert(label2);
466		    	var label3 = new mxCell('property1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=bottom;labelPosition=left;labelBackgroundColor=none;fontSize=10');
467		    	label3.geometry.relative = true;
468		    	label3.setConnectable(false);
469		    	label3.vertex = true;
470		    	edge1.insert(label3);
471		    	var label4 = new mxCell('{ordered} 0..*', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=top;labelPosition=left;labelBackgroundColor=none;fontSize=10');
472		    	label4.geometry.relative = true;
473		    	label4.setConnectable(false);
474		    	label4.vertex = true;
475		    	edge1.insert(label4);
476
477			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, bg, edge1, edge2], 400, 260, 'Participant Property');
478			}),
479
480			this.addDataEntry(dt + 'participant property', 400, 80, 'Participant Property',
481				'5ZZfT+MwDMA/TV+QDvXPxu4e18Hxckjo+ARZY9qINK7SjG18etwm3ShpUREDIfEwLXbi1P7FjhMkq3J3rVlV3CAHGSRXQbLSiMaOyt0KpAziUPAguQziOKRfEP8dmY3a2bBiGpSZYhBbg0cmN2A1qcTswalrs5dOXResaoYaMto4LUxJvl5GNLxHZe7cwkbeFsLAXcWyRrGlyEjHpMgViRm5BZoU7rOgDexGXW9Vzu9rwBKM3tOSreCmsCvmNrqwAJEXzspFHLLayvnB8siBBg7FMJZkGEv0nbE4g6Rj8gWYZh6mZV1jJpgRqN4D6wRxRzMX0N7KFz6GKP4kDnOPgxc78By6dFCo6C8FxZda4/ao8Yg0Vj0eNW50Br3aNUznYHp5O4GaBkmn9Njf/SMMLjwGlcaKTnQ/cJlQGQiV/4P7xsmkH3lXFLKdTZukEBmTS6deozFY0oRka5C3WIsm2Zqssmdq9SnLHnKNG8VXKFEfEbdlKZ7aqnQnn6FSlJFs3bkXTkrH+Zvp+MtZnJzzwuM8UGgf4Guw+rlwf48m8Sjk/+4qGaHcgZucxu5Yvgfoz+L8x78wFylqDhp4sCA5DM/Pz06MfDizfwTvzul3dqgXcP1mxVldAJ/erman703O9BYF7XiASMnTewlErzq8bZjO6BXDgxdDWEk8vszt8pcP92c='),
482
483		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 300, 80,
484		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
485	    			'<b>Association1</b></p><hr/>' +
486	    			'<p style="margin:0px;margin-left:8px;text-align:center;">&lt;&lt;participant&gt;&gt; {end = property 1} p1 : Blcok 1<br/>' +
487	    			'&lt;&lt;participant&gt;&gt; {end = property 2} p2 : Blcok 2</p>',
488		    		'Association', null, null, this.getTagsForStencil(gn, '', dt + 'association').join(' ')),
489		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 300, 80,
490		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
491	    			'<b>Association1</b></p><hr/>' +
492	    			'<p style="margin:0px;text-align:center;"><i>structure</i></p>',
493		    		'Association', null, null, this.getTagsForStencil(gn, '', dt + 'association').join(' ')),
494		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;dashed=1;whiteSpace=wrap;', 150, 80,
495		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
496	    			'&lt;&lt;participant&gt;&gt;<br/>' +
497	    			'{end = property 1}<br/><br/>' +
498	    			'<b>p1 : Block 1</b></p>',
499		    		'Participant', null, null, this.getTagsForStencil(gn, '', dt + 'participant').join(' ')),
500
501			this.addEntry(dt + 'connector property', function()
502		    {
503			   	var bg = new mxCell(
504			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
505		    			'<b>Block1</b><hr/></p>' +
506			    		'<p style="margin:0px;margin-top:-6px;margin-left:10px;text-align:left;">' +
507		    			'&lt;&lt;connector&gt;&gt; c1 : Association1<br/>' +
508		    			'&lt;&lt;connector&gt;&gt; c2 : Association2<hr/></p>' +
509			    		'<p style="margin:0px;margin-top:-6px;text-align:center;font-size:10px;">' +
510		    			'<i>structure</i></p>',
511			   			new mxGeometry(0, 0, 400, 250), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
512			   	bg.vertex = true;
513			   	var cardCell2 = new mxCell('p1:\nType1', new mxGeometry(20, 100, 80, 40), inh + 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
514			   	cardCell2.vertex = true;
515			   	bg.insert(cardCell2);
516			   	var cardCell3 = new mxCell('p2:\nType2', new mxGeometry(300, 100, 80, 40), inh + 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
517			   	cardCell3.vertex = true;
518			   	bg.insert(cardCell3);
519			   	var edge1 = new mxCell('c1: Association1', new mxGeometry(0, 0, 0, 0), inh + 'edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;labelBackgroundColor=none;');
520		    	edge1.geometry.relative = true;
521			   	edge1.edge = true;
522		    	cardCell2.insertEdge(edge1, true);
523		    	cardCell3.insertEdge(edge1, false);
524		    	bg.insert(edge1);
525		    	var label1 = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=bottom;labelPosition=left;labelBackgroundColor=none;fontSize=10');
526		    	label1.geometry.relative = true;
527		    	label1.setConnectable(false);
528		    	label1.vertex = true;
529		    	edge1.insert(label1);
530		    	var label2 = new mxCell('e1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=top;labelPosition=left;labelBackgroundColor=none;fontSize=10');
531		    	label2.geometry.relative = true;
532		    	label2.setConnectable(false);
533		    	label2.vertex = true;
534		    	edge1.insert(label2);
535			   	var cardCell4 = new mxCell('p3:\nType3', new mxGeometry(20, 160, 80, 40), inh + 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
536			   	cardCell4.vertex = true;
537			   	bg.insert(cardCell4);
538			   	var cardCell5 = new mxCell('p4:\nType4', new mxGeometry(300, 160, 80, 40), inh + 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
539			   	cardCell5.vertex = true;
540			   	bg.insert(cardCell5);
541			   	var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), inh + 'edgeStyle=none;html=1;endArrow=none;');
542		    	edge2.geometry.relative = true;
543			   	edge2.edge = true;
544		    	cardCell4.insertEdge(edge2, true);
545		    	cardCell5.insertEdge(edge2, false);
546		    	bg.insert(edge2);
547		    	var label3 = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=bottom;labelPosition=left;labelBackgroundColor=none;fontSize=10');
548		    	label3.geometry.relative = true;
549		    	label3.setConnectable(false);
550		    	label3.vertex = true;
551		    	edge2.insert(label3);
552		    	var label4 = new mxCell('e1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=top;labelPosition=left;labelBackgroundColor=none;fontSize=10');
553		    	label4.geometry.relative = true;
554		    	label4.setConnectable(false);
555		    	label4.vertex = true;
556		    	edge2.insert(label4);
557			   	var cardCell6 = new mxCell('c2: Association2', new mxGeometry(140, 210, 120, 20), inh + 'shape=rect;html=1;align=center;');
558			   	cardCell6.vertex = true;
559			   	bg.insert(cardCell6);
560			   	var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), inh + 'edgeStyle=none;html=1;endArrow=none;dashed=1;');
561			   	edge3.geometry.setTerminalPoint(new mxPoint(200, 180), false);
562		    	edge3.geometry.relative = true;
563			   	edge3.edge = true;
564		    	cardCell6.insertEdge(edge3, true);
565		    	bg.insert(edge3);
566
567			   	return sb.createVertexTemplateFromCells([bg], 400, 250, 'Connector Property');
568			}),
569
570		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 120,
571		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
572	    			'<b>Block1</b><hr/>' +
573	    			'&lt;&lt;connector&gt;&gt; c1 : Association1<br/>' +
574	    			'&lt;&lt;connector&gt;&gt; c2 : Association2<hr/></p>',
575		    		'Connector Property', null, null, this.getTagsForStencil(gn, '', dt + 'connector property').join(' ')),
576
577			this.addEntry(dt + 'internal block diagram', function()
578		    {
579			    var bg = new mxCell('<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>ibd</b>   Block1</p>', new mxGeometry(0, 0, 300, 100), s + 'package;labelX=100;align=left;spacingLeft=10;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=0;recursiveResize=0;');
580		    	bg.vertex = true;
581			    var cardCell2 = new mxCell('p1:\nType1', new mxGeometry(15, 30, 100, 50), inh + 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
582		    	cardCell2.vertex = true;
583		    	bg.insert(cardCell2);
584			    var cardCell3 = new mxCell('p2:\nType2', new mxGeometry(190, 30, 100, 50), inh + 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
585		    	cardCell3.vertex = true;
586		    	bg.insert(cardCell3);
587				var assoc = new mxCell('c1:a1', new mxGeometry(0, 0, 0, 0), inh + 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=none;labelBackgroundColor=none;');
588		    	assoc.geometry.relative = true;
589				assoc.edge = true;
590		    	var sourceLabel = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
591		    	sourceLabel.geometry.relative = true;
592		    	sourceLabel.setConnectable(false);
593		    	sourceLabel.vertex = true;
594		    	assoc.insert(sourceLabel);
595		    	var targetLabel = new mxCell('p3', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
596		    	targetLabel.geometry.relative = true;
597		    	targetLabel.setConnectable(false);
598		    	targetLabel.vertex = true;
599		    	assoc.insert(targetLabel);
600		    	cardCell2.insertEdge(assoc, true);
601		    	cardCell3.insertEdge(assoc, false);
602		    	bg.insert(assoc);
603
604			   	return sb.createVertexTemplateFromCells([bg], 300, 100, 'Internal Block Diagram');
605			}),
606
607			this.addEntry(dt + 'property', function()
608		    {
609			    var bg = new mxCell('', new mxGeometry(0, 0, 300, 120), 'shape=rect;html=1;strokeWidth=2;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
610		    	bg.vertex = true;
611			    var cardCell2 = new mxCell(
612			    		'<p style="margin:0px;margin-top:4px;margin-right:4px;text-align:right;font-size:10px;">' +
613		    			'0..*</p>' +
614			    		'<p style="margin:0px;text-align:center;">' +
615		    			'<b>p1 : Type1</b><hr/>' +
616		    			'x : Integer = 4</p>',
617			    		new mxGeometry(20, 20, 140, 80), inh + 'shape=rect;html=1;overflow=fill;strokeWidth=2;whiteSpace=wrap;align=center;');
618		    	cardCell2.vertex = true;
619		    	bg.insert(cardCell2);
620			    var cardCell3 = new mxCell(
621			    		'r1: Type2',
622			    		new mxGeometry(180, 30, 100, 50), inh + 'shape=rect;html=1;fontStyle=1;dashed=1;strokeWidth=2;whiteSpace=wrap;align=center;');
623		    	cardCell3.vertex = true;
624		    	bg.insert(cardCell3);
625
626			   	return sb.createVertexTemplateFromCells([bg], 300, 120, 'Property');
627			}),
628
629		    this.createVertexTemplateEntry(s + 'package;html=1;overflow=fill;whiteSpace=wrap;', 300, 135,
630		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>idb</b>   Block1</p>',
631		    		'Package', null, null, this.getTagsForStencil(gn, '', dt + 'package').join(' ')),
632		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 100, 80,
633		    		'<p style="margin:0px;margin-top:4px;margin-right:4px;text-align:right;font-size:10px;">' +
634	    			'0..*</p>' +
635		    		'<p style="margin:0px;text-align:center;">' +
636	    			'<b>p1 : Type1</b><hr/>' +
637	    			'x : Integer = 4</p>',
638		    		'Property', null, null, this.getTagsForStencil(gn, '', dt + 'property').join(' ')),
639
640			this.addEntry(dt + 'property', function()
641		    {
642			    var bg = new mxCell(
643			    		'<p style="margin:0px;margin-top:4px;margin-right:4px;text-align:right;font-size:10px;">' +
644		    			'0..*</p>' +
645			    		'<p style="margin:0px;text-align:center;">' +
646		    			'p1 : Type1<hr/></p>',
647			    		new mxGeometry(0, 0, 250, 160), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
648		    	bg.vertex = true;
649			    var cardCell2 = new mxCell(
650			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
651		    			'<b>p3 : Type3</b></p><hr/>' +
652			    		'<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
653		    			'<i>initialValues</i></p>' +
654			    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
655		    			'x1 = 5.0<br/>x2 = "today"</p>',
656			    		new mxGeometry(30, 50, 140, 100), inh + 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;');
657		    	cardCell2.vertex = true;
658		    	bg.insert(cardCell2);
659
660			   	return sb.createVertexTemplateFromCells([bg], 250, 160, 'Property');
661			}),
662
663		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 100, 100,
664		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
665	    			'<b>p3 : Type3</b></p><hr/>' +
666		    		'<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
667	    			'<i>initialValues</i></p>' +
668		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
669	    			'x1 = 5.0<br/>x2 = "today"</p>',
670		    		'Property', null, null, this.getTagsForStencil(gn, '', dt + 'property').join(' ')),
671		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 300, 70,
672		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
673	    			'<b>p1 : [Type1]</b></p><hr/>' +
674		    		'<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
675	    			'<i>values</i></p>' +
676		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
677	    			'&lt;&lt;normal&gt;&gt; {mean = 2, stdDeviation = 0.1} x : Real</p>',
678		    		'Property Specific Type', null, null, this.getTagsForStencil(gn, '', dt + 'property specific type').join(' ')),
679		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 100, 70,
680		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
681	    			'<b>p2</b></p><hr/>' +
682		    		'<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
683	    			'<i>values</i></p>' +
684		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
685	    			'y : Integer = 5</p>',
686		    		'Property Specific Type', null, null, this.getTagsForStencil(gn, '', dt + 'property specific type').join(' ')),
687
688			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
689					160, 0, '&lt;&lt;stereotype1&gt;&gt;\ndependency1', 'Dependency', null, null, this.getTagsForStencil(gn, '', dt + 'dependency').join(' ')),
690			this.addDataEntry(dt + 'property', 160, 0, 'Property',
691				'zVTBboMwDP2aXCatgjDtXmjX06RJPeycggtRQ4yM29F+/QJkpYx2qqYddohkv/g58XtRRJSUzYpUVbxiBkZESxElhMh9VDYJGCNkoDMRLYSUgVtCvtzYDbvdoFIElu8hyJ5wUGYPPdIDNR+NBw5ArFNl5kbn1kEbZMZSRHHBpbvvInQh2GxOhB8utWihRbIc1r4JEheYo1VmOaBxzYQ7eNcZF65GOqQ/umXenKaD/CgrwBKYjq6EwCjWhzFP1X2an+vO1DfUruNQUuOeUvDopVxfhY3v/ByMe7OiHHhCdMHF/QaoU/+6E9HEiXBiBUGtT2rTpcHYAeXdMbB1UsXfTWOsHGrUBkys0l1OuLdZggZpsGyLltf61DYP/ZgpWgsp+yPPrylo20Nz0yV53SVPePSMu00bqfqDhE8TCYPZ7OE3KpLOi/8u4x+p6NLhu+nf7eVv9Ak='),
692			this.addDataEntry(dt + 'binding connector', 160, 0, 'Binding Connector',
693				'zVSxboMwEP0aj5XAVNlDknaqVClDZwcuxorxpceRknx9DbgQmqTKkKEDku/53jN+72SRLMrmldS+eMMcrEhWIlkQIverslmAtUJGJhfJUkgZ+U/Ilxu7cbcb7RWB43sIsicclK2hR4ScqXIvktR6gXRawWet7ADpSUOoWrWKjzaoHYDYZMrOrdHOQxtkxtJ3Flz6yy7jVtXlcyL88qVDBy2Sa1gHESQuUKNTdjWiacWEO/gwORe+Rw5Ht8ybVnRQ8OEVsASmo28hsIrNYcpTVV/qoW+gvqPximNLhTVlENBzr38am6A8i6barEgDXxD94uz/RqiL7nqMyUWM8UUUBJU5qU1XRtMEVEjHwrZN8XdojN0EqA3YVGU7TVi7fIEWaYxsi47X5tSKx+GaGToHGYcjh1GMWnlobqYkr6cUCE+BcXdoE1f/sPD5MRaS0cV/9/BBFvpyfKj6oT1/x74B'),
694			this.addDataEntry(dt + 'bidirectional connector', 160, 0, 'Bidirectional Connector',
695				'3VXBboMwDP2aXCatCrD1XmjX06RJ/YIUXIgWYhRMR/v1C5BBGe1UTZ1U7QCKH89O/J5FWBDl9dqIInvFBBQLViyIDCJ1q7yOQCnmc5mwYMl8n9uH+S8XvnrtV14IA5quSfC7hL1QFXRIbGtwFizsW5QlxlKQRN3RSjooR9uDIRkLtVAy1RbaIhHmLAgzym0XS88uQScLY/DDhho1NEiSwsYVQUMZpqiFWg1o2G3U8C521EKunTVgDmQOlmJA2aPux3mi7MK05/WpbyhtxYFSYmVicOipZF/E2lWe83FtEiYFmiTaxcn5Bqh14LwbwcQNPpt5E+0NlPIotm3Ix5ILZ4eCnVUr/O4SYWFRJbagQhG/pwYrnUSo0Awe7VDTRh6b4p7rNEatISa3ZT9UvCkP9UWj/PNGuYRHl3G1byNhf1DxaaJicUsN+0n/5zI+nxvGh98IaWSa3fs0/pWK8+kw+rfU8M6m8UYy2nC4A7sf6ekV+Qk='),
696			this.addDataEntry(dt + 'unidirectional connector', 160, 0, 'Unidirectional Connector',
697				'3VXBboMwDP2aXCatCrD1XmjX06RJ/YIUXIgWYhRMR/v1C5BBGe1UTZ1U7QCKH89O/J5FWBDl9dqIInvFBBQLViyIDCJ1q7yOQCnmc5mwYMl8n9uH+S8XvnrtV14IA5quSfC7hL1QFXRIbGtwFizsW5QlxlKQRN3RSjooR9uDIRkLtVAy1RbaIhHmLAgzym0XS88uQScLY/DDhho1NEiSwsYVQUMZpqiFWg1o2G3U8C521EKunTVgDmQOlmJA2aPux3mi7MK05/WpbyhtxYFSYmVicOipZF/E2lWe83FtEiYFmiTaxcn5Bqh14LwbwcQNPpt5E+0NlPIotm3Ix5ILZ4eCnVUr/O4SYWFRJbagQhG/pwYrnUSo0Awe7VDTRh6b4p7rNEatISa3ZT9UvCkP9UWj/PNGuYRHl3G1byNhf1DxaaJicUsN+0n/5zI+nxvGh98IaWSa3fs0/pWK8+kw+rfU8M6m8UYy2nC4A7sf6ekV+Qk=')
698		];
699
700		this.addPalette('sysmlBlocks', 'SysML / Blocks', expand || false, mxUtils.bind(this, function(content)
701		{
702			for (var i = 0; i < fns.length; i++)
703			{
704				content.appendChild(fns[i](content));
705			}
706		}));
707	};
708
709	Sidebar.prototype.addSysMLPortsAndFlowsPalette = function(expand)
710	{
711		var gn = '';
712		var dt = 'sysml port flow ';
713		var sb = this;
714		var s = 'html=1;shape=mxgraph.sysml.';
715		var inh = 'strokeColor=inherit;fillColor=inherit;gradientColor=inherit;';
716
717		var fns = [
718			this.addEntry(dt + 'port', function()
719		    {
720				var s = 'html=1;shape=mxgraph.sysml.';
721		    	var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;points=[[0,0.5,0],[1,0.5,0]];');
722		    	cardCell.vertex = true;
723		    	var label1 = new mxCell('p1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;');
724		    	label1.geometry.relative = false;
725		    	label1.vertex = true;
726		    	cardCell.insert(label1);
727		    	var label2 = new mxCell('p2', new mxGeometry(140, 20, 20, 20), inh + 'shape=rect;points=[[1,0.5,0]];html=1;resizable=1;labelBackgroundColor=none;fontSize=10;part=1;');
728		    	label2.geometry.relative = false;
729		    	label2.vertex = true;
730		    	cardCell.insert(label2);
731
732			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Port');
733			}),
734
735			this.addEntry(dt + 'port conjugated', function()
736		    {
737		    	var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 200, 60), s + 'port2;fontStyle=1;spacingRight=20;whiteSpace=wrap;align=center;');
738		    	cardCell.vertex = true;
739		    	var label1 = new mxCell('p1 : ~T1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPositin=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;');
740		    	label1.geometry.relative = false;
741		    	label1.vertex = true;
742		    	cardCell.insert(label1);
743		    	var label2 = new mxCell('p2 : ~T2', new mxGeometry(140, 20, 60, 20), inh + 'shape=rect;points=[[1,0.5,0]];html=1;resizable=1;labelBackgroundColor=none;fontSize=10;part=1;');
744		    	label2.geometry.relative = false;
745		    	label2.vertex = true;
746		    	cardCell.insert(label2);
747
748			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Port (Conjugated Ports)');
749			}),
750
751			this.addDataEntry(dt + 'port flow property', 160, 80, 'Ports with Flow Properties',
752				'7ZTLboMwEEW/xtuI4KbqtoE2m1aqlP6AAxOwanuQPWkgX18DJi9S9aFI3XSBZN87V5o5g8x4ouuFFVX5jDkoxh8YTywi9SddJ6AUiyOZM56yOI78x+LHT9xp50aVsGDoO4G4D7wLtYFeebXCOC2dk2h601GjglmS9i2mU8bnrhRVq+q6aLufuMZpNanQEvfuGg0tQ66t3paSYFmJrBW2PuA1oWRh/DXzvYL1QugFLEH96TydFIZZAGog2/iSrcypDBW3/cxRCbIoQ+wuaML192IfPdDxhwDoMiw+glVNR4gsOLkTq+4a+aGOkA0D276teTupzIS6D/oKiVB7Q4kVqBd0ktol8FTB+rj+6cwmrIbQXGRvhcWNyRNU6KGmBg0MC5G7bh8BRYbGQEah1/2v8tUC4ssLaELgCpxvxpzjf86nnGdX4Dwbc+a/4XyG7TLmvyM2BIZnIRDkPyfor4enufNOXu4P'),
753
754		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 160, 70,
755		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
756	    			'<b>Transmission</b></p><hr/>' +
757		    		'<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
758	    			'<i>ports</i></p>' +
759		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
760	    			'p1 : ITransCmd</p>',
761		    		'Port (Compartment Notation)', null, null, this.getTagsForStencil(gn, '', dt + 'port compartment notation').join(' ')),
762			this.addDataEntry(dt + 'nested port', 160, 60, 'Nested Port',
763				'7ZXLboMwEEW/xtsIcJp9gTabVoqU/oADE7DqB7KdBvL1tbHJk6iPdFVlgeS54yvPnLEwwhlv54o09assgSH8hHCmpDR+xdsMGENJREuEc5Qkkf1Q8nwlG/fZqCEKhPmOIfGGD8I24JU3RYTmVGsqhU9q07GQrA23JeYxwqmuSeNU3lau+onuNGcTAdpAuZDKnp6upTDLYHaWbU0NLBtSOGFrXVYjjFbChoUtGJQVQkGgDLRXm+ql0NEcJAejOrtlS0tThx0z33hUA63qYBs0on1c7a0HRHYRKI0TwxfEmngSX5BSoOmOrPowsm0dkRtaVr6w1PVKC8Ieg85pWTpfysgK2EJqatwscM5gfbz/5SxtZDOYUlK8V0puRJlJJi3WXEgBw0jorp9IgFFIIaAwodb9jflqBMn4CLpgmN5OejpGOrmTPiWN/+BOP4yRxnfSp6Sns9tJz0ZI/4bzGbZ/gTkYhjdp+JP8/H7b8PCC9rmTB/YT'),
764
765		    this.addEntry(dt + 'proxy port', function()
766		    {
767		    	var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;');
768		    	cardCell.vertex = true;
769		    	var label1 = new mxCell('&lt;&lt;proxy&gt;&gt;\np1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;part=1;');
770		    	label1.geometry.relative = false;
771		    	label1.vertex = true;
772		    	cardCell.insert(label1);
773
774			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Proxy Port');
775			}),
776
777		    this.addEntry(dt + 'full port', function()
778		    {
779		    	var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;');
780		    	cardCell.vertex = true;
781		    	var label1 = new mxCell('&lt;&lt;full&gt;&gt;\np1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;points=[[0,0.5,0]];html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;paart=1;');
782		    	label1.geometry.relative = false;
783		    	label1.vertex = true;
784		    	cardCell.insert(label1);
785
786			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Full Port');
787			}),
788
789		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 100,
790		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
791	    			'<b>Transmission</b></p><hr/>' +
792		    		'<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
793	    			'<i>flow properties</i></p>' +
794		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
795	    			'in gearSelect: Gear<br/>' +
796	    			'in engineTorque: Torque<br/>' +
797	    			'out wheelsTorque: Torque</p>',
798		    		'Flow Property', null, null, this.getTagsForStencil(gn, '', dt + 'flow property').join(' ')),
799
800		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 250, 150,
801		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
802	    			'<b>Transmission</b></p><hr/>' +
803		    		'<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
804	    			'<i>operations</i></p>' +
805		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
806	    			'prov Boolean selectGear(g : Gear)<br/>' +
807	    			'reqd Torque getTorque()</p><hr/>' +
808		    		'<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
809	    			'<i>properties</i></p>' +
810		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
811	    			'prov temperature : Integer<br/>' +
812	    			'reqd geometry : Spline</p>',
813		    		'Required and Provided Features', null, null, this.getTagsForStencil(gn, '', dt + 'required provided feature').join(' ')),
814
815		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 80,
816		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
817	    			'&lt;&lt;interfaceBlock&gt;&gt;\n' +
818	    			'<b>ISpeedObserver</b></p><hr/>' +
819		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
820	    			'notifySpeedChange(): void</p>',
821		    		'Interface Block', null, null, this.getTagsForStencil(gn, '', dt + 'interface block').join(' ')),
822			this.addDataEntry(dt + 'item flow', 120, 180, 'Item Flow',
823				'1ZXBbtswDIafRscFjt0Gu8bJ2ks3DEgO21GxGVuYLHkUk9h9+lG2nMRNuhVYVmAHA+JPUhY/UrZIFlXziLIuP9sctEg+iWSB1lK/qpoFaC3iSOUiWYo4jvgR8cMr3mnnjWqJYOgtCXGfsJd6B70CphDJnDVeKAMinok4mUYiSftQR60OoSVVfODllH2ulLVXq6bwtUxc6yo9UQTVg7YHDthaQ6uQ6hO2LC8VsrUK1rrtdrA7Pnh6KDl3VcvMSwfekjWpVWHYzLg2wOOB9oAEzav1d1Io/hFsBYQth4SEgCc6qJzKXvoYpBJUUYZNZkGTrreL40YntrwIeK+jTi5Qn7ElNK7HvkZpXKWcU9b8I+JfxsSVeQ/gbfBeIX7Ubo387gL52uJPXr/kCnkBAytjeeqT9Az1wAH706Vg8jmihzwEQ6PoG5vR5D5Y30MuY8H2zOVN7ztdKP/uEUxnd5jB6H6SxAJoNEdvQI6gJan9ePe/4Xl/wbO+QIng1LPcdGZ0naOGrcfoeNqUKZ46a9ldAz9aKpN6HiLJ+jnUcgP6q3WK/J045g/BTy/cG0tkqyEvldmPAu3O5AurLZ561t0P9Qz9u7syMmsMZBROf/x4/mni7377ifkQMm7ejdl7d2MM9r9tyI36webpP935Rr/xXw=='),
824			this.addDataEntry(dt + 'item flow property', 140, 180, 'Item Flow (Item Property)',
825				'1ZXfb5swEMf/Gj8uIpBGew3J2pdumpQ+bI8OXMCqsZl9SaB//c7YkFDardLSSntA8n3vB/bnfMCSddXcGV6XX3UOkiVfWLI2WqNfVc0apGRxJHKWbFgcR/Sw+PYV77zzRjU3oPAtCbFPOHJ5AK+AKliyIo0WQgGLlyxO5hFLUh9qsZUhtMSKNryZk8+WvHZq1RTuLDPb2krOBEJ1K/WJAvZa4TakuoQ9yRthyNoG66HtKugDbTw9lZS7rXnmpBOVJI1LUSgyMzobmGFDRzAIzavn76Rw+DvQFaBpKSQkLDye6CRyLL30OUgliKIMRZZB49bbxVDozJYWAe/LqJMJ6gu2aJT12B8MV7YS1gqt3on4tzFxoT4QeLiPURuC42kDBu3aHVhMOoDa/HLrDrxfP0cOeQE9RqVpIJL0ogs9IuN3moLKV8Y4/n0wNAJ/kBnNboL1M+QSMdNeuJzpfOdZc+8ecbb6YDIYjS5yUwCOrtgbumFAchTHcfV/YXszYVtPUBqw4onvOjN6maOEvcNo6SIKVdx31qabEHfrRMblKkSidldU8h3I79oKdOMy5PfB98/cO42oqz4v5dljYfRB5WsttTn3rBsd8QT+3d0xMq0UZBh2P3xX/zYMiz8Ow6eQcfVuLD+6G2Ow/21DrtQPMs+/8M43+sP/Bg=='),
826
827		    this.createVertexTemplateEntry(s + 'itemFlow;fontStyle=1;flowDir=n;flowType=in;whiteSpace=wrap;align=center;',
828		    		200, 80, 'eng:Engine', 'Item Flow North In', null, null, this.getTagsForStencil(gn, '', dt + 'item flow north in').join(' ')),
829		    this.createVertexTemplateEntry(s + 'itemFlow;fontStyle=1;flowDir=e;flowType=out;whiteSpace=wrap;align=center;',
830		    		200, 80, 'eng:Engine', 'Item Flow East Out', null, null, this.getTagsForStencil(gn, '', dt + 'item flow east out').join(' ')),
831
832			this.addEntry(dt + 'item flow', function()
833		    {
834			    var cardCell = new mxCell('eng: engine',	new mxGeometry(40, 0, 100, 60), s + 'itemFlow;fontStyle=1;strokeWidth=1;flowDir=e;flowType=none;spacingRight=20;whiteSpace=wrap;align=center;');
835			   	cardCell.vertex = true;
836			   	var cardCell2 = new mxCell('trns: Translation', new mxGeometry(260, 0, 140, 60), s + 'itemFlow;strokeWidth=1;fontStyle=1;flowDir=w;flowType=none;spacingLeft=15;whiteSpace=wrap;align=center;');
837			   	cardCell2.vertex = true;
838		    	var assoc1 = new mxCell('Torque', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=left;verticalAlign=top;endArrow=none;exitX=1;exitY=0.5;entryX=0;entryY=0.5;');
839		    	assoc1.geometry.relative = true;
840		    	assoc1.edge = true;
841		    	var label1 = new mxCell('ep:EP', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=5;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=bottom;labelBackgroundColor=none;fontSize=10');
842		    	label1.geometry.relative = true;
843		    	label1.geometry.x = -1;
844		    	label1.setConnectable(false);
845		    	label1.vertex = true;
846		    	assoc1.insert(label1);
847		    	var label2 = new mxCell('tp:TP', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=right;spacingRight=5;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=bottom;labelBackgroundColor=none;fontSize=10');
848		    	label2.geometry.relative = true;
849		    	label2.geometry.x = 1;
850		    	label2.setConnectable(false);
851		    	label2.vertex = true;
852		    	assoc1.insert(label2);
853		    	cardCell.insertEdge(assoc1, true);
854		    	cardCell2.insertEdge(assoc1, false);
855			    var bg = new mxCell(
856			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
857						'<b>c1: Association-1</b></p><hr/>' +
858			    		'<p style="margin:0px;margin-left:4px;text-align:left;font-size:0.9em;">' +
859						'&lt;&lt;participant&gt;&gt;{end = ep} epInLink : EP[1]<br/>' +
860						'&lt;&lt;participant&gt;&gt;{end = tp} etInLink : TP[1]<hr/></p>' +
861			    		'<p style="margin:0px;text-align:center;font-size:0.9em;">' +
862						'structure</p>',
863			    		new mxGeometry(0, 120, 470, 250), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
864			   	bg.vertex = true;
865		    	var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=elbowEdgeStyle;elbow=horizontal;dashed=1;');
866		    	assoc2.geometry.relative = true;
867				assoc2.geometry.setTerminalPoint(new mxPoint(160, 30), true);
868		    	assoc2.edge = true;
869		    	bg.insertEdge(assoc2, false);
870		    	var cardCell4 = new mxCell('epInLink : EP', new mxGeometry(30, 100, 160, 120), inh + s + 'itemFlowRight;fontStyle=1;spacingRight=40;whiteSpace=wrap;align=center;');
871		    	cardCell4.vertex = true;
872		    	bg.insert(cardCell4);
873		    	var label3 = new mxCell('ep.1', new mxGeometry(160, 30, 0, 0), 'resizable=0;html=1;align=right;spacingRight=22;verticalAlign=middle;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10');
874		    	label3.geometry.relative = false;
875		    	label3.setConnectable(false);
876		    	label3.vertex = true;
877		    	cardCell4.insert(label3);
878		    	var label4 = new mxCell('ep.2', new mxGeometry(160, 60, 0, 0), 'resizable=0;html=1;align=right;spacingRight=22;verticalAlign=middle;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10');
879		    	label4.geometry.relative = false;
880		    	label4.setConnectable(false);
881		    	label4.vertex = true;
882		    	cardCell4.insert(label4);
883		    	var label5 = new mxCell('ep.3', new mxGeometry(160, 90, 0, 0), 'resizable=0;html=1;align=right;spacingRight=22;verticalAlign=middle;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10');
884		    	label5.geometry.relative = false;
885		    	label5.setConnectable(false);
886		    	label5.vertex = true;
887		    	cardCell4.insert(label5);
888		    	var cardCell5 = new mxCell('tpInLink : TP', new mxGeometry(280, 100, 160, 120), inh + s + 'itemFlowLeft;fontStyle=1;spacingLeft=40;whiteSpace=wrap;align=center;');
889		    	cardCell5.vertex = true;
890		    	bg.insert(cardCell5);
891		    	var label6 = new mxCell('tp.1', new mxGeometry(0, 30, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=22;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10');
892		    	label6.geometry.relative = false;
893		    	label6.setConnectable(false);
894		    	label6.vertex = true;
895		    	cardCell5.insert(label6);
896		    	var label7 = new mxCell('tp.2', new mxGeometry(0, 60, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=22;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10');
897		    	label7.geometry.relative = false;
898		    	label7.setConnectable(false);
899		    	label7.vertex = true;
900		    	cardCell5.insert(label7);
901		    	var label8 = new mxCell('tp.3', new mxGeometry(0, 90, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=22;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10');
902		    	label8.geometry.relative = false;
903		    	label8.setConnectable(false);
904		    	label8.vertex = true;
905		    	cardCell5.insert(label8);
906		    	var assoc3 = new mxCell('Vibration', new mxGeometry(0, 0, 0, 0), inh + 'edgeStyle=none;html=1;verticalAlign=bottom;endArrow=none;exitX=1;exitY=0.25;entryX=0;entryY=0.25;labelBackgroundColor=none;');
907		    	assoc3.geometry.relative = true;
908		    	assoc3.edge = true;
909		    	cardCell4.insertEdge(assoc3, true);
910		    	cardCell5.insertEdge(assoc3, false);
911		    	bg.insert(assoc3);
912		    	var assoc4 = new mxCell('Heat', new mxGeometry(0, 0, 0, 0), inh + 'edgeStyle=none;html=1;verticalAlign=bottom;endArrow=none;exitX=1;exitY=0.5;entryX=0;entryY=0.5;labelBackgroundColor=none;');
913		    	assoc4.geometry.relative = true;
914		    	assoc4.edge = true;
915		    	cardCell4.insertEdge(assoc4, true);
916		    	cardCell5.insertEdge(assoc4, false);
917		    	bg.insert(assoc4);
918		    	var assoc5 = new mxCell('Current', new mxGeometry(0, 0, 0, 0), inh + 'edgeStyle=none;html=1;verticalAlign=bottom;endArrow=none;exitX=1;exitY=0.75;entryX=0;entryY=0.75;labelBackgroundColor=none;');
919		    	assoc5.geometry.relative = true;
920		    	assoc5.edge = true;
921		    	cardCell4.insertEdge(assoc5, true);
922		    	cardCell5.insertEdge(assoc5, false);
923		    	bg.insert(assoc5);
924
925			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1, bg, assoc2], 470, 370, 'Item Flow');
926			}),
927
928			this.addDataEntry(dt + 'item flow', 200, 120, 'Item Flow',
929				'7ZXfasIwFMafJrdSm22wS1unDBwI7gVie2yD+VOSuLY+/U6bVN1WcYNdetGQfOd84ZzfKYTQVDZLw6ryTecgCH0hNDVaO7+TTQpCkDjiOaFzEscRfiReXIlO+2hUMQPK/cYQe8MHEwfwiqte1YqrPaqEznB9X/sc61oRckonsdL5lNDElqzqVNkUXRMT21opJtyBXAhdr2CHZSQ7rdwm2DtTXWLCpmJZJ9ToQ40JXig8Zlg5GBRCZWAcNFe766XQ2hK0BGdaTKl57srQYeQJRCXwohxsAUvErBeKk/cMCzeB1zg7OsJuMv0By4DlR7btj4g0uYA39Cw8JotEuCo8tHnXWNK1zzMmZiFT8jzvbkoE24JYa8sd1xdXDPmrb2Gnq8GUsGxfGH1QeaqFRtJzpRUMU+LHfkgBT6aVgsyF6k9/062pxONTaQO3f2D/MMY+vrO/xf7pH9g/jrGnd/a32D//nT0ez29BH/vyVHwC'),
930			this.addDataEntry(dt + 'item flow', 200, 120, 'Item Flow',
931				'7ZVdb4IwFIZ/TW8N0m3JLgXULHGJmb+gwhk09oO0dYC/fgco6hxmH/HSC0j79rzNOc9LAqGxrJeGlcWrzkAQOic0Nlq7fiXrGIQgYcAzQhMShgE+JFxcOZ12p0HJDCj3G0PYGz6Y2EOvQPmiVlztUCV0hu/5uq+xrhG+pnASO02mhEa2YGWryjpvh5jYxkox4Q7kQujqjecF9hG9a+U23t+6qgIrNiVLW6FCI2pM8FzhNsXWwaDgWwPjoL46Xif52ZagJTjTYEnFM1f4EYMeQVBA301n81wCZnshP3pPtHDhgY3DoyPwJtNvtAxYfmDbbotMozN6w8zGc7KIhKvcY0va0aIWAE+ZmPlaybOsvSsSbAtirS13XJ9fMhhWF+dOl4MrYukuN3qvslgLjbATpRUMQfFDl5MnlGqlIHV+gOMX9VMw4Xgw9UUojUd5gzgexuII73H8I46nG8TxOBYHvcfxjzie/x4Hbk9/ke7sy0/mEw=='),
932
933		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 80,
934		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
935	    			'&lt;&lt;interface&gt;&gt;<br/>' +
936	    			'<b>ISpeedObserver</b></p><hr/>' +
937		    		'<p style="margin:0px;margin-top:4px;margin-left:4px;text-align:left;">' +
938	    			'notifySpeedChange(): void</p>',
939		    		'Interface', null, null, this.getTagsForStencil(gn, '', dt + 'interface').join(' ')),
940
941			this.addEntry(dt + 'required interface', function()
942		    {
943		    	var cardCell = new mxCell('Transmission', new mxGeometry(90, 0, 160, 60), s + 'port4;fontStyle=1;whiteSpace=wrap;align=center;');
944		    	cardCell.vertex = true;
945		    	var label1 = new mxCell('p1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;html=1;resizable=0;align=left;verticalAlign=bottom;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;');
946		    	label1.geometry.relative = false;
947		    	label1.setConnectable(false);
948		    	label1.vertex = true;
949		    	cardCell.insert(label1);
950		    	var assoc1 = new mxCell('ITransCmd', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=left;verticalAlign=bottom;endArrow=sysMLReqInt;endSize=8;exitX=0;exitY=0.5;');
951		    	assoc1.geometry.setTerminalPoint(new mxPoint(0, 0), false);
952		    	assoc1.geometry.relative = true;
953		    	assoc1.geometry.x = 1;
954		    	assoc1.edge = true;
955		    	cardCell.insertEdge(assoc1, true);
956		    	var assoc2 = new mxCell('ITransData', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=left;verticalAlign=top;endArrow=sysMLProvInt;endSize=12;exitX=0;exitY=0.5;');
957		    	assoc2.geometry.setTerminalPoint(new mxPoint(0, 60), false);
958		    	assoc2.geometry.relative = true;
959		    	assoc2.geometry.x = 1;
960		    	assoc2.edge = true;
961		    	cardCell.insertEdge(assoc2, true);
962
963			   	return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 250, 60, 'Required Interface');
964			}),
965
966			this.addEntry(dt + 'provided interface', function()
967		    {
968		    	var cardCell = new mxCell('Transmission', new mxGeometry(90, 0, 160, 60), s + 'port4;fontStyle=1;whiteSpace=wrap;align=center;');
969		    	cardCell.vertex = true;
970		    	var label1 = new mxCell('p1', new mxGeometry(0, 20, 20, 20), inh + 'shape=rect;html=1;resizable=0;labelBackgroundColor=none;fontSize=10;');
971		    	label1.geometry.relative = false;
972		    	label1.setConnectable(false);
973		    	label1.vertex = true;
974		    	cardCell.insert(label1);
975		    	var assoc1 = new mxCell('ITransCmd', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=left;verticalAlign=bottom;endArrow=sysMLReqInt;endSize=8;exitX=0;exitY=0.5;');
976		    	assoc1.geometry.setTerminalPoint(new mxPoint(0, 0), false);
977		    	assoc1.geometry.relative = true;
978		    	assoc1.geometry.x = 1;
979		    	assoc1.edge = true;
980		    	cardCell.insertEdge(assoc1, true);
981		    	var assoc2 = new mxCell('ITransData', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=left;verticalAlign=top;endArrow=sysMLProvInt;endSize=12;exitX=0;exitY=0.5;');
982		    	assoc2.geometry.setTerminalPoint(new mxPoint(0, 60), false);
983		    	assoc2.geometry.relative = true;
984		    	assoc2.geometry.x = 1;
985		    	assoc2.edge = true;
986		    	cardCell.insertEdge(assoc2, true);
987
988			   	return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 250, 60, 'Provided Interface');
989			})
990	    ];
991
992	    this.addPalette('sysmlPorts and Flows', 'SysML / Ports and Flows', expand || false, mxUtils.bind(this, function(content)
993		{
994			for (var i = 0; i < fns.length; i++)
995			{
996				content.appendChild(fns[i](content));
997			}
998		}));
999	};
1000
1001	Sidebar.prototype.addSysMLConstraintBlocksPalette = function(expand)
1002	{
1003		var s = 'html=1;shape=mxgraph.sysml.';
1004		var inh = 'strokeColor=inherit;fillColor=inherit;gradientColor=inherit;';
1005		var gn = '';
1006		var dt = 'sysml constraint block ';
1007		var sb = this;
1008
1009		var fns = [
1010		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 180,
1011		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1012		    		'&lt;&lt;constraint&gt;&gt;<br/>' +
1013		    		'<b>ConstraintBlock1</b></p><hr/>' +
1014		    		'<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
1015	    			'<i>constraints</i></p>' +
1016		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
1017	    			'{{L1} x > y }<br/>nested: ConstraintBlock2</p><hr/>' +
1018		    		'<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
1019	    			'<i>parameters</i></p>' +
1020		    		'<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
1021	    			'x: Real<br/>y: Real</p>',
1022		    		'Constraint Block', null, null, this.getTagsForStencil(gn, '', dt + '').join(' ')),
1023
1024			this.addEntry(dt + 'parametric diagram', function()
1025		    {
1026			    var bg = new mxCell('<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>par</b>   Block1</p>', new mxGeometry(0, 0, 300, 170), s + 'package;labelX=120;align=left;spacingLeft=10;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
1027		    	bg.vertex = true;
1028			    var cardCell2 = new mxCell('C1: Constraint', new mxGeometry(130, 50, 150, 100), inh + s + 'paramDgm;fontStyle=1;whiteSpace=wrap;align=center;');
1029		    	cardCell2.vertex = true;
1030		    	bg.insert(cardCell2);
1031		    	var label1 = new mxCell('x:', new mxGeometry(0, 25, 0, 0), 'html=1;resizable=0;align=left;verticalAlign=middle;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingLeft=22;fontStyle=1;');
1032		    	label1.geometry.relative = false;
1033		    	label1.setConnectable(false);
1034		    	label1.vertex = true;
1035		    	cardCell2.insert(label1);
1036		    	var label2 = new mxCell('y:', new mxGeometry(0, 75, 0, 0), 'html=1;resizable=0;align=left;verticalAlign=middle;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingLeft=22;fontStyle=1;');
1037		    	label2.geometry.relative = false;
1038		    	label2.setConnectable(false);
1039		    	label2.vertex = true;
1040		    	cardCell2.insert(label2);
1041			    var cardCell3 = new mxCell('length: Real', new mxGeometry(30, 65, 20, 20), inh + 'shape=rect;html=1;fontSize=10;verticalLabelPosition=top;verticalAlign=bottom;');
1042		    	cardCell3.vertex = true;
1043		    	bg.insert(cardCell3);
1044			    var cardCell4 = new mxCell('width: Real', new mxGeometry(30, 115, 20, 20), inh + 'shape=rect;html=1;fontSize=10;verticalLabelPosition=top;verticalAlign=bottom;');
1045		    	cardCell4.vertex = true;
1046		    	bg.insert(cardCell4);
1047				var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=none;html=1;edgeStyle=none;exitY=0.25;exitX=0;entryY=0.5;entryX=1;');
1048				assoc1.geometry.relative = true;
1049				assoc1.geometry.x=1;
1050				assoc1.edge = true;
1051		    	cardCell2.insertEdge(assoc1, true);
1052		    	cardCell3.insertEdge(assoc1, false);
1053		    	bg.insert(assoc1);
1054				var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=none;html=1;edgeStyle=none;exitY=0.75;exitX=0;entryY=0.5;entryX=1;');
1055				assoc2.geometry.relative = true;
1056				assoc2.geometry.x=1;
1057				assoc2.edge = true;
1058		    	cardCell2.insertEdge(assoc2, true);
1059		    	cardCell4.insertEdge(assoc2, false);
1060		    	bg.insert(assoc2);
1061
1062			   	return sb.createVertexTemplateFromCells([bg], 300, 170, 'Parametric Diagram');
1063			}),
1064
1065			this.addDataEntry(dt + 'constraint property', 150, 100, 'Constraint Property',
1066				'7VTLbsIwEPwaX1FIinrOo+VCpap8gUkW26ofkW1Kwtd3nRgoDaituPYQyZ7dsXdmIpOsVN3S0pa/mAYkyZ5IVlpj/LhSXQlSkjQRDckqkqYJfiR9vlGdD9WkpRa0/w0hHQkfVO5gRMo5yfLSaOctFdrHE53vZWzgXuGYFbYVjtM2oKpjQcHM9U7JGd5OVcUUNmyN9utIDYQ9Fx7WLa0DsEcOYlQKpnFb48hgEYgjgfXQ3ZQ1QFHTEowCb3ts2YvG89ixGKUnHATjR1oSQepGgJ24Z5dwEY26blo2MQ3nzBF5Ayonfllw4kA3wzZBeV/8O0qXsMX5iiBZ1FTmEVaiaQKtkHQD8tU44YW50r/6Vr7kFbR+Z9bsdFMaadDgShsNx3DEYcgmDOYwF6HZaji8CvZO8hvF1UZrqH3UdPrHfoosvR5ZH6uL+4N5mATT/wdzbzCPfw8Gt+cnbKhdvHCf'),
1067			this.addDataEntry(dt + 'constraint property', 150, 120, 'Constraint Property',
1068				'3VTLboMwEPwaHxMRk0a9xtDmkkpR0x9wwAGrflDbSUi/vmswIPJQK/VS9YDwzu7Y3pkFFCeyXhlalS86ZwLFTyhOjNauXck6YUIgHPEcxSnCOIIH4ec72VmTjSpqmHI/IeCWcKTiwFoE4YUAKqkAtu4sWnjxcfBXIpKagisUL6Oq7sOJ0xVA8wZyrHYTKnjhqzK4BjOADjvAqghvKoFGxHWUaWWdoRx66PAxp4ua6p3x/Q3btmAHJDO4B/SS9HvOuhqg7S55gFWXWDk+AI+UwaWTYFsKxxBb0sqjsi68o1N7tlJMfTcb4yUi+sjMXugT1Ow5GBGTU8kd21Y087wTsPojoBS0vOtrAwVTV0xL5swZSk48d2WoeGi9j0rGi7KjhYGIqG2BoucOYwKLMCm3pya+mpq6FfmVUXElkGGWf9JdE0ZezkGwMCepYHuvrW+ZZ1QsAyx5nnsaEXTHxEZb7ri+Ub++SI95hGbvhdEHlSdaaJjGVGnlsxZk56pYN5ulXs4OevNupV6rmOy1ctvQzax3B0xVLHOhrf47+841fNu135gxvzLj/C/NePyDZkA4/Kub3OhX/gU=')
1069		];
1070
1071	    this.addPalette('sysmlConstraint Blocks', 'SysML / Constraint Blocks', expand || false, mxUtils.bind(this, function(content)
1072		{
1073			for (var i = 0; i < fns.length; i++)
1074			{
1075				content.appendChild(fns[i](content));
1076			}
1077		}));
1078	};
1079
1080	Sidebar.prototype.addSysMLActivitiesPalette = function(expand)
1081	{
1082		var s = 'html=1;shape=mxgraph.sysml.';
1083		var inh = 'strokeColor=inherit;fillColor=inherit;gradientColor=inherit;';
1084		var gn = '';
1085		var dt = 'sysml activity ';
1086		var sb = this;
1087
1088		var fns = [
1089		    this.createVertexTemplateEntry('shape=rect;html=1;rounded=1;whiteSpace=wrap;align=center;',
1090		    		160, 80, 'Action', 'Action', null, null, this.getTagsForStencil(gn, '', dt + 'action').join(' ')),
1091		    this.createVertexTemplateEntry(s + 'callBehAct;whiteSpace=wrap;align=center;',
1092		    		160, 80, 'action name:\nbehavior name', 'Call Behavior Action', null, null, this.getTagsForStencil(gn, 'callBehAct', dt + 'call behavior action').join(' ')),
1093		    this.createVertexTemplateEntry(s + 'accEvent;strokeWidth=2;whiteSpace=wrap;align=center;',
1094		    		100, 60, 'Event', 'Accept Event Action', null, null, this.getTagsForStencil(gn, 'accEvent', dt + 'accept event action').join(' ')),
1095		    this.createVertexTemplateEntry(s + 'timeEvent;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;',
1096		    		35, 40, '', 'Time Event', null, null, this.getTagsForStencil(gn, 'timeEvent', dt + 'time event').join(' ')),
1097		    this.createVertexTemplateEntry(s + 'sendSigAct;strokeWidth=2;whiteSpace=wrap;align=center;',
1098		    		100, 60, 'Signal', 'Send Signal Action', null, null, this.getTagsForStencil(gn, 'sendSigAct', dt + 'send signal action').join(' ')),
1099		    this.createVertexTemplateEntry(s + 'actFinal;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;',
1100		    		40, 40, '', 'Activity Final', null, null, this.getTagsForStencil(gn, 'actFinal', dt + 'activity final').join(' ')),
1101		    this.createVertexTemplateEntry(s + 'actParamNode;align=left;spacingLeft=15;verticalAlign=top;spacingTop=-3;',
1102		    		300, 135, 'act', 'Activity Parameter Node', null, null, this.getTagsForStencil(gn, 'act', dt + 'activity parameter node').join(' ')),
1103		    this.createVertexTemplateEntry('shape=rect;rounded=1;html=1;whiteSpace=wrap;align=center;',
1104		    		160, 80, '&lt;&lt;controlOperator&gt;&gt;\nCallBehaviorAction', 'Control Operator', null, null, this.getTagsForStencil(gn, '', dt + 'control operator').join(' ')),
1105		    this.createVertexTemplateEntry(s + 'package;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;labelX=135;html=1;overflow=fill;',
1106		    		250, 120, '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>act</b>   [ControlOperator]</p>', 'Control Operator',
1107		    		null, null, this.getTagsForStencil(gn, 'package', dt + 'control operator').join(' ')),
1108			this.addDataEntry(dt + 'decision node', 200, 80, 'Decision Node',
1109				'7ZXJboMwEIafxneWpOo1kDSXVoqUJzBhBFaNB5kh29PXYIclTVS6ST30gDTzz+JhPpBZGBfHteZl/oIpSBauWBhrRLJWcYxBShZ4ImXhkgWBZx4WPN2J+m3UK7kGRVMKAluw57IGq1ihopN0QpXzsjF1jkVSVyyMcirMoEvfmHvQJHZcPvME5AYrQQKViSVIhMUgYSFFpgo7FWFpIu5kE4fj3elbyY2+BiyA9MmkuIJH+3Leyboz5x5ESvlYykFkOY01Xlk/6/r2izKG29XtvYUf7w3SDLbOBZngYdULwxW2MWPnqMUZFXETiHizrmbpduzxGof7BZUutG4bKFRNa421SqGZ0zOebMBEfPeatXqMEnWfWxHXdKnHEtRF24pzM7cfdKCa1xlhqrDWOxh9RhPIaZCcxH7c6hYJV7pBYTp2xH3vCp4ZNgNyWVf8umMnIZ29RzqPsprrlM2X36Z7ATiRpWPxGZam+q9SC7zxj/rwaxDntyCCrOCf4VcZ/jQz4/b3m00fXn9v'),
1110
1111		    this.createVertexTemplateEntry(s + 'flowFinal;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;',
1112		    		40, 40, '', 'Flow Final', null, null, this.getTagsForStencil(gn, 'flowFinal', dt + 'flow final').join(' ')),
1113			this.addDataEntry(dt + 'fork node', 200, 80, 'Fork Node',
1114				'7ZZNb4JAEIZ/DXdYrPZq0XppExMPPa8yhU2XHbKMn7++Czt+QDQ1RpMeJCHZfeeD2feBhCBOis3EyjL/xBR0EI+DOLGI5FfFJgGtAxGqNIhHgRChuwPxfiEaNdGwlBYMXVMgfMFK6iV4xQsVbTULVS7Lemlh4Vq+5VS4KUeRW34rrRPUaJvEOGwup6/AklpI/SHnoKdYKVJoXM4cibA4SRhqlZnCj0pYugiP4+KwuXikRuLzTAALILt1KVzQ9ycO1yql3Es9r+Sgspx7vHKWrPw+O/Q5uuUWbNh58+K/zYM0gxlvQc9xPT4Kp1Y2MbfO0aodGpK6Fk06tLbRDZq6wuLSpFA/vva5Imlpn4ElmEaz+ANffPZ4nzVTu3qESBw8ridrOVzh0i6g9VpcYboFLUmt2q3OmcqlU1Suowi3TKaDwc2aAXFSh8ThqVfB6d0fzv61baNh47touhhcxb+DwF+MCJkCQ4keBuXlCeVWKPHDoPSfUG6F8vIwKIMnlFuhDO4FxW2Pf2I+/fRH7Rc='),
1115
1116		    this.createVertexTemplateEntry('shape=ellipse;html=1;fillColor=#000000;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;perimeter=ellipsePerimeter;',
1117		    		40, 40, '', 'Initial Node', null, null, this.getTagsForStencil(gn, '', dt + 'initial node').join(' ')),
1118			this.addDataEntry(dt + 'join node', 200, 80, 'Join Node',
1119				'7ZZNb8IwDIZ/Ta6oNBvsugLjskmTdtg5tKbNltZVahjs189NMigfk5AAaQcqVXLs1076PjlUyFG5mlpVFy+YgRFyIuTIIpKPytUIjBFxpDMhxyKOI35F/PRHte+qUa0sVHRKQ+wblsoswGfEMPlAXTU1pJzo9XpiOPaihtYmiJpC1W1oIeVtkoJKPvm4z+FcGzNCg9YJZeQezi/Bkk6VeVYzMK/YaNJYsWaGRFiywLSFRKWfucVFlXVmzN3TmfFodN72EtacDV/ANVj96YJLBQumgCWQXbPkt0EOfMuXzqjwuTufKUDnRRjy4L2MVOPX+WbQ1mEOgsnHDZeHhu+bC1kOb2EJZoZfk22ia7WrcVyg1d9YkeJC4syDdrPWdaiyR2udCmtgz5KGLH7Ce/hO6TVv+rvdrB9v7GzPsGNmgwubws6lOcFfC0aRXu6OOmZfaH3lm0dbLnEUHF8HJnsASNkcKDTtMdic4iQsd5fH8ntbnenK0h6IDpoKKzhAdwjKTfl3qAKa/tXQ3N/QnIdGXg3N4IbmPDT3V0MzvKE5D83wUmh4uf2f8/Lu794P'),
1120			this.addDataEntry(dt + 'is control', 300, 60, 'Is Control',
1121				'zVTLboMwEPwaXyMCbaMeA0lzqlQpl/bowApbMjYymwD5+q7BQEgTKYdW6gFpd/bh8Qwyi5Ki2VleineTgWLRlkWJNQb7qGgSUIqFgcxYtGFhGNDHwrc71WVXDUpuQeMjA2E/cOLqCD2yTlEa3cMVtsrDAgsit1myKK4ELx1aNLnjvajaqlALWSVGozXUFddCIuxLnrq2mpoI40rmmtKUmIElwJ8MFqG5y76DPPUdmALQttTiB177ywW1zFD4AX/hQIDMhd/y4jFe9Xk+bpqkocCrc1up6IdSbBWn/sqrzQ/BIMth71NQB1NvJyC+ULOrUSyMlWdax52AFXKLa2u7iimBhIutOeoMHJvAjelsqGuj3U6npEy5WnuhDwbRFK61kfg5jFH85eLF83DMXp4dx2U4euKozxypzNGmMPtjHjDJguIoT/NVtyzwox9G0sYwaL3gV6YR1xzQN135Np76kJVPf2zl4MTcpps23jeN2LSjay6ZbKOl/860ZjDNu/bbJlI6vYp9++Wj+Q0='),
1122			this.addDataEntry(dt + 'is stream', 300, 60, 'Is Stream',
1123				'zVTLboMwEPwaXyMCbaMeA0lzqlQpl/bowAos2RjZmwD5+q7BQEgTKYdW6gFpd/bhYQbMokQ1O8Or4l1nIFm0ZVFitMY+Uk0CUrIwEBmLNiwMA3pY+HanuuyqQcUNlPjIQNgPnLg8Qo+sUxS67GGLrfRwgYrIbZYsim3BK4eqJne8F7a1Si6ETXSJRlNXXBcCYV/x1LXV1EQYlyIvKU2JGRgC/MlgEJq77DvIU9+BVoCmpRY/8Nq/XFCLDAs/4F84KEDkhd/y4jFu+zwfN03SUODVua1U9EMptootGuCKrTY/9IIsh71PQR50vZ2A+ELMrkZxoY04k4Dc6WeRG1wb01V0BaRbbPSxzMCRCdxYmQ31UpdupxNSpFyuvc4HjaiVa20Efg5jFH+5ePE8HLMXZ8dxGY6WOOozQ6w+mhRmH8wDHhmQHMVpvuqWA370QwvaGAat1/vKM+KaA/qmK9vGUx9y8ulvnRyMmLt008X7ntGf1I6muWRyjZb+O8+awTNv2m97SOl0J/btl1fmNw=='),
1124			this.addDataEntry(dt + 'is stream', 300, 60, 'Is Stream',
1125				'zVTJboMwEP0aXyMCbaUes58qVeKSHl0YYUtekJkEyNd3DCaQTcohhx6QZt4sfn7PgiUr3ewcL8WXzUGxZMOSlbMW+0g3K1CKxZHMWbJmcRzRx+Ltg+q8q0Yld2DwmYG4HzhydYAeWWQorenhClsVYIGayK3nLFlWgpce1U3hec+qttJqJqsUHXBNDbWQCGnJM99VUw9hXMnCUJoRMXAEhIPBITQPyXdQYL4DqwFdSy1h4LO/W1TLHEUYCPeNBMhChC0fAeNVnxfnTaMyFARx7guV3Ah1IxHkBaQhBfVr680ILCf6dTWKhXXyZA1y5UVF7nDhXFexJZBWS2cPJgdPIPJjJh/qxhq/ExqJ+6FK8Y+PZ+/DtlSePJV5fFbbM7zQurIHl8HFU3hCfgeKozxerronbhj9tpI2xlEbpLyyg7gWgKHpypHzqU+Z9PZ6k/wDlVln0cSABwYR0f00GQ2h2X9nRzPYEfx4tT2Ujj+yvn36n/sD'),
1126
1127		    this.addEntry(dt + 'is stream', function()
1128		    {
1129		    	var cardCell = new mxCell('act', new mxGeometry(0, 0, 200, 100), s + 'isActStream;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;');
1130		    	cardCell.vertex = true;
1131		    	var label1 = new mxCell('{stream}', new mxGeometry(200, 50, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingTop=5;');
1132		    	label1.geometry.relative = false;
1133		    	label1.setConnectable(false);
1134		    	label1.vertex = true;
1135		    	cardCell.insert(label1);
1136
1137			   	return sb.createVertexTemplateFromCells([cardCell], 250, 100, 'Is Stream');
1138			}),
1139			this.addDataEntry(dt + 'local pre precondition post postcondition', 150, 180, 'Local Pre- and Postconditions',
1140				'5ZVNb4MwDIZ/Te6QtL33a71s0qQeds7Ag2ghQcEtbX/9HEhbEEWqtHWatAPCfp03kCeGMLEsDhsny/zFpqCZWDOxdNZiGxWHJWjNeKRSJlaM84guxp9GqnFTjUrpwOA9Bt4a9lLvoFW0TaR+dZBYkypU1jA+Y1zEERML0ip0UtHcja3Cow62KpelD41Fui1yLGgtq5jCSp18IZ76GJ39hDeVYk4SJ0VqlRmKNXygH1DKRJnsuclW3lLnCmFLsp+kJlAdU0KrBEdCWAU4hMMoiUYKGDZgC0B3pCF1eBs/ItCKclBZHmyToMmqzbOL9cqVgoD2NmYxwDxPWrYjGIk/9jE6uzMppGeoA5AP53Q2BBzHNp1N27RLMbpBcfoDFCcjzWor/DfdGgy8vwvxuUm72yAe1MzTwTYM+EKawTakoN9tvb4KXdpNjeLcOnWyBqXudbrfRTDp3LlmlLEGLvj8I3rwKrtzCfR+ayhdBtj7BO9A7EBLVPv+7N8BNvv7wMQQ2OTXgFF6PfGaWu9A/AI='),
1141			this.addDataEntry(dt + 'merge node', 200, 80, 'Merge Node',
1142				'7ZXPboMwDMafJncInbRrS7teNqlSnyAUC6KFGAXTf0+/hKQUunbrpE7aYQck53PsON8PKSxJq/3SiLp8wxwUSxYsSQ0i+ajap6AU45HMWTJnnEf2Y/zlRjbuslEtDGi6p4D7gq1QLXjFCw0dVBCaUtQuNCVWWduwZFZSZQedxzbcgiG5EepVZKBW2EiSqG2OsB5kp0oWuvIjZUiElU2Gk+0W2N+cvpPC6EvACsgc7JZQ8OwvF+1kTqWXJkEqQRYljTXR+HXRNzo7Y4NgznWjku+NgryAdViCynC3OAtDz7qcjUs08oiahE3MhLPIuezHHls3tM1gq3NwU0V2pZzvM7F5Lzo9RYXGpjRqdyjofGpMdxjWoL2ylkc3Ycx7Bm7wEYEGW7OB0R9yBxQDSpDcjltd8zyUrlDajj3MOAqYDmO4pw4kTAEUii7A9VPcxXLyeJYnXF+Ra+wN6DOPkxKY/YRv1/Gv8uQXPPmv8Xz65/mbPB/Nzy7PD5zfPnz/PgA='),
1143			this.addDataEntry(dt + 'no buffer', 300, 60, 'No Buffer',
1144				'zZTBboMwDIafJteKwlZpx9JuPU2a1Mt2TMGFSCFGwW2hTz8HApSulXrYoQck+4/t2P4AEa2KemNlmX9iClpE7yJaWUTqrKJegdYiDFQqorUIw4AfEX7cOZ23p0EpLRh6JCHsEo5SH6BTlgkpNJ1cUaO9nFPBza3nIoqrXJZOLerM9T2rmqrQM1Wt0JBFjopPuSLYljJxYScOYk1qlRl2E+4MLAv+ZrAE9d3uW8m3vgEsgGzDIT7hrRsuOKmUcp/gBw5yUFnuqyy8JqvOz4ZK42rY8Nu5vanoz6ZEuJCFG01TO86lZzA+7Pc8Z69mkxjvXe0Y0gy23gW9w9P7KMQXANoztnO06sxLl27nFUlLS2vbEyyBdx1bPJgU3ACBSzNpf27QuJpu+SqReunZ7JAICxdaK/ru09j+cfbstb9mq86ux3k4TOFan0Cs8GATmLxkD3C1oCWp47TULWo+9QsVVwyDxjO64sy9ZkA+6Ar1cOtD9F+ej34Pb0r2Jvn7nPmLbQbQzhlJc9Gn41z3nD3o/+bO7vjv7cIvf82/'),
1145
1146		    this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
1147		    		160, 80, 'object node name:\n type name\n[state, state ...]', 'Object Node', null, null, this.getTagsForStencil(gn, '', dt + 'object node').join(' ')),
1148
1149		    this.addEntry(dt + 'object node', function()
1150		    {
1151		    	var cardCell = new mxCell('Action', new mxGeometry(0, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;');
1152		    	cardCell.vertex = true;
1153		    	var label1 = new mxCell('pin name: type name\n[state, state ...]', new mxGeometry(0, 30, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=middle;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;spacingRight=5;');
1154		    	label1.geometry.relative = false;
1155		    	label1.setConnectable(false);
1156		    	label1.vertex = true;
1157		    	cardCell.insert(label1);
1158
1159			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Object Node');
1160			}),
1161			this.addDataEntry(dt + 'optional', 300, 60, 'Optional',
1162				'zZTBboMwDIafJteKwlZpx9J2PU2a1Mt2TMGCSAlGwS3Qp58DAUrXSj3ssAOS/cd2bH+AiDam2VtZ5h+YghbRTkQbi0i9ZZoNaC3CQKUi2oowDPgR4fuD02V3GpTSQkHPJIR9wlnqE/TKOiGFRS9X1Gov52S4ue1SRHGVy9Kppslc34uqrYxeqGqDBVnkqLjOFcGhlIkLqzmINalVVrCbcGdgWfA3gyVoHnbfSb71PaABsi2H+IS3frigVinlPsEPHOSgstxXWXlNVr2fjZWm1bDht3N/U9GvTYlwJY0bTVM3zrWHpdui1KOazWK8d7NjSDM4eBf0EevdJMRXALoztnO06sJLl27nFUlLa2u7EyyBdx1bPBUpuAECl1akw3mBhavplq8SqdeezRGJ0LjQRtHXkMb2t7MXr8M1B3VxPS7DcQrX+gxihSebwOwle4KrBS1Jneel7lHzqZ+ouGIYtJ7RDWfuNQPyQTeox1ufov/y/+gP8OZk75J/zJm/2HYE7ZyJNBf9d5ybgbMH/dfc2Z3+vX349a/5Bw=='),
1163
1164		    this.addEntry(dt + 'optional', function()
1165		    {
1166		    	var cardCell = new mxCell('act', new mxGeometry(0, 0, 200, 100), s + 'isActStream;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;fontStyle=1;');
1167		    	cardCell.vertex = true;
1168		    	var label1 = new mxCell('&lt;&lt;optional&gt;&gt;', new mxGeometry(200, 50, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingTop=5;');
1169		    	label1.geometry.relative = false;
1170		    	label1.setConnectable(false);
1171		    	label1.vertex = true;
1172		    	cardCell.insert(label1);
1173
1174			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Optional');
1175			}),
1176			this.addDataEntry(dt + 'overwrite', 300, 60, 'Overwrite',
1177				'zZTBboMwDIafJteKwlZpx9J2PU2a1Mt2TMGCSCFGwS3Qp58DAUrXSj3ssAOS/cd2bH+AiDZFs7eyzD8wBS2inYg2FpF6q2g2oLUIA5WKaCvCMOBHhO8PTpfdaVBKC4aeSQj7hLPUJ+iVdUIKTS9X1Gov51Rwc9uliOIql6VTiyZzfS+qtir0QlUbNGSRo+I6VwSHUiYurOYg1qRWmWE34c7AsuBvBkvQPOy+k3zre8ACyLYc4hPe+uGCWqWU+wQ/cJCDynJfZeU1WfV+NlaaVsOG3879TUW/NiXClSzcaJq6ca495Llqy1sY5WwW5L2bJUOawcG7oI9Y7yYhviLQnbGdo1UX3rp0S69IWlpb251gCbzs2OLJpOAmCFyaSYdzg8bVdNtXidRrD+eIRFi40EbR15DG9rezF6/DNQd1cT0uw3EK1/qMYoUnm8DsLXsCrAUtSZ3npe5h86mfqLhiGLQe0g1o7jUD8kE3rMdbn8L/8g/xD/TmaO+ifwyav9l2JO2cCTUX/XegmwG0J/3X4Nmd/r59+PXP+Qc='),
1178
1179		    this.createVertexTemplateEntry(s + 'paramSet;whiteSpace=wrap;align=center;',
1180		    		160, 100, 'Action', 'Parameter Set', null, null, this.getTagsForStencil(gn, 'paramSet', dt + 'parameter set').join(' ')),
1181		    this.createVertexTemplateEntry(s + 'paramActSet;align=left;spacingLeft=15;verticalAlign=top;spacingTop=-3;fontStyle=1;',
1182		    		250, 120, 'act', 'Parameter Set', null, null, this.getTagsForStencil(gn, 'paramActSet', dt + 'parameter set').join(' ')),
1183			this.addDataEntry(dt + 'probability', 120, 160, 'Probability',
1184				'zVTLboMwEPwaXyNi2uQcoM2llSqlP2DMBqwaG9lOA/n6rsEhb7WRqqoHJO/sjj2eQSZxWrdLw5rqVRcgSfxE4tRo7YZV3aYgJaGRKEicEUoj/Ah9vtGd9t2oYQaU+wmBDoRPJjcwIAvuhFYDbF0nA1y5GsVlUxIntmKNR+u29LontrO1nDRG5ywXUrgOZ7aVcLBqGPeDWxxDjElRKiw5agODQDgbjIP2pv4eCuKXoGtwpsORrShcFSbCHaMKRFntabMAMjsA5cg92IGL4Mh1d+ILd8g88fqO7oqH+86M0HiKy6QfXjXAxVpwNngZkXl24agBK3Ys70tPPHJ475SEtfNbokO4l1wEONfO6RobkuUg37QV/TEX8y9n7VNewvhHafRGFamWGvPIlFYoJllr5VZi53X1N7IYo1BlEtgZfRyz41op4C7cYvzbvsuUXs+0PcuzG+qHX0jy4X8m6XRzf4xHpHszfPfUPw9wrO9IEMvDK9j3Th7JLw=='),
1185			this.addDataEntry(dt + 'probability', 120, 160, 'Probability',
1186				'zVRdb4MgFP01PK6x0I/nqVtfuqRJ9wdQqZIh1yDttL9+gFRb22Zrsix7MOGec0+4nCMgEpXNStGqeIOMCUReEIkUgO5WZRMxIRAOeIZIjDAOzIfw6x126tigoopJ/RMB7gQHKvasQ2iqO6zWrfBYoUszWTxFJKwLWlm0bHI79KRu61JMjGijIDE8FTyXhhdsp217RVMu87Wr4rlBDkxpnlLx7Bs1VEPfuy3iJ2KQHUi99SPYjf2gRs2au4d1kD/pikHJtGpNyyfPdOE7vCFBwXhenGQLD9K6A/JeO3hnFt6+21aSKyvRMrTzGWNowgXXdhTHLBAm08CaYZu3FUv5zniiOUjbsoyvElCs5keauNIKzxIZOT72NwGtoTSEoAkTG6i52+aqfz2iL3UhTT9yBXuZRSBAGV6CZKeY+NGlFAxBhl4d43mfXQpSslT7U/S/5neZ4tuZNqM8266e/UKSs/+ZZHdTHozxTPRoht1l/OsA+/qBBE05PJmOu3hRvwA='),
1187
1188		    this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
1189		    		120, 60, '&lt;&lt;continuous&gt;&gt;\nObject Node', 'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')),
1190		    this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
1191		    		120, 60, '&lt;&lt;discrete&gt;&gt;\nObject Node', 'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')),
1192		    this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
1193		    		140, 120, '{ rate = constant }\n{ rate = distribution }\n&lt;&lt;continuous&gt;&gt;\n&lt;&lt;discrete&gt;&gt;\nObject Node', 'Rate',
1194		    		null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')),
1195		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;',
1196		    		140, 80,
1197		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1198		    		'Object Node</p><hr/>' +
1199		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1200		    		'&lt;&lt;rate&gt;&gt;<br/>' +
1201		    		'rate = constant<br/>' +
1202	    			'rate = distribution</p>',
1203		    		'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')),
1204
1205		    this.addEntry(dt + 'rate', function()
1206		    {
1207		    	var cardCell = new mxCell('act', new mxGeometry(0, 0, 200, 100), s + 'isActStream;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;fontStyle=1;');
1208		    	cardCell.vertex = true;
1209		    	var label1 = new mxCell(
1210		    			'{ rate = constant }\n{ rate = distributuion}\n&lt;&lt;continuous&gt;&gt;\n&lt;&lt;discrete&gt;&gt;',
1211		    			new mxGeometry(200, 50, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingTop=5;');
1212		    	label1.geometry.relative = false;
1213		    	label1.setConnectable(false);
1214		    	label1.vertex = true;
1215		    	cardCell.insert(label1);
1216
1217			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Rate');
1218			}),
1219			this.addDataEntry(dt + 'rate', 300, 60, 'Rate',
1220				'7ZVNj5swEIZ/ja8RgTarHgO73dNKK+XSHh0YgbXGg+xhA/vrOwZDlnxUqOqhhx5QPK/H43dGD0EkWd09W9lUL1iAFsmTSDKLSOOq7jLQWsSRKkTyKOI44kfE3+/sbofdqJEWDK05EI8H3qVuYVT2OSk0o+yo10GuqGZzj1uRpK6SjVfrrvS+N653td4ol6Ehi5yVnipFcGhk7tNOnMSa1Ko0HObsDCwL4WawBN1d94MUrD8D1kC255Rw4NvYXHRSBVXhQGg4qkCVVaiyC5p0Y1zOlc6j4UWYzu1JJVeTEg/cQ2QlAf8MUpSjcSTZPAsPLOxEnGwj3+x1bqEcWXVsqfXzXmbHO1n7oWm6ivgKUqbF1s16uciaojXF2ENuwZv6XakLFKAo4RBC0Ec8PZ2F9BMnwx6vK7Tqg11LjwaPx9Le2mEHG2AkUoutKcDP2fsFU0z7Bo2v6RlRudT7gBChNwedoh/TGV7/9OvNV9+aPIJOZf5WDpUz1GjP1QYHB/Xh7W/juUHf1QJDh63NYfGarCDTgpak3pelbnEXjr6iGnDpA2UXpLLXEigkXcA637qK3y//+f1Dfif8lmzeZPcOqfy/2M+o+mAtq3zfP0dqN5EaUP3b5HJ4/v6N6Z8/j78A'),
1221
1222		    this.addEntry(dt + 'control flow', function()
1223		    {
1224			   	var cardCell = new mxCell('', new mxGeometry(0, 0, 60, 40), 'shape=rect;html=1;rounded=1;whiteSpace=wrap;');
1225			   	cardCell.vertex = true;
1226			   	var cardCell2 = new mxCell('', new mxGeometry(100, 0, 60, 40), 'shape=rect;html=1;rounded=1;whiteSpace=wrap;');
1227			   	cardCell2.vertex = true;
1228			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;endArrow=open;labelBackgroundColor=none;endSize=12;');
1229		    	edge1.geometry.relative = true;
1230			   	edge1.edge = true;
1231		    	cardCell.insertEdge(edge1, true);
1232		    	cardCell2.insertEdge(edge1, false);
1233
1234			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 160, 60, 'Control Flow');
1235			}),
1236			this.addDataEntry(dt + 'control flow', 160, 60, 'Control Flow',
1237				'zVNNb4MwDP01ufNR7d7Srqed+AUpsUi0ECMTCu2vnyEZDGnVusu0QyT72c/4PRKRF814JtnqN1RgRX4SeUGIPkTNWIC1IkuMEvlRZFnCR2SvD6rpXE1aSeD8M4QsEK7S9hCQAHT+ZiPQadlOIUHFIw/aN7zlMeWQsHcKVMwGbTyUraym5oEVMRanA3kYH244Q3G9M2ADnm7cMhjldeh4CSISDabWkbWLmOxCXi/MVS4HUfH36vP/q/6TkESZf+DG7mc3QNVQxhTsBYfTCnz1Zq5xrJHMHZ2XdgKd2hPNOLbgGLHyAvYgq/d6NrNAi8RVh26ap2SnF3+ZXJr79N00W6yd1tkY22FPFWyutpdUg9/87yfsJ7DSm+t2+i/M5XR9xHNt88Y/AA=='),
1238			this.addDataEntry(dt + 'object flow', 260, 60, 'Object Flow',
1239				'3ZVNb8IwDIZ/Te4lZdxHYZw49bBzaKwmIo0rN1Dg189tM1g10JDQkLZDJft1X8d5+hGRZtVhRao2a9TgRLoUaUaIYYiqQwbOCZlYLdKFkDLhS8i3G9VJX01qReDDPQY5GPbK7WBQBqEJRxeFxqi6CwkKbjk3oeIpFxMOCXdeg45ZEwi38G51MKxIVlpjA+S1Kjp7y3tkLa4HFOBwc+ZeigOvACsIdORb2tibq7NhW4kBW5romkZNNUNenp0XABxEBtd5pI/w+H0Cn4YkbvUJRKZ/6Q2JBvlEPi8/8wFdQh5TcBtslxfhK62+xrFBsif0QblO9PqVqNexBs+KUxtwc1Vsyx5vhg6Jqx49XIXMHXJ76hafyDPfbqYR3QZ3VMDorxAUlRBGH8Ydz4DAqWD34+6PEJ79Q8Lpd8LTpxHm9HLC9LXRAfQB'),
1240
1241			this.addEntry(dt + 'object flow', function()
1242		    {
1243			   	var cardCell = new mxCell('', new mxGeometry(0, 0, 60, 40), s + 'objFlowR;strokeWidth=2;whiteSpace=wrap;');
1244			   	cardCell.vertex = true;
1245			   	var cardCell2 = new mxCell('', new mxGeometry(140, 0, 60, 40), s + 'objFlowL;strokeWidth=2;whiteSpace=wrap;');
1246			   	cardCell2.vertex = true;
1247			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;endArrow=open;labelBackgroundColor=none;strokeWidth=2;endSize=12;');
1248		    	edge1.geometry.relative = true;
1249			   	edge1.edge = true;
1250		    	cardCell.insertEdge(edge1, true);
1251		    	cardCell2.insertEdge(edge1, false);
1252
1253			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 200, 60, 'Object Flow');
1254			}),
1255
1256		   	this.createVertexTemplateEntry(s + 'objFlowR;whiteSpace=wrap;',
1257		   			120, 60, '', 'Object Flow', null, null, this.getTagsForStencil(gn, 'objFlowR', dt + 'object flow').join(' ')),
1258		    this.createVertexTemplateEntry(s + 'objFlowL;whiteSpace=wrap;',
1259		    		120, 60, '', 'Object Flow', null, null, this.getTagsForStencil(gn, 'objFlowL', dt + 'object flow').join(' ')),
1260			this.addDataEntry(dt + 'probability', 350, 80, 'Probability',
1261				'7ZXbboMwDIafhnsKZb3uabvZpEp9ggAeiRZiFExPTz+H0FK2Vuu0TdvFLpCc3wdsf0EE8bzcPVhRySfMQQfxMojnFpG8Ve7moHUQhSoP4kUQRSE/QXR/xTtqvWElLBi6JSHyCRuhG/CKF2ra606opaicaSWWaVMH8UxSyY0uRmxupSJYVyJzEVseg7UNWFKZ0I8iBb3CWpFCw+4UibA8C5hqVZjSd0roUrtu2A+7qxO1UjfOA2AJZPccckxIEp+y9+exX0C4VTnJoSRBFZKGmqj9uTgV7rfHRrfAy8uMP14m5AWsuyPoFLfLXjjfa+tjW6JVBzQk2DETbl+OhG97uMfzBYPJp9a2BQwaV9piY3JwfYZ80o7MTGQvRavPUaPtY2sSlo75WIE5amt1cH2PohMpN86AU42NzWBwt25AZ0ELUpthqUskutQVKq7YI58kwxRutgDqot7wO732JqTj90gnMzeUxVSkSity/bceH7SuIFPPTKW99OyaLL58CY6cb0TeIfsMcs7+q3DjJBx8z3fhT7FO/ln/FuvvZsvH/h/qw89/sa8='),
1262			this.addDataEntry(dt + 'probability', 250, 60, 'Probability',
1263				'7VRNb4MwDP01uVYU1vVc6NrTpGlctmMAF7IFjEJaYL9+Dkk/aJlU7bTDkBD284t5PIewICq7reJ18YwZSBY8sSBSiNpGZReBlMz3RMaCNfN9j27mb36ozoeqV3MFlb5ngW8XHLjcg0VWqRZYWbjRvXRwoUsSt56zIGwKXhu07HKje9b0TSlnmHxsJLavRGgLoSGueWpYLXEI41LkFaUpCQNFgHsxKA3dj+IHyCnfApagVU+UVmS6cIxH+4FeASIv3LIjxhub56elZysocG5MOxPcOMOWoZGnMOGJkEIbJUPFkuIaUrETKbf+eWy5vnERshxil1ZY0SO8MPbGI+MONZQrV0hQayypAFW2UgpbwrCGyiKx+DJ9575JO6HfXFsTv1PszRaU7YSUEUpUg6JgN1yES56ADHn6mSvcV9mR4lTaLzHyR7NqcK9SGG2lO8Y3nrcCSZYdxo2nJucavaCg/qcu/uJq2JqrHLRjXc37JOKuLfDwB7eAxvp//pPz76f//V9vB0rP57ClXx7T3w=='),
1264			this.addDataEntry(dt + 'probability', 250, 60, 'Probability',
1265				'3VRNb4MwDP01XCcK23ou7dbTPiQu2zGAC9lCjIJb6H79HJK2o2ulqqdpSAj72THPfoYgntf90oimesICVBA/BPHcIJKz6n4OSgVRKIsgXgRRFPIdRI9nopMhGjbCgKZLDkTuwEaoNTjkJfuAnBh7Zj4u2tJW+WhbicaaxubESVdJgrQRucU67oIxoWSp2c2ZAhgG/CvAEPRnaQ6Q57gErIHMllM6WVDlM+5dK2EFsqz8sR0mWueX+6OHptnwfZ+eQfxrBsE0sfQMZiKTSpJlMkRcUtpALlcyFyRR29B08WtQUJSQelej5kdSUc0UFpNTM7LT4YJq5gMZEmHNAdDFzBjsGMMGtENS+WXrTiLr9pLefFlrv7Md3sTsraRSc1RoBkbxargYVyIDlYj8szS41sUuxbN0nVj6I61aXJscRktzgXxjvQ0oHtlmXPiUcr7QK0pNhyrR3ZHYJEwJ5LOO9N6TuGgFbv/gChA21+s//c/6b09/+1evA7uHP65L//lD/gY='),
1266
1267			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;verticalAlign=top;labelBackgroundColor=none;', 160, 0,
1268					'{ rate = constant }\n{rate = distribution}\n&lt;&lt;continuous&gt;&gt;\n&lt;&lt;discrete&gt;&gt;',
1269					'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')),
1270
1271			this.addEntry(dt + 'in block definition diagram activity association', function()
1272		    {
1273			    var bg = new mxCell('bdd', new mxGeometry(0, 0, 330, 250), s + 'package;labelX=45;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;fontStyle=1;strokeWidth=1;recursiveResize=0;');
1274		    	bg.vertex = true;
1275			    var cardCell2 = new mxCell('&lt;&lt;activity&gt;&gt;\nactivity name', new mxGeometry(30, 40, 120, 60), inh + 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1276		    	cardCell2.vertex = true;
1277		    	bg.insert(cardCell2);
1278			    var cardCell3 = new mxCell('&lt;&lt;activity&gt;&gt;\nactivity name', new mxGeometry(30, 160, 120, 60), inh + 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1279		    	cardCell3.vertex = true;
1280		    	bg.insert(cardCell3);
1281				var assoc1 = new mxCell('action\nname', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=none;html=1;edgeStyle=none;endFill=0;startArrow=diamondThin;startFill=1;startSize=12;align=left;verticalAlign=bottom;labelBackgroundColor=none;');
1282				assoc1.geometry.relative = true;
1283				assoc1.geometry.x=1;
1284				assoc1.edge = true;
1285		    	cardCell2.insertEdge(assoc1, true);
1286		    	cardCell3.insertEdge(assoc1, false);
1287		    	bg.insert(assoc1);
1288			    var cardCell4 = new mxCell('&lt;&lt;activity&gt;&gt;\nactivity name', new mxGeometry(180, 40, 120, 60), inh + 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1289		    	cardCell4.vertex = true;
1290		    	bg.insert(cardCell4);
1291			    var cardCell5 = new mxCell('&lt;&lt;block&gt;&gt;\nblock name', new mxGeometry(180, 160, 120, 60), inh + 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1292		    	cardCell5.vertex = true;
1293		    	bg.insert(cardCell5);
1294				var assoc2 = new mxCell('object\nnode\nname', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=none;html=1;edgeStyle=none;endFill=0;startFill=1;startSize=12;align=left;verticalAlign=bottom;labelBackgroundColor=none;');
1295				assoc2.geometry.relative = true;
1296				assoc2.geometry.x=1;
1297				assoc2.edge = true;
1298		    	cardCell4.insertEdge(assoc2, true);
1299		    	cardCell5.insertEdge(assoc2, false);
1300		    	bg.insert(assoc2);
1301
1302			   	return sb.createVertexTemplateFromCells([bg], 400, 250, 'In Block Definition Diagrams, Activity, Association');
1303			}),
1304
1305			this.createVertexTemplateEntry(s + 'actPart;strokeWidth=3;verticalAlign=top;rotation=-90;whiteSpace=wrap;',
1306					100, 100, 'Partition Name', 'Activity Partition', null, null, this.getTagsForStencil(gn, 'actPart', dt + 'activity partition').join(' ')),
1307			this.createVertexTemplateEntry('shape=rect;html=1;rounded=1;strokeWidth=2;verticalAlign=top;whiteSpace=wrap;align=center;',
1308					140, 50, '(Partition Name)\nAction', 'Activity Partition', null, null, this.getTagsForStencil(gn, '', dt + 'activity partition').join(' ')),
1309
1310		    this.addEntry(dt + 'interruptible activity region', function()
1311		    {
1312		    	var cardCell = new mxCell('region name', new mxGeometry(0, 0, 160, 60), 'shape=rect;html=1;rounded=1;verticalAlign=top;dashed=1;strokeWidth=2;whiteSpace=wrap;align=center;');
1313		    	cardCell.vertex = true;
1314		    	var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'shape=mxgraph.lean_mapping.electronic_info_flow_edge;html=1;edgeStyle=none;align=center;verticalAlign=bottom;exitX=1;exitY=0.5;fillColor=#ffffff;');
1315		    	assoc1.geometry.setTerminalPoint(new mxPoint(250, 30), false);
1316		    	assoc1.geometry.relative = true;
1317		    	assoc1.geometry.x = 1;
1318		    	assoc1.edge = true;
1319		    	cardCell.insertEdge(assoc1, true);
1320
1321			   	return sb.createVertexTemplateFromCells([cardCell, assoc1], 250, 60, 'Interruptible Activity Region');
1322			}),
1323
1324		    this.createVertexTemplateEntry('shape=rect;html=1;rounded=1;dashed=1;strokeWidth=2;verticalAlign=top;whiteSpace=wrap;align=center;',
1325		    		160, 60, '&lt;&lt;structured&gt;&gt; node name', 'Structured Activity Node', null, null, this.getTagsForStencil(gn, '', dt + 'structured activity node').join(' '))
1326		];
1327
1328		this.addPalette('sysmlActivities', 'SysML / Activities', expand || false, mxUtils.bind(this, function(content)
1329		{
1330			for (var i = 0; i < fns.length; i++)
1331			{
1332				content.appendChild(fns[i](content));
1333			}
1334		}));
1335	};
1336
1337	Sidebar.prototype.addSysMLInteractionsPalette = function(expand)
1338	{
1339		var s = 'html=1;shape=mxgraph.sysml.';
1340		var inh = 'strokeColor=inherit;fillColor=inherit;gradientColor=inherit;';
1341		var gn = '';
1342		var dt = 'sysml interaction ';
1343		var sb = this;
1344
1345		var fns = [
1346		    this.createVertexTemplateEntry(s + 'package;overflow=fill;labelX=95;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;', 160, 80,
1347		    		'<p style="margin:0px;margin-top:4px;margin-left:5px;text-align:left;"><b>sd</b>  Interaction1</p>',
1348		    		'Sequence Diagram', null, null, this.getTagsForStencil(gn, 'package', dt + 'sequence diagram').join(' ')),
1349
1350		    this.addEntry(dt + 'lifeline', function()
1351		    {
1352		    	var cardCell = new mxCell('b1:Block1', new mxGeometry(0, 0, 160, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1353		    	cardCell.vertex = true;
1354		    	var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;align=center;verticalAlign=bottom;exitX=0.5;exitY=1;');
1355		    	assoc1.geometry.setTerminalPoint(new mxPoint(80, 150), false);
1356		    	assoc1.geometry.relative = true;
1357		    	assoc1.geometry.x = 1;
1358		    	assoc1.edge = true;
1359		    	cardCell.insertEdge(assoc1, true);
1360
1361			   	return sb.createVertexTemplateFromCells([cardCell, assoc1], 160, 150, 'Lifeline');
1362			}),
1363			this.addDataEntry(dt + 'execution specification', 160, 220, 'Execution Specification',
1364				'xZTbboMwDIafJveU7NDbQrdeTZrUJ8iIR6IFgkJa6NvPJS40W6sxddKQkOLTj/1hhfG86jdONOrFSjCMPzGeO2t9OFV9DsawNNGS8TVL0wRflj5fiS6GaNIIB7WfU5CGgr0wOwietwXjq8zY4oPEWn8wFGuVaI5HBwWqZ8pX2PAaC7JOaQ/bRhTHcIfjoE8YXdZoFtgLOHTQt8B56K/2O7io2Q3YCrw7YEqnpVeU8RBmShToUlHZySfaYJdj6TQ9HgjAZRj8G4xfEHjXxuTWWDckchieG4emgkea7UDJCdlnTNILSJZ/gOTuZyQgS9iSWdsaYixStAokGVDLlXO2mzKD2lEiYtPanSsgWlEvXAk++lEzCDowwut9rH4LkPv/BzJ/+njhZrMgoVerUX9UWcZbOK7cSSH8ICr6AnTs6RJjNKcLL6Sf34ef'),
1365			this.addDataEntry(dt + 'execution specification', 160, 220, 'Execution Specification',
1366				'zZTNbsIwDMefJvfSbBNXKBsnpEl9giyxmmhpU6WBlrefIaaQUaRKm7QdKsVf/9q/WGG8qIetF63eOQWW8VfGC+9ciKd6KMBalmdGMb5heZ7hx/K3B9HFOZq1wkMT5hTkseAg7B6i52PB+GptnfwksS4cLcU6LdrT0YNE9bUONTa8wYJ1r02AshXyFO5xHPQJa6oGTYm9gEcH/Qt8gOFhv2cXNbsFV0PwR0zpjQqaMl7iTJkGU2kqu/hEF+1qLL1OjwcCMA2D38GAAWTZgvxPJKiALjY7UnJG9i2ofALU8hdAPd2BugMEqoKSzMY1kEJSotOgyIBGrbx3/TUzqp0kEjid23sJyeIG4SsIyfXNQOjBimAOqfpPgDz/PZD506cbN5sFCb07g/qjyjJdw3EtLwrxgqjoG9CxpynGaF6fwZh++0p+AQ=='),
1367
1368		    this.addEntry(dt + 'use', function()
1369		    {
1370		    	var cardCell = new mxCell('Interaction3', new mxGeometry(0, 0, 160, 60), s + 'package;labelX=40;whiteSpace=wrap;align=center;');
1371		    	cardCell.vertex = true;
1372		    	var label1 = new mxCell('ref', new mxGeometry(0, 0, 0, 0), 'html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;spacingLeft=5;spacingTop=-2;fontStyle=1;');
1373		    	label1.geometry.relative = false;
1374		    	label1.setConnectable(false);
1375		    	label1.vertex = true;
1376		    	cardCell.insert(label1);
1377
1378			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Interaction Use');
1379			}),
1380
1381			this.addEntry(dt + 'combined fragment', function()
1382		    {
1383		    	var bg = new mxCell('<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>sd</b>   Interaction1</p>', new mxGeometry(0, 0, 350, 320), s + 'package;labelX=100;html=1;overflow=fill;strokeWidth=1;recursiveResize=0;');
1384		    	bg.vertex = true;
1385			    var cardCell2 = new mxCell('b1: Block1', new mxGeometry(30, 40, 80, 30), inh + 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1386		    	cardCell2.vertex = true;
1387		    	bg.insert(cardCell2);
1388			    var cardCell3 = new mxCell('b2: Block2', new mxGeometry(140, 40, 80, 30), inh + 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1389		    	cardCell3.vertex = true;
1390		    	bg.insert(cardCell3);
1391			    var cardCell4 = new mxCell('b3: Block3', new mxGeometry(250, 40, 80, 30), inh + 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1392		    	cardCell4.vertex = true;
1393		    	bg.insert(cardCell4);
1394			    var cardCell5 = new mxCell('alt', new mxGeometry(20, 90, 200, 160), inh + s + 'package;labelX=35;fontStyle=1;align=left;verticalAlign=top;spacingLeft=5;spacingTop=-3;');
1395		    	cardCell5.vertex = true;
1396		    	bg.insert(cardCell5);
1397				var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
1398		    	assoc1.geometry.setTerminalPoint(new mxPoint(70, 300), false);
1399				assoc1.geometry.relative = true;
1400				assoc1.edge = true;
1401		    	cardCell2.insertEdge(assoc1, true);
1402		    	bg.insert(assoc1);
1403				var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
1404				assoc2.geometry.setTerminalPoint(new mxPoint(180, 300), false);
1405				assoc2.geometry.relative = true;
1406				assoc2.edge = true;
1407				bg.insert(assoc2);
1408		    	cardCell3.insertEdge(assoc2, true);
1409				var assoc3 = new mxCell('', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
1410				assoc3.geometry.setTerminalPoint(new mxPoint(290, 300), false);
1411				assoc3.geometry.relative = true;
1412				assoc3.edge = true;
1413				bg.insert(assoc3);
1414		    	cardCell4.insertEdge(assoc3, true);
1415				var assoc4 = new mxCell('', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
1416				assoc4.geometry.setTerminalPoint(new mxPoint(20, 170), false);
1417				assoc4.geometry.setTerminalPoint(new mxPoint(220, 170), true);
1418				assoc4.geometry.relative = true;
1419				assoc4.edge = true;
1420				bg.insert(assoc4);
1421				var assoc5 = new mxCell('[if x < 10]', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=open;html=1;edgeStyle=none;verticalAlign=bottom;labelBackgroundColor=none;endSize=12;');
1422				assoc5.geometry.setTerminalPoint(new mxPoint(70, 150), true);
1423				assoc5.geometry.setTerminalPoint(new mxPoint(180, 150), false);
1424				assoc5.geometry.relative = true;
1425				assoc5.geometry.x = -1;
1426				assoc5.edge = true;
1427				bg.insert(assoc5);
1428		    	var label1 = new mxCell('msg1', new mxGeometry(1, 0, 0, 0), 'align=right;html=1;verticalAlign=bottom;labelBackgroundColor=none;');
1429		    	label1.geometry.relative = true;
1430		    	label1.setConnectable(false);
1431		    	label1.vertex = true;
1432		    	assoc5.insert(label1);
1433		    	var assoc6 = new mxCell('[else]', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=open;html=1;edgeStyle=none;verticalAlign=bottom;labelBackgroundColor=none;align=right;endSize=12;');
1434				assoc6.geometry.setTerminalPoint(new mxPoint(70, 230), true);
1435				assoc6.geometry.setTerminalPoint(new mxPoint(180, 230), false);
1436				assoc6.geometry.relative = true;
1437				assoc6.geometry.x = -1;
1438				assoc6.edge = true;
1439				bg.insert(assoc6);
1440		    	var label2 = new mxCell('msg2', new mxGeometry(1, 0, 0, 0), 'align=right;html=1;verticalAlign=bottom;labelBackgroundColor=none;');
1441		    	label2.geometry.relative = true;
1442		    	label2.setConnectable(false);
1443		    	label2.vertex = true;
1444		    	assoc6.insert(label2);
1445		    	bg.insert(assoc6);
1446				var assoc7 = new mxCell('msg3', new mxGeometry(0, 0, 0, 0), inh + 'endArrow=open;html=1;edgeStyle=none;verticalAlign=bottom;labelBackgroundColor=none;endSize=12;');
1447				assoc7.geometry.setTerminalPoint(new mxPoint(70, 290), true);
1448				assoc7.geometry.setTerminalPoint(new mxPoint(290, 290), false);
1449		    	assoc7.geometry.relative = true;
1450				assoc7.edge = true;
1451				bg.insert(assoc7);
1452
1453			   	return sb.createVertexTemplateFromCells([bg], 350, 320, 'Combined Fragment');
1454			}),
1455
1456			this.addDataEntry(dt + 'state invariant configuration', 120, 220, 'State Invariant / Continuations',
1457				'xVTLboMwEPwaXyMCpfeEtDlFqpRTjxbeYksGI9sJ8Pdd4gVCHhJSpfSAvM9hZ7wyS7Ky3Vtey4MRoFnywZLMGuODVbYZaM3iSAmW7FgcR/ix+PNJdn3JRjW3UPklDXFoOHN9ghBhyeY7BJ3vNAWd5HVvWsgRdit9iZPu1mg2Unk41jzv0w3ywBjXqqjQzXEIsBign4D10D4d9BKiKfdgSvC2w5JGCS+pgshEElQhqS2lGHfBL8bWiTYaxPyxCsmdCnV/IMP0Toor7oMqZVv0F7hynSv1Kjc9o+0PHkdqe4lQHWUjEuQVwr3dr8+tXiAKGHSoTAXz9RHcSRDkQCU21ppmqgxoPcRMDWdONofZBntuC/Cz61ygmQXNvTrP0f8iSPr/gixnP1+xxVoQ0JdRiD+ivNM60RoOD8+IEC6Imm4EHWd6pDG603sYyq+fy18='),
1458			this.addDataEntry(dt + 'coregion', 250, 220, 'Coregion',
1459				'1ZZbb4IwFIB/TV8NUJjuUXHzackSH/bcwRk0K5S09bZfv0ILCmjmJmpmYtJz5ZzvlFKEw2y7EKRIX3gMDOEnhEPBuTKrbBsCY8hzaIzwHHmeo//Iez5hdSurUxABuTonwDMBa8JWYDQSBbMVCuYIT2fGKNWO1caUFOVSQKTTz1KV6Yrnrl5uUqpgWZCoNG90P1pHGE1yLUa6GBBaYR8GQsH2ZMGVyla7AJ6BEjvtsqGxSq2HY5pyUqBJasMCqyPSyEkTum9fLyyB4zRwj0aPwEHLNYxsm5TzG8mdzNgo4gISyvPSQQn+CW+2cHwhABvg2z53HRYHfLwjeMYD4PF/xlMz0YG0kNDeIx+UsZAzLipf7FS/gahM2lTcSY+K34fiX84k+D9M/FsxefiZCcQJLK2Y87wDJSYyhdgKkMdTIfhm72mylSlaZCRfiQha55oiIoF2Y2fwE8CIout29kuAjO8PxO8DCe4HZHJ/IFfo3oa+cqozNq9h0D6wm9O5zmBGYoM6CJsqzqL62KOa4WG5Sl2sqnW8gPIrV55RNCJsar/271wpntXOS/pVPsn1frVNrz+V7ljc643FdfpzGXi/X30uN3tbenPp3uv+PBct7u/Vxv3w2v0N'),
1460			this.addDataEntry(dt + 'creation destruction event', 250, 220, 'Creation/Destruction Event',
1461				'1Zdtb4MgEIB/jd8VtNs+tt3LlzVZ0l9A9aZkKAZZbffrh4J2SJfZ9W0zacLdcVfuOTzEw/N88yRImS14AszDDx6eC86lHuWbOTDmIZ8mHr73EPLVz0OP31iD1uqXREAhxzgg7bAm7B20ZhV4eDpjPH4zwSq5ZcZWZaRshgJiFX2WyVwt+F45zOqMSliWJG7MtUpH6QijaaHEWK0FhFKY/wIhYfPteluVWewT8Byk2KopNU1kZmb4Oic/A5pmxg0bHam0nPauu+zVwADYDwO7MFAHA/0lGJ1DZJLeajk04iVYhQ6rnwC9UsbmnHHRWjG0jw3uFEzubCY3LhO0B0nP6Rgm0XgmypGWFbhY/PY5OZbw1qISYYdK6EIJj0cy+TdIgk4+O5Obn5lAksLSiAUvGigJqTJITPpQJFMheL0zO2yaEBaZir+LGKy2L4lIQVqbdwQ/AYxIurajHwPk9vpAIhfI5HpA7q4P5AzZG9cXTlXE/jUcnGF9d+4i6JIYpwHCfhWjqAa+gzUWQCSMgfuFJy9BneSzpvnQmLCpOdlXXEqe66lL+tH4BugUGxFfqhTDWgRnrEVw2BYHtuL1w06xpx7tFCV2dTm2EhO3EuHVKhGdrxLuFeDA96HaVovnjYW7SczuR4exvxxof9B+ht+BvwatxN01Tk//esv7BA=='),
1462			this.addDataEntry(dt + 'duration constraint', 250, 250, 'Duration Constraint',
1463				'zZbNjpswEMefxpdKQXwsjXoMod1DVW2ltA/g4hFYMhjZzibp03ccuwnBREFbVO0himfsGWZ+/5GBZNv2+Kxo33yTDATJPpNsq6Q0btUetyAESWPOSFaSNI3xR9Ivd3aT827cUwWdmROQuoBXKvbgPCTb/NSgnF+bk/B+3dDeLhVUmLloTIvFlgkuDw03sOtpZbcP2Ar6qOB1h2aFdWCyrPDPAWXgeLfWs8sX+gyyBaNOeOTAmWn8idj1EzfA68aH5d5HtbPrS+i1c1z45qdBZCGIdcGiKPvAyLoMaAza/wumPdZWxkifdCsixlvoNJcIoVDSUHNelqtPMTosBl5RsfGUjLTMNCLkXf3DGuUq/xdiPmDl1Y9PI3qPiD4tQPQpJDqmCKyGnTc72eFfwahugHm00LGNUvJw3R5wd9lsihs6Wu5VBTfTPQOYAoESvd6mmureh36XHDNeQOe3nIOJNFTVYHzQCOGlillU84DqFu8N9Nh9tldu0GaAHpAcYJY9dBMD+ksaI1t3dMd/2zRJel+D/w58PeLthiDgHaR5lGc53T6GulHFXva2GLxp4ihKsqmLZjHl/O1SeLvM36+ayUwZHsoZJLozF2/Qcx3o+fJ1cfEm3gvvWLY0Xkq28evnzbKhef2WcseHn1p/AA=='),
1464			this.addDataEntry(dt + 'duration constraint', 250, 200, 'Time Constraint',
1465				'3ZbbUoMwEIafJpcyHFq5LqC9cJw6U18gJStkDIQJoQef3kBiQZFprVSrF0yzm/13tv9HMiAvzLZzgYv0nhNgyLtBXig4l3qVbUNgDLk2JciLkOva6kHu7cCu0+zaBRaQy2MErhasMatAZ3SilDtmEkASWJow57n6CVKZqUkjRy0JLlMgJoCczITgm7ZSd6tbDA7YpMx0c+AZSLFTJQIYlnT9XodLHSb7ur30gVPV0bW35o/Z7xUlr0QMpqhryIBu9xZ+6COxSED2+qhFZ/o21dj9ufXev7XeO9V778fMn/TMD7Egi6qeBvmBbVmOh/zoi0Q6EHgBucqsQUgaYzZjNFFxtOJS8kxtlAWOaZ4EJo6mWr6kL3Vrx72Es2MwOJPjMBzk2Ws08GKcwHPa47m4Gx2e5EVL7rEOLhqbPxY252zYrvt3oB9Iy1J9g++dP7OJDTpBk1SZHzC8Ahbg+DkRvMpJyBkXY1yZxroro/htkkPC8cj5PXKy8XEzGjIGT3+I2KGr7ujDNz3XnanC9rtSl3c/O18B'),
1466			this.addDataEntry(dt + 'message', 250, 250, 'Message',
1467				'zZbfboIwFMafhmS7gzJ1t4LTqyVLeIIKJ9CsUFKqyJ5+B1tUQDNHCHpB6L/zcc7vowXL9dPDRtI8+RQRcMv9sFxfCqF0Kz34wLlFbBZZ7soixMbLIusbs85x1s6phEzdE0B0wJ7yHeiRrWO5S4+L8NuIFariZq5IaF43JYSo7iUqxYRXGOCVCVMQ5DSsp0ssB8coZ3GG3RBzAYkD5lkgFRxu5nscMsluQKSgZIVLShapxKywdU12AixOTJhrxmih+/Ep9Fw9NgyA6zDcPgzSwCDPBKMJmJmip4Dz1oPTIwJRDIHpZiLDmxfRIoHIcLlABFm0lFKU55VarZZo0SjETobQelnvACSBU8X2balr1ZvQL8FQ8QS24VqZ5846/BSVMSgT1EF4yuIuqrPHU3WnokrsybDOe1hpUWVhgHuQ8nsIX4cqcsA97NWbloWUL82e3gqlRKqXBuynlnHIbfiTv7+LDmftfo/zn4Z1dcbza9Hzq7bLp5y/IC2avg73bFuf3v8wDbtrxhuhZ7HQmY/kYU9oPBPfB51lo+y0tmmt4/FhDvaOO3ughd2vUVdnsIPYPf9p6uWXP6K/'),
1468
1469			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=sysMLLost;endSize=12;verticalAlign=bottom;',
1470					160, 0, 'lost', 'Lost Message', null, this.getTagsForStencil(gn, '', dt + 'lost message').join(' ')),
1471			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;verticalAlign=bottom;startArrow=sysMLFound;startSize=12;',
1472					160, 0, 'found', 'Found Message', null, this.getTagsForStencil(gn, '', dt + 'found message').join(' ')),
1473			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;dashed=1;strokeWidth=2;',
1474					160, 0, '', 'General Ordering', null, this.getTagsForStencil(gn, '', dt + 'general ordering').join(' '))
1475		];
1476
1477		this.addPalette('sysmlInteractions', 'SysML / Interactions', expand || false, mxUtils.bind(this, function(content)
1478		{
1479			for (var i = 0; i < fns.length; i++)
1480			{
1481				content.appendChild(fns[i](content));
1482			}
1483		}));
1484	};
1485
1486	Sidebar.prototype.addSysMLStateMachinesPalette = function(expand)
1487	{
1488		var s = 'shape=mxgraph.sysml.';
1489		var inh = 'strokeColor=inherit;fillColor=inherit;gradientColor=inherit;';
1490		var gn = '';
1491		var dt = 'sysml state machine ';
1492		var sb = this;
1493
1494		var fns = [
1495			this.addDataEntry(dt + 'choice pseudo state', 150, 100, 'Choice Pseudo State',
1496				'zZXbcoIwEIafJvcctPeC1ulFZ5zxCYLZQqaBZUJQ9OmbkKCgMqVjnfaCmd1/k+zyfxxIGOfNWtIye0cGgoQrEsYSUdkob2IQggQeZyRckiDw9EWC15Gq31a9kkoo1JQNgd2wp6IGq1ihUkfhhCqjpQllhnlSVySMMpXrQZe+DgVNQGyw4opjYRbxNNONIyp4anIBHybdg1R8R8XCyTlnTJ9ve+saNKPzt5Ibfg2Yg5JHveTo5re35x04U5mVZk7KwM7S12hl8/R80MUbHTh77lsVfm8VsBS2LgWR4GF1EfqutTUdZyj5CQtFRc+yzsJrzxJUCnNdkFgXDMxUXkcgorvPtNVjFCh1qcDCNIWCLaRsm2EJhVW2/GQm9LWvkb0HM/iAgKIyBTV4RiZAkSCo4vvhUfc8d1s3yPWJgdcMYXY7KqzlDtyiK1DnrpPYzW7ZzaM3RoIXYaw2ZnhkvnwYaMfsDs5bEj/kOIGaNeyPqLk30veuKNpH6TcozkcppsbhpyF0H7HHCI6+zv8YrT9/FludXn5ydnn/H/gF'),
1497
1498			this.addEntry(dt + 'composite state', function()
1499		    {
1500			   	var bg = new mxCell('CompositeState1', new mxGeometry(0, 0, 220, 190), s + 'compState;align=left;verticalAlign=top;spacingTop=-3;spacingLeft=18;strokeWidth=1;recursiveResize=0;');
1501			   	bg.vertex = true;
1502			   	var cardCell2 = new mxCell('', new mxGeometry(20, 50, 20, 20), 'shape=ellipse;html=1;fillColor=#000000;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;');
1503			   	cardCell2.vertex = true;
1504			   	bg.insert(cardCell2);
1505			   	var cardCell3 = new mxCell('State1', new mxGeometry(80, 60, 100, 40), inh + 'shape=rect;html=1;rounded=1;whiteSpace=wrap;align=center;');
1506			   	cardCell3.vertex = true;
1507			   	bg.insert(cardCell3);
1508			   	var cardCell4 = new mxCell('State2', new mxGeometry(80, 130, 100, 40), inh + 'shape=rect;html=1;rounded=1;whiteSpace=wrap;align=center;');
1509			   	cardCell4.vertex = true;
1510			   	bg.insert(cardCell4);
1511			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), inh + 'edgeStyle=none;html=1;endArrow=open;endSize=12;');
1512		    	edge1.geometry.relative = true;
1513			   	edge1.edge = true;
1514		    	cardCell2.insertEdge(edge1, true);
1515		    	cardCell3.insertEdge(edge1, false);
1516		    	bg.insert(edge1);
1517			   	var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), inh + 'edgeStyle=none;html=1;endArrow=open;endSize=12;');
1518		    	edge2.geometry.relative = true;
1519			   	edge2.edge = true;
1520		    	cardCell3.insertEdge(edge2, true);
1521		    	cardCell4.insertEdge(edge2, false);
1522		    	bg.insert(edge2);
1523
1524			   	return sb.createVertexTemplateFromCells([bg], 220, 190, 'Composite State');
1525			}),
1526
1527		    this.createVertexTemplateEntry(s + 'compState;html=1;align=left;verticalAlign=top;spacingTop=-3;spacingLeft=18;',
1528		    		200, 160, 'CompositeState1', 'Composite State', null, null, this.getTagsForStencil(gn, 'compState', dt + 'composite state').join(' ')),
1529		    this.createVertexTemplateEntry('ellipse;html=1;labelPosition=left;verticalLabelPosition=bottom;spacingBottom=10;align=right;verticalAlign=bottom;resizable=0;',
1530		    		20, 20, 'again', 'Entry Point', null, null, this.getTagsForStencil(gn, 'compState', dt + 'entry point').join(' ')),
1531
1532		    this.addEntry(dt + 'exit point', function()
1533		    {
1534			    var cardCell = new mxCell('aborted', new mxGeometry(0, 10, 20, 20), s + 'flowFinal;labelPosition=right;verticalLabelPosition=top;spacingTop=5;spacingLeft=3;align=left;verticalAlign=top;resizable=0;');
1535		    	cardCell.vertex = true;
1536
1537			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Exit Point');
1538			}),
1539
1540		    this.createVertexTemplateEntry(s + 'actFinal;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;',
1541		    		40, 40, '', 'Final State', null, null, this.getTagsForStencil(gn, 'actFinal', dt + 'final state').join(' ')),
1542		    this.createVertexTemplateEntry('shape=ellipse;html=1;fontSize=18;align=center;',
1543		    		40, 40, 'H*', 'History, Deep Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'history deep pseudo state').join(' ')),
1544		    this.createVertexTemplateEntry('shape=ellipse;html=1;fontSize=18;align=center;',
1545		    		40, 40, 'H', 'History, Shallow Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'history shallow pseudo state').join(' ')),
1546		    this.createVertexTemplateEntry('shape=ellipse;html=1;fillColor=#000000;fontSize=18;fontColor=#ffffff;',
1547		    		40, 40, '', 'Initial Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'initial pseudo state').join(' ')),
1548		    this.createVertexTemplateEntry('shape=ellipse;html=1;fillColor=#000000;fontSize=18;fontColor=#ffffff;',
1549		    		40, 40, '', 'Junction Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'junction pseudo state').join(' ')),
1550		    this.createVertexTemplateEntry(s + 'accEvent;flipH=1;whiteSpace=wrap;align=center;',
1551		    		140, 40, 'Req(Id)', 'Receive Signal Action', null, null, this.getTagsForStencil(gn, 'accEvent', dt + 'receive signal action').join(' ')),
1552		    this.createVertexTemplateEntry(s + 'sendSigAct;whiteSpace=wrap;align=center;',
1553		    		140, 40, 'TurnOn', 'Send Signal Action', null, null, this.getTagsForStencil(gn, 'sendSigAct', dt + 'send signal action').join(' ')),
1554		    this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
1555		    		140, 40, 'MinorReq := Id;', 'Action', null, null, this.getTagsForStencil(gn, '', dt + 'action').join(' ')),
1556		    this.createVertexTemplateEntry(s + 'region;align=left;verticalAlign=top;spacingTop=-3;spacingLeft=25;',
1557		    		200, 160, 'S', 'Region', null, null, this.getTagsForStencil(gn, '', dt + 'region').join(' ')),
1558		    this.createVertexTemplateEntry('shape=rect;rounded=1;html=1;whiteSpace=wrap;align=center;',
1559		    		100, 40, 'State1', 'Simple State', null, null, this.getTagsForStencil(gn, '', dt + 'simple state').join(' ')),
1560
1561		    this.createVertexTemplateEntry(s + 'simpleState;html=1;overflow=fill;whiteSpace=wrap;align=center;', 200, 100,
1562		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1563	    			'State2<hr/></p>' +
1564					'<p style="margin:0px;margin-left:8px;text-align:left;">entry / entryActivity<br/>do / doActivity<br/>exit / exitActivity</p>',
1565		    		'Simple State', null, null, this.getTagsForStencil(gn, 'simpleState', dt + 'simple state').join(' ')),
1566
1567		    this.createVertexTemplateEntry('shape=rect;rounded=1;html=1;whiteSpace=wrap;align=center;',
1568		    		120, 40, 'State1, State2', 'State List', null, null, this.getTagsForStencil(gn, '', dt + 'state list').join(' ')),
1569
1570		    this.addEntry(dt + 'state machine', function()
1571		    {
1572		    	var cardCell = new mxCell('ReadAmountSM', new mxGeometry(0, 0, 160, 120), s + 'stateMachine;verticalAlign=top;whiteSpace=wrap;align=center;');
1573		    	cardCell.vertex = true;
1574		    	var label1 = new mxCell('aborted', new mxGeometry(160, 60, 0, 0), 'resizable=0;html=1;verticalAlign=top;align=left;labelBackgroundColor=none;spacingLeft=5;spacingTop=-2;');
1575		    	label1.geometry.relative = false;
1576		    	label1.setConnectable(false);
1577		    	label1.vertex = true;
1578		    	cardCell.insert(label1);
1579
1580			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'State Machine');
1581			}),
1582
1583		    this.createVertexTemplateEntry(s + 'x;',
1584		    		40, 40, '', 'Terminate Node', null, null, this.getTagsForStencil(gn, 'x', dt + 'terminate node').join(' ')),
1585
1586		    this.addEntry(dt + 'submachine state', function()
1587		    {
1588		    	var cardCell = new mxCell('ReadAmount :\nReadAmountSM', new mxGeometry(0, 0, 160, 120), s + 'submState;whiteSpace=wrap;align=center;');
1589		    	cardCell.vertex = true;
1590		    	var label1 = new mxCell('aborted', new mxGeometry(160, 60, 0, 0), 'resizable=0;html=1;verticalAlign=bottom;align=left;labelBackgroundColor=none;spacingLeft=5;spacingBottom=2;');
1591		    	label1.geometry.relative = false;
1592		    	label1.setConnectable(false);
1593		    	label1.vertex = true;
1594		    	cardCell.insert(label1);
1595
1596			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Submachine State');
1597			}),
1598
1599			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;strokeWidth=3;verticalAlign=bottom;',
1600					160, 0, 'trigger[guard]/activity', 'Transition', null, this.getTagsForStencil(gn, '', dt + 'transition').join(' '))
1601		];
1602
1603		this.addPalette('sysmlState Machines', 'SysML / State Machines', expand || false, mxUtils.bind(this, function(content)
1604		{
1605			for (var i = 0; i < fns.length; i++)
1606			{
1607				content.appendChild(fns[i](content));
1608			}
1609		}));
1610	};
1611
1612	Sidebar.prototype.addSysMLUseCasesPalette = function(expand)
1613	{
1614		var s = 'html=1;shape=mxgraph.sysml.';
1615		var gn = '';
1616		var dt = 'sysml use case ';
1617		var sb = this;
1618
1619		var fns = [
1620			this.createVertexTemplateEntry('shape=ellipse;html=1;strokeWidth=3;fontStyle=1;whiteSpace=wrap;align=center;perimeter=ellipsePerimeter;',
1621					120, 60, 'UseCaseName', 'Use Case', null, null, this.getTagsForStencil(gn, '', dt + 'use case').join(' ')),
1622
1623			this.addEntry(dt + '', function()
1624			{
1625		    	var cardCell = new mxCell('\nextension points\np1, p2', new mxGeometry(0, 0, 160, 80), s + 'useCaseExtPt;whiteSpace=wrap;align=center;');
1626		    	cardCell.vertex = true;
1627		    	var label1 = new mxCell('UseCaseName', new mxGeometry(80, 17, 0, 0), 'resizable=0;html=1;verticalAlign=middle;align=center;labelBackgroundColor=none;fontStyle=1;');
1628		    	label1.geometry.relative = false;
1629		    	label1.setConnectable(false);
1630		    	label1.vertex = true;
1631		    	cardCell.insert(label1);
1632
1633			   	return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Use Case');
1634			}),
1635
1636		    this.createVertexTemplateEntry('shape=umlActor;html=1;verticalLabelPosition=bottom;verticalAlign=top;align=center;',
1637		    		30, 60, 'ActorName', 'Actor', null, null, this.getTagsForStencil(gn, 'umlActor', dt + '').join(' ')),
1638		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;html=1;whiteSpace=wrap;align=center;', 80, 40,
1639		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1640		    		'&lt;&lt;actor&gt;&gt;<br/>' +
1641	    			'<b>ActorName</b></p>',
1642		    		'Actor', null, null, this.getTagsForStencil(gn, '', dt + '').join(' ')),
1643		    this.createVertexTemplateEntry('shape=rect;html=1;verticalAlign=top;fontStyle=1;whiteSpace=wrap;align=center;',
1644		    		120, 60, 'SubjectName', 'Subject', null, null, this.getTagsForStencil(gn, '', dt + 'subject').join(' ')),
1645			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;',
1646					160, 0, '', 'Communication Path', null, this.getTagsForStencil(gn, '', dt + 'communication path').join(' ')),
1647			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;',
1648					160, 0, '&lt;&lt;include&gt;&gt;', 'Include', null, this.getTagsForStencil(gn, '', dt + 'include').join(' ')),
1649			this.createEdgeTemplateEntry('edgeStyle=none;html=1;startArrow=open;endArrow=none;startSize=12;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;',
1650					160, 0, '&lt;&lt;extend&gt;&gt;', 'Extend', null, this.getTagsForStencil(gn, '', dt + 'extend').join(' ')),
1651			this.addDataEntry(dt + 'extend condition', 250, 80, 'Extend with Condition',
1652				'tVTLjtswDPwaXQvH2kevsbfdSwsUyKU9KjFrC5VFQ1Y2Tr++pMRknWyyj0MPgcUhh6JmFCld99NjMEP3HRtwSn9Rug6IMa/6qQbnVFnYRukHVZYF/VT59Up2kbLFYAL4+B5CmQlPxm0hIzX6xkaLXuklZdR9tUZ0YDwFMA0BxpGT91R7p0q9KJSuYIrgE0x7o+WtmTvQODV/ZZcx7p3sMnZm4KXHSJ9qtH85WtzyejAb69tv8JtPwIhxtqVxHlyCql1nI6yoiik7ko4wOQaECNNVKRIkOjwC9hDDnkqEIEoVO9vETiAtWAe27aTLjWBmzHF77PSsMy1E6suy6xeyk5qm55O4mI4zj5K8zRFrTyokOtP3IFnIc1dd7B0LTEsWyW6MW0rJGmPEnhIBt74BnpA9dWYNrjKbP23Ca3QYkmGeDaN5liHgjhAcwGdkJS6SyFVjxi71WhzHg6aFj3oTwJlon055l5QX6o90+8pinys+n3kVTWghStH8b3HgHS7PnRCv9BlxGzbwok+y/Tj9u27CzYWbcOYl67aSUOSf2TlzQpIf8fHEJphs/Mm0T7cS/XrdwCzDyUvyHz09eFO87s0Vj9/2hsLnhzeXz9/lfw=='),
1653
1654			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=block;endFill=0;endSize=12;verticalAlign=bottom;',
1655					160, 0, '', 'Generalization', null, this.getTagsForStencil(gn, '', dt + 'generalization').join(' '))
1656		];
1657
1658		this.addPalette('sysmlUse Cases', 'SysML / UseCases', expand || false, mxUtils.bind(this, function(content)
1659		{
1660			for (var i = 0; i < fns.length; i++)
1661			{
1662				content.appendChild(fns[i](content));
1663			}
1664		}));
1665	};
1666
1667	Sidebar.prototype.addSysMLAllocationsPalette = function(expand)
1668	{
1669		var s = 'html=1;shape=mxgraph.sysml.';
1670		var inh = 'strokeColor=inherit;fillColor=inherit;gradientColor=inherit;';
1671		var gn = '';
1672		var dt = 'sysml allocation ';
1673		var sb = this;
1674
1675		var fns = [
1676		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;html=1;whiteSpace=wrap;align=center;', 120, 60,
1677		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1678		    		'&lt;&lt;allocated&gt;&gt;<br/>' +
1679	    			'<b>Named<br/>Element</b></p>',
1680		    		'Allocated Stereotype', null, null, this.getTagsForStencil(gn, '', dt + 'allocated stereotype').join(' ')),
1681
1682		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;strokeWidth=2;whiteSpace=wrap;align=center;', 200, 120,
1683		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1684	    			'<b>BlockName</b></p><hr/>' +
1685					'<p style="font-size:10px;margin:0px;text-align:center;"><i>allocatedFrom</i></p>' +
1686					'<p style="margin:0px;margin-left:8px;text-align:left;">&lt;&lt;elementType&gt;&gt; ElementName</p><hr/>' +
1687					'<p style="font-size:10px;margin:0px;text-align:center;"><i>allocatedTo</i></p>' +
1688					'<p style="margin:0px;margin-left:8px;text-align:left;">&lt;&lt;elementType&gt;&gt; ElementName</p>',
1689		    		'Allocation derived properties (Block)', null, null, this.getTagsForStencil(gn, '', dt + 'derived property block').join(' ')),
1690			this.addDataEntry(dt + 'derived property comment', 270, 140, 'Allocation derived properties (Comment)',
1691				'xVRNb+MgEP01HCPZOK16rZO2l3Yv6R8g9sRGHQzF5Ku/fgdM7bKJpVZa7R4sz7xhhuHxGFas1OnJCtO+6BqQFQ+sWFmt3WCp0woQGc9kzYo14zyjj/HHmWgeopkRFjr3nQQ+JBwE7mFAGL9FSi0Nwb074wDfvu99S6UStpEdK+4zcxrdhdOGoDzBEHZuAh2c3EKgbHzuECqnqmQ18R/23n4CAlFXwkH9aLX6jNJpthcZ1p9xAoWijkq89ABBETevZwNjIE2KXvYwrPwlFMztMtPsq/7/rdIeZtqEJ5fJ+1YYb3ba0a9snSLhrXMye/nhA/mNt42oZNc8h9ta34QThgtcxwv8kqcPYHeoj+TuJCmsKI+tdLChEr7ekQT+Jb+iZsGOnVEu6WNWwQGK8n0CrcDZMy2JCctB4NlR1q6Noi4i1oJs2ljlLmKiH/xmrDQ9DzLiC7n+WoqL15IwP8OyhcqztdOd28Ro/i8IOsdodslQzq8wtPwLDC2vzJM/aLF639Xg12ephlBsAUtRvTVhyUqjtkGknRcpdPW9tUFhEalF34Y6+UgU1A0kNPV6bytIZp2j+QQuudBvkGkBhZOHtPoPmCJ3muohlgz93w=='),
1692
1693			this.addEntry(dt + 'derived property internal block diagram', function()
1694			{
1695			   	var bg = new mxCell(
1696			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1697		    			'&lt;&lt;block&gt;&gt;<br/>' +
1698						'<b>BlockName</b></p><hr/>',
1699			   			new mxGeometry(0, 0, 250, 160), 'shape=rect;html=1;overflow=fill;strokeWidth=2;whiteSpace=wrap;align=center;verticalAlign=top;recursiveResize=0;');
1700			   	bg.vertex = true;
1701			   	var cardCell2 = new mxCell(
1702			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1703		    			'<b>PartName</b><hr/></p>' +
1704						'<p style="font-size:10px;margin:0px;text-align:center;"><i>allocatedFrom</i></p>' +
1705						'<p style="margin:0px;margin-left:8px;text-align:left;">&lt;&lt;elementType&gt;&gt; ElementName</p>',
1706			   			new mxGeometry(20, 60, 210, 80), inh + 'shape=rect;html=1;overflow=fill;strokeWidth=2;whiteSpace=wrap;align=center;');
1707			   	cardCell2.vertex = true;
1708			   	bg.insert(cardCell2);
1709
1710			   	return sb.createVertexTemplateFromCells([bg], 250, 160, 'Allocation derived properties (Internal Block Diagram)');
1711			}),
1712
1713		    this.createVertexTemplateEntry(s + 'simpleState;html=1;overflow=fill;whiteSpace=wrap;align=center;', 200, 100,
1714		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1715	    			'<b>ActivityName</b><hr/></p>' +
1716					'<p style="font-size:10px;margin:0px;text-align:center;"><i>allocatedTo</i></p>' +
1717					'<p style="margin:0px;margin-left:8px;text-align:left;">&lt;&lt;elementType&gt;&gt; ElementName</p>',
1718		    		'Allocation Derived Properties (Activity Diagram)', null, null, this.getTagsForStencil(gn, '', dt + 'derived property activity diagram').join(' ')),
1719
1720			this.addEntry(dt + 'activity partition', function()
1721			{
1722			   	var cardCell = new mxCell(
1723			    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1724		    			'&lt;&lt;allocate&gt;&gt;<br/>:ElementName<hr/></p>',
1725			   			new mxGeometry(0, 0, 250, 160), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;verticalAlign=top;');
1726			   	cardCell.vertex = true;
1727			   	var cardCell2 = new mxCell('ActionName', new mxGeometry(65, 70, 120, 60), s + 'cont;fontStyle=1;whiteSpace=wrap;align=center;');
1728			   	cardCell2.vertex = true;
1729
1730			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2], 250, 160, 'Allocation Activity Partition');
1731			}),
1732
1733			this.addEntry(dt + 'general', function()
1734			{
1735			   	var cardCell = new mxCell('Client',	new mxGeometry(0, 0, 100, 60), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
1736			   	cardCell.vertex = true;
1737			   	var cardCell2 = new mxCell('Supplier', new mxGeometry(200, 0, 100, 60), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
1738			   	cardCell2.vertex = true;
1739			   	var edge1 = new mxCell('&lt;&lt;allocate&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'rounded=0;html=1;verticalAlign=top;labelBackgroundColor=none;endArrow=open;dashed=1;endSize=12;');
1740			   	edge1.geometry.relative = true;
1741			   	edge1.edge = true;
1742			   	cardCell.insertEdge(edge1, true);
1743			   	cardCell2.insertEdge(edge1, false);
1744
1745			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 300, 60, 'Allocation (General)');
1746			})
1747		];
1748
1749		this.addPalette('sysmlAllocations', 'SysML / Allocations', expand || false, mxUtils.bind(this, function(content)
1750		{
1751			for (var i = 0; i < fns.length; i++)
1752			{
1753				content.appendChild(fns[i](content));
1754			}
1755		}));
1756	};
1757
1758	Sidebar.prototype.addSysMLRequirementsPalette = function(expand)
1759	{
1760		var s = 'html=1;shape=mxgraph.sysml.';
1761		var gn = '';
1762		var dt = 'sysml requirement ';
1763		var sb = this;
1764
1765		var fns = [
1766			this.createVertexTemplateEntry(s + 'package;overflow=fill;labelX=110;strokeWidth=2;align=center;', 160, 80,
1767		    		'<p style="margin:0px;margin-top:4px;margin-left:7px;text-align:left;"><b>req</b>  ReqDiagram</p>',
1768		    		'Requirement Diagram', null, null, this.getTagsForStencil(gn, 'package', dt + 'diagram').join(' ')),
1769
1770		    this.createVertexTemplateEntry('shape=rect;overflow=fill;html=1;whiteSpace=wrap;align=center;', 200, 100,
1771		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1772	    			'&lt;&lt;requirement&gt;&gt;<br/><b>Requirement Name</b><hr/></p>' +
1773					'<p style="margin:0px;margin-left:8px;text-align:left;">text="The system shall do"<br/>Id="62j32."</p>',
1774		    		'Requirement', null, null, this.getTagsForStencil(gn, 'package', dt + '').join(' ')),
1775
1776		    this.createVertexTemplateEntry('shape=rect;overflow=fill;html=1;whiteSpace=wrap;align=center;', 200, 100,
1777		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
1778	    			'&lt;&lt;testCase&gt;&gt;<br/><b>TestCaseName</b><hr/></p>',
1779		    		'Test Case', null, null, this.getTagsForStencil(gn, 'package', dt + 'test case').join(' ')),
1780			this.addDataEntry(dt + 'containment relationship', 300, 180, 'Requirement Containment Relationship',
1781				'5ZXfboIwFMafpvdQnNkuB27ezMTEJ6hwQpsVykoR2dPvtBRdjSYmy5zJLkjOn37fob8GSpKs2i81a/hKFSBJ8kKSTCtlxqjaZyAloZEoSLIglEb4EPp6oRu7btQwDbW5RkBHwY7JDsYKoXNWNSRJJRqkYabhoxMaKms+Ncpg2ZQRmsQRhuvxTdyQ1gzSD2k5a2yoIbcCbirc+SLGsOfCwKZhuW33yAVrTIqyxjRHK9BugHtp0Ab2FzfuSn7XS1AVGD3gEi94GrlEvSgM9wLPKuIgSu5d5r7G2jEvD05Hqhh4sOchJ78MOeNCFvE9QR5OiN6C8uwWlOk9UZ4Ej57eX1B/OEP9hJBWXV2AXR+FgCTbgkxZ/l66JZmSCpEsalWjMoW6eNZa9d8qRQkb7wtyq/qXYyF1BWxYlCJnOCNtDdNm8miHdvW2xmGZsljH5kZ8WrOYHk7CzgjOoVWdziH4W6KyBBN821eclgbJjNiF7j9BP//n6Gc3Q4/p8Up2veDG/gI='),
1782
1783			this.addEntry(dt + 'copy dependency', function()
1784			{
1785			   	var cardCell = new mxCell('&lt;&lt;requirement&gt;&gt;\nSlave',	new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1786			   	cardCell.vertex = true;
1787			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nMaster', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1788			   	cardCell2.vertex = true;
1789			   	var edge1 = new mxCell('&lt;&lt;copy&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;edgeStyle=none;endSize=12;dashed=1;html=1;');
1790			   	edge1.geometry.relative = true;
1791			   	edge1.edge = true;
1792			   	cardCell.insertEdge(edge1, true);
1793			   	cardCell2.insertEdge(edge1, false);
1794
1795			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Copy Dependency');
1796			}),
1797
1798			this.addEntry(dt + 'master callout', function()
1799			{
1800			   	var cardCell = new mxCell('Master\n&lt;&lt;requirement&gt;&gt; Master',	new mxGeometry(0, 0, 160, 60), 'shape=note;html=1;size=15;align=left;spacingLeft=5;whiteSpace=wrap;align=center;');
1801			   	cardCell.vertex = true;
1802			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt; Slave', new mxGeometry(200, 0, 160, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1803			   	cardCell2.vertex = true;
1804			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
1805			   	edge1.geometry.relative = true;
1806			   	edge1.edge = true;
1807			   	cardCell.insertEdge(edge1, true);
1808			   	cardCell2.insertEdge(edge1, false);
1809
1810			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Master Callout');
1811			}),
1812
1813			this.addEntry(dt + 'derive dependency', function()
1814			{
1815			   	var cardCell = new mxCell('&lt;&lt;requirement&gt;&gt;\nClient',	new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1816			   	cardCell.vertex = true;
1817			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nSupplier', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1818			   	cardCell2.vertex = true;
1819			   	var edge1 = new mxCell('&lt;&lt;deriveReq&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;edgeStyle=none;endSize=12;dashed=1;');
1820			   	edge1.geometry.relative = true;
1821			   	edge1.edge = true;
1822			   	cardCell.insertEdge(edge1, true);
1823			   	cardCell2.insertEdge(edge1, false);
1824
1825			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Derive Dependency');
1826			}),
1827
1828			this.addEntry(dt + 'derive callout', function()
1829			{
1830			   	var cardCell = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqA',	new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1831			   	cardCell.vertex = true;
1832			   	var cardCell2 = new mxCell('Derived\n&lt;&lt;requirement&gt;&gt; ReqB', new mxGeometry(200, 0, 160, 60), 'shape=note;html=1;size=15;align=left;spacingLeft=5;whiteSpace=wrap;align=center;');
1833			   	cardCell2.vertex = true;
1834			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
1835			   	edge1.geometry.relative = true;
1836			   	edge1.edge = true;
1837			   	cardCell.insertEdge(edge1, true);
1838			   	cardCell2.insertEdge(edge1, false);
1839
1840			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Derive Callout');
1841			}),
1842
1843			this.addEntry(dt + 'derive callout', function()
1844			{
1845			   	var cardCell = new mxCell('DerivedFrom\n&lt;&lt;requirement&gt;&gt; ReqA', new mxGeometry(0, 0, 160, 60), 'shape=note;html=1;size=15;align=left;spacingLeft=5;whiteSpace=wrap;align=center;');
1846			   	cardCell.vertex = true;
1847			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqB',	new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1848			   	cardCell2.vertex = true;
1849			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
1850			   	edge1.geometry.relative = true;
1851			   	edge1.edge = true;
1852			   	cardCell.insertEdge(edge1, true);
1853			   	cardCell2.insertEdge(edge1, false);
1854
1855			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Derive Callout');
1856			}),
1857
1858			this.addEntry(dt + 'satisfy dependency', function()
1859			{
1860			   	var cardCell = new mxCell('NamedElement', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1861			   	cardCell.vertex = true;
1862			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nSupplier', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1863			   	cardCell2.vertex = true;
1864			   	var edge1 = new mxCell('&lt;&lt;satisfy&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;edgeStyle=none;endSize=12;dashed=1;html=1;');
1865			   	edge1.geometry.relative = true;
1866			   	edge1.edge = true;
1867			   	cardCell.insertEdge(edge1, true);
1868			   	cardCell2.insertEdge(edge1, false);
1869
1870			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Satisfy Dependency');
1871			}),
1872
1873			this.addEntry(dt + 'satisfy callout', function()
1874			{
1875			   	var cardCell = new mxCell('NamedElement',	new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1876			   	cardCell.vertex = true;
1877			   	var cardCell2 = new mxCell('Satisfies\n&lt;&lt;requirement&gt;&gt; ReqA', new mxGeometry(200, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
1878			   	cardCell2.vertex = true;
1879			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
1880			   	edge1.geometry.relative = true;
1881			   	edge1.edge = true;
1882			   	cardCell.insertEdge(edge1, true);
1883			   	cardCell2.insertEdge(edge1, false);
1884
1885			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Satisfy Callout');
1886			}),
1887
1888			this.addEntry(dt + 'satisfy callout', function()
1889			{
1890			   	var cardCell = new mxCell('SatisfiedBy\nNamedElement', new mxGeometry(0, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
1891			   	cardCell.vertex = true;
1892			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqA',	new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1893			   	cardCell2.vertex = true;
1894			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
1895			   	edge1.geometry.relative = true;
1896			   	edge1.edge = true;
1897			   	cardCell.insertEdge(edge1, true);
1898			   	cardCell2.insertEdge(edge1, false);
1899
1900			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Satisfy Callout');
1901			}),
1902
1903			this.addEntry(dt + 'verify dependency', function()
1904			{
1905			   	var cardCell = new mxCell('NamedElement', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1906			   	cardCell.vertex = true;
1907			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nSupplier', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1908			   	cardCell2.vertex = true;
1909			   	var edge1 = new mxCell('&lt;&lt;verify&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;edgeStyle=none;endSize=12;dashed=1;html=1;');
1910			   	edge1.geometry.relative = true;
1911			   	edge1.edge = true;
1912			   	cardCell.insertEdge(edge1, true);
1913			   	cardCell2.insertEdge(edge1, false);
1914
1915			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Verify Dependency');
1916			}),
1917
1918			this.addEntry(dt + 'verify callout', function()
1919			{
1920			   	var cardCell = new mxCell('NamedElement',	new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1921			   	cardCell.vertex = true;
1922			   	var cardCell2 = new mxCell('Verifies\n&lt;&lt;requirement&gt;&gt; ReqA', new mxGeometry(200, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
1923			   	cardCell2.vertex = true;
1924			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
1925			   	edge1.geometry.relative = true;
1926			   	edge1.edge = true;
1927			   	cardCell.insertEdge(edge1, true);
1928			   	cardCell2.insertEdge(edge1, false);
1929
1930			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Verify Callout');
1931			}),
1932
1933			this.addEntry(dt + 'verify callout', function()
1934			{
1935			   	var cardCell = new mxCell('VerifiedBy\nNamedElement', new mxGeometry(0, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
1936			   	cardCell.vertex = true;
1937			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqA',	new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1938			   	cardCell2.vertex = true;
1939			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
1940			   	edge1.geometry.relative = true;
1941			   	edge1.edge = true;
1942			   	cardCell.insertEdge(edge1, true);
1943			   	cardCell2.insertEdge(edge1, false);
1944
1945			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Verify Callout');
1946			}),
1947
1948			this.addEntry(dt + 'refine dependency', function()
1949			{
1950			   	var cardCell = new mxCell('NamedElement', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1951			   	cardCell.vertex = true;
1952			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nClient', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1953			   	cardCell2.vertex = true;
1954			   	var edge1 = new mxCell('&lt;&lt;refine&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;edgeStyle=none;endSize=12;dashed=1;html=1;');
1955			   	edge1.geometry.relative = true;
1956			   	edge1.edge = true;
1957			   	cardCell.insertEdge(edge1, true);
1958			   	cardCell2.insertEdge(edge1, false);
1959
1960			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Refine Dependency');
1961			}),
1962
1963			this.addEntry(dt + 'refine dependency', function()
1964			{
1965			   	var cardCell = new mxCell('NamedElement',	new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1966			   	cardCell.vertex = true;
1967			   	var cardCell2 = new mxCell('Refines\n&lt;&lt;requirement&gt;&gt; ReqA', new mxGeometry(200, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
1968			   	cardCell2.vertex = true;
1969			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
1970			   	edge1.geometry.relative = true;
1971			   	edge1.edge = true;
1972			   	cardCell.insertEdge(edge1, true);
1973			   	cardCell2.insertEdge(edge1, false);
1974
1975			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Refine Callout');
1976			}),
1977
1978			this.addEntry(dt + 'refine dependency', function()
1979			{
1980			   	var cardCell = new mxCell('RefinedBy\nNamedElement', new mxGeometry(0, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
1981			   	cardCell.vertex = true;
1982			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqA',	new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1983			   	cardCell2.vertex = true;
1984			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
1985			   	edge1.geometry.relative = true;
1986			   	edge1.edge = true;
1987			   	cardCell.insertEdge(edge1, true);
1988			   	cardCell2.insertEdge(edge1, false);
1989
1990			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Refine Callout');
1991			}),
1992
1993			this.addEntry(dt + 'trace dependency', function()
1994			{
1995			   	var cardCell = new mxCell('&lt;&lt;requirement&gt;&gt;\nClient', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1996			   	cardCell.vertex = true;
1997			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nSupplier', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
1998			   	cardCell2.vertex = true;
1999			   	var edge1 = new mxCell('&lt;&lt;trace&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;edgeStyle=none;endSize=12;dashed=1;html=1;');
2000			   	edge1.geometry.relative = true;
2001			   	edge1.edge = true;
2002			   	cardCell.insertEdge(edge1, true);
2003			   	cardCell2.insertEdge(edge1, false);
2004
2005			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Trace Dependency');
2006			}),
2007
2008			this.addEntry(dt + 'refine callout', function()
2009			{
2010			   	var cardCell = new mxCell('NamedElement',	new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
2011			   	cardCell.vertex = true;
2012			   	var cardCell2 = new mxCell('TracedFrom\n&lt;&lt;requirement&gt;&gt; ReqA', new mxGeometry(200, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
2013			   	cardCell2.vertex = true;
2014			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
2015			   	edge1.geometry.relative = true;
2016			   	edge1.edge = true;
2017			   	cardCell.insertEdge(edge1, true);
2018			   	cardCell2.insertEdge(edge1, false);
2019
2020			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Refine Callout');
2021			}),
2022
2023			this.addEntry(dt + 'trace callout', function()
2024			{
2025			   	var cardCell = new mxCell('TracedTo\nNamedElement', new mxGeometry(0, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
2026			   	cardCell.vertex = true;
2027			   	var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqA',	new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
2028			   	cardCell2.vertex = true;
2029			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
2030			   	edge1.geometry.relative = true;
2031			   	edge1.edge = true;
2032			   	cardCell.insertEdge(edge1, true);
2033			   	cardCell2.insertEdge(edge1, false);
2034
2035			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Trace Callout');
2036			})
2037		];
2038
2039		this.addPalette('sysmlRequirements', 'SysML / Requirements', expand || false, mxUtils.bind(this, function(content)
2040		{
2041			for (var i = 0; i < fns.length; i++)
2042			{
2043				content.appendChild(fns[i](content));
2044			}
2045		}));
2046	};
2047
2048	Sidebar.prototype.addSysMLProfilesPalette = function(expand)
2049	{
2050		var s = 'shape=mxgraph.sysml.';
2051		var gn = '';
2052		var dt = 'sysml profile ';
2053		var sb = this;
2054
2055		var fns = [
2056		    this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
2057		    		160, 80, '&lt;&lt;stereotype&gt;&gt;\nStereotypeName', 'Stereotype', null, null, this.getTagsForStencil(gn, '', dt + 'stereotype').join(' ')),
2058		    this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
2059		    		160, 80, '&lt;&lt;metaclass&gt;&gt;\nMetaClassName', 'Metaclass', null, null, this.getTagsForStencil(gn, '', dt + 'metaclass').join(' ')),
2060		    this.createVertexTemplateEntry('shape=folder;tabWidth=80;tabHeight=20;tabPosition=left;html=1;whiteSpace=wrap;align=center;',
2061		    		160, 100, '&lt;&lt;profile&gt;&gt;\nProfileName', 'Profile', null, null, this.getTagsForStencil(gn, '', dt + 'profile').join(' ')),
2062		    this.createVertexTemplateEntry('shape=folder;tabWidth=80;tabHeight=20;tabPosition=left;html=1;whiteSpace=wrap;align=center;',
2063		    		160, 100, '&lt;&lt;modelLibrary&gt;&gt;\nLibraryName', 'Model Library', null, null, this.getTagsForStencil(gn, '', dt + 'model library').join(' ')),
2064
2065			this.addEntry(dt + 'extension', function()
2066			{
2067			   	var cardCell = new mxCell('&lt;&lt;metaclass&gt;&gt;\nMetaClassName', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
2068			   	cardCell.vertex = true;
2069			   	var cardCell2 = new mxCell('&lt;&lt;stereotype&gt;&gt;\nStereotypeName', new mxGeometry(0, 120, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
2070			   	cardCell2.vertex = true;
2071			   	var edge1 = new mxCell('{required}', new mxGeometry(0, 0, 0, 0), 'endArrow=block;html=1;endFill=1;edgeStyle=none;endSize=12;labelBackgroundColor=none;align=left;');
2072			   	edge1.geometry.relative = true;
2073			   	edge1.edge = true;
2074			   	cardCell.insertEdge(edge1, false);
2075			   	cardCell2.insertEdge(edge1, true);
2076
2077			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 120, 180, 'Extension');
2078			}),
2079
2080			this.addEntry(dt + 'generalization', function()
2081			{
2082			   	var cardCell = new mxCell('&lt;&lt;stereotype&gt;&gt;\nStereotypeName', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
2083			   	cardCell.vertex = true;
2084			   	var cardCell2 = new mxCell('&lt;&lt;stereotype&gt;&gt;\nStereotypeName', new mxGeometry(0, 120, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
2085			   	cardCell2.vertex = true;
2086			   	var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=block;html=1;endFill=0;edgeStyle=none;endSize=12;labelBackgroundColor=none;align=left;');
2087			   	edge1.geometry.relative = true;
2088			   	edge1.edge = true;
2089			   	cardCell.insertEdge(edge1, false);
2090			   	cardCell2.insertEdge(edge1, true);
2091
2092			   	return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 120, 180, 'Generalization');
2093			}),
2094
2095			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
2096					160, 0, '&lt;&lt;apply&gt;&gt;{strict}', 'Profile Application', null, this.getTagsForStencil(gn, '', dt + 'profile application').join(' ')),
2097			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=top;',
2098					160, 0, '&lt;&lt;reference&gt;&gt;', 'Metamodel Reference', null, this.getTagsForStencil(gn, '', dt + 'metamodel reference').join(' ')),
2099			this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;verticalAlign=bottom;',
2100					160, 0, 'propertyName', 'Unidirectional Association', null, this.getTagsForStencil(gn, '', dt + 'unidirectional association').join(' '))
2101		];
2102
2103		this.addPalette('sysmlProfiles', 'SysML / Profiles', expand || false, mxUtils.bind(this, function(content)
2104		{
2105			for (var i = 0; i < fns.length; i++)
2106			{
2107				content.appendChild(fns[i](content));
2108			}
2109		}));
2110	};
2111
2112	Sidebar.prototype.addSysMLStereotypesPalette = function(expand)
2113	{
2114		var s = 'html=1;shape=mxgraph.sysml.';
2115		var gn = '';
2116		var dt = 'sysml stereotype ';
2117		var sb = this;
2118
2119		var fns = [
2120			this.addDataEntry(dt + 'note', 320, 150, 'Stereotype Note',
2121				'3ZZdb5swFIZ/DZeVwCTRbgPpetNOkSLt3oETsGYwM4ck7NfvGDtQAkk7tdKkXkSx3/Nh8/Aa8MK4OD9pXuUvKgXphY9eGGul0I6KcwxSeswXqRduPMZ8+nns+41o0EX9imso8T0FzBYcuWzAKh5bSSqNKpJrbKWVV78bs6Wo4DoTpReu/ercTx9QVSQFI03CAQcR4YwPXIrM1NpQNHSlUeb+u7X3rwReUO9ITmc1ggaFbQU/eAF9bFw3bqsNCNd6q1UFGtuuONz8NAR2qEWZzaa/NBLFvZqYeL3VJFJKAi9HbVweZe2vMZBWDRob3RBW57wyw1IhGBrij5kFSzOueEJbeO4wb4ySYyFNlIbqCPog1YmmB0FeCKNTLhB2VGManMiK/XKUSjfuprU6yfnqCVQBqFtKcQUL6zz/JFLMndu+OS0HkeWuy0XjtZ1nfafBtzRw1p23cTix8aOEwmyUrTwWBj5dkqV9g6KGxFA+qBJ3LhqMuc1RcobeJLQS6A9ia100mHKbw7b4BGyLL4DNFVwedP8D43KCccsxnwWnVVOmYOoMW8n3ICOe/Mo6PVZS6e5Il+ZIGx4i4XLtcHVP2QjKdK11d35d3h36dn1IMxhhrVWjExgdHaSnNuDIFu+Ar0FyFMdx94+gXM28j+4inOJIeZ134X9nwT7/wl3pVglzqi5uDZZXbg2vbGhvh6u6wtdvY44oTYevB5v++uPiLw=='),
2122			this.addDataEntry(dt + 'note', 320, 150, 'Stereotype Note',
2123				'rZRNj9owEIZ/jY8rJTGLet3Adi/daiWk3r1kSCw5tutMgPTXdxybZA2hXak9IMbvfNg8fjHjm/b84oRtXk0FivFnxjfOGAxRe96AUqzIZMX4lhVFRh9WfL2TzcdsZoUDjZ9pKELDUagegsKKtaLW0pLc4aCCvP7Z+yOVrXC11Iw/ZfY8LR/QWJLyRFNwwFlEOOODULL2vSFVzlMpquP3uPf7B0G0NLtUt6sOwYHBwcJ30cKUS/vSsc6DiKPfnLHgcBib+faHJ7BDJ3W9WP7aK5R/6tkQr78NKY1RIHQyJtZR1fs1BtLsrBXJhRRdI6wPtUHwNOQvv8offWzFno7wbcS89UqDrfJZCs0R3EGZEy0PkrzAy1MjEXbU4wecyIrTdlRKF3fXWqMUffUCpgV0A5XEhlVwXnaSFTbRbV+i1oCsmzjlookurOtp0uxbCqJ1l23Mb2z8rKD1By3WrOB5Rj8p0L5D0cHeUz4YjbuYzVNuS5Siobd72gncP2IbYja/5baEbfUfsK0W/v1XgJzpdQW+3jMEXT05N5pHG+19V4muGdNXuMIgqGpIOHSmd3tI3h6k9wIwucdP0HKgBMpjOn2JRWx9M9K74WLO/DHiu1DnVzjDqWLXFdHpGEuQaTk/36H84+v+Gw=='),
2124
2125		    this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;', 160, 80,
2126		    		'&lt;&lt;stereotypeName&gt;&gt;\n{PropertyName=ValueString;\nBooleanPropertyName}\nNodeName',
2127		    		'Stereotype (Node)', null, null, this.getTagsForStencil(gn, '', dt + 'node').join(' ')),
2128
2129		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 400, 100,
2130		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
2131	    			'<b>NodeName</b><hr/></p>' +
2132		    		'<p style="margin:0px;margin-left:10px;text-align:left;">' +
2133	    			'&lt;&lt;stereotypeName&gt;&gt;{PropertyName=ValueString}ElementName<br/>' +
2134	    			'&lt;&lt;stereotypeName&gt;&gt;{PropertyName=ValueString};<br/>' +
2135	    			'BooleanPropertyName<br/>' +
2136	    			'ElementName</p>',
2137		    		'Stereotype (Compartment)', null, null, this.getTagsForStencil(gn, '', dt + 'compartment').join(' ')),
2138			this.addDataEntry(dt + 'edge', 200, 180, 'Stereotype (Edge)',
2139				'3VTBboMwDP2a3CmZ2vOgXU+bKlXaPQM3iRYSZEwp+/oFCO2ytVJ32WEHJD8/G/OeQxjPq9MWRa2eXQmG8Q3jOTpHU1SdcjCGpYkuGV+zNE38w9KnG+xiZJNaIFi6pyGdGo7CtDBlNgaqoTldspQvEsazF1HBVNZQb0JZo0Q9hAiFH5QdnKV9YBceK6pMCDulCfa1KAau80p9ThgtrYeFnwToE+EzAAlON6WMqaBjC64Cwt6XdLokFSqC3ESBliq0LUNONBOW59aLMT4I3lz3if8Dn/pvHv2Fbw8/fPOGiWrQZmjU8xU1XiRQ72CyMlAyKpzR7DpbZTt0tXekH7v4+nUYtifUVsalmXMGhI3KV+udIHV1dWDLR0TXeWSdhXhbUEqYFxlYI97AZKJ4l+haW+bOOLyw8yoNHK4dhBHrjxEm50UPU6I1N67FAqIzSQIlUPQ733EYEIwgfYzf/otNe3i5pUYuusQ+AQ=='),
2140
2141		    this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 300, 120,
2142		    		'<p style="margin:0px;margin-top:4px;text-align:center;">' +
2143	    			'<b>&lt;&lt;stereotypeName&gt;&gt;</br>NodeName</b><hr/></p>' +
2144		    		'<p style="margin:0px;margin-left:10px;text-align:left;">' +
2145	    			'&lt;&lt;stereotypeName&gt;&gt;<br/>PropertyName=ValueString<br/>' +
2146	    			'MultiPropertyName=ValueString, ValueString<br/>' +
2147	    			'BooleanPropertyName<br/></p>',
2148		    		'Stereotype (Compartment)', null, null, this.getTagsForStencil(gn, '', dt + 'compartment').join(' '))
2149		];
2150
2151		this.addPalette('sysmlStereotypes', 'SysML / Stereotypes', expand || false, mxUtils.bind(this, function(content)
2152		{
2153			for (var i = 0; i < fns.length; i++)
2154			{
2155				content.appendChild(fns[i](content));
2156			}
2157		}));
2158	};
2159
2160})();
2161