1(function()
2{
3	// Adds Azure shapes
4	Sidebar.prototype.addAzure2Palette = function()
5	{
6		var gn = 'mxgraph.azure2';
7		var r = 400;
8		var sb = this;
9		var s = 'aspect=fixed;html=1;points=[];align=center;image;fontSize=12;image=img/lib/azure2/';
10
11		this.setCurrentSearchEntryLibrary('azure2', 'azure2AI Machine Learning');
12		this.addAzure2AIMachineLearningPalette(gn, r, sb, s + 'ai_machine_learning/');
13		this.setCurrentSearchEntryLibrary('azure2', 'azure2Analytics');
14		this.addAzure2AnalyticsPalette(gn, r, sb, s + 'analytics/');
15		this.setCurrentSearchEntryLibrary('azure2', 'azure2App Services');
16		this.addAzure2AppServicesPalette(gn, r, sb, s + 'app_services/');
17		this.setCurrentSearchEntryLibrary('azure2', 'azure2Azure Stack');
18		this.addAzure2AzureStackPalette(gn, r, sb, s + 'azure_stack/');
19		this.setCurrentSearchEntryLibrary('azure2', 'azure2Azure VMware Solution');
20		this.addAzure2AzureVMwareSolutionPalette(gn, r, sb, s + 'azure_vmware_solution/');
21		this.setCurrentSearchEntryLibrary('azure2', 'azure2Blockchain');
22		this.addAzure2BlockchainPalette(gn, r, sb, s + 'blockchain/');
23		this.setCurrentSearchEntryLibrary('azure2', 'azure2Compute');
24		this.addAzure2ComputePalette(gn, r, sb, s + 'compute/');
25		this.setCurrentSearchEntryLibrary('azure2', 'azure2Containers');
26		this.addAzure2ContainersPalette(gn, r, sb, s + 'containers/');
27		this.setCurrentSearchEntryLibrary('azure2', 'azure2CXP');
28		this.addAzure2CXPPalette(gn, r, sb, s + 'cxp/');
29		this.setCurrentSearchEntryLibrary('azure2', 'azure2Databases');
30		this.addAzure2DatabasesPalette(gn, r, sb, s + 'databases/');
31		this.setCurrentSearchEntryLibrary('azure2', 'azure2DevOps');
32		this.addAzure2DevOpsPalette(gn, r, sb, s + 'devops/');
33		this.setCurrentSearchEntryLibrary('azure2', 'azure2General');
34		this.addAzure2GeneralPalette(gn, r, sb, s + 'general/');
35		this.setCurrentSearchEntryLibrary('azure2', 'azure2Identity');
36		this.addAzure2IdentityPalette(gn, r, sb, s + 'identity/');
37		this.setCurrentSearchEntryLibrary('azure2', 'azure2Integration');
38		this.addAzure2IntegrationPalette(gn, r, sb, s + 'integration/');
39		this.setCurrentSearchEntryLibrary('azure2', 'azure2Internet of Things');
40		this.addAzure2InternetOfThingsPalette(gn, r, sb, s + 'internet_of_things/');
41		this.setCurrentSearchEntryLibrary('azure2', 'azure2Intune');
42		this.addAzure2IntunePalette(gn, r, sb, s + 'intune/');
43		this.setCurrentSearchEntryLibrary('azure2', 'azure2IoT');
44		this.addAzure2IOTPalette(gn, r, sb, s + 'iot/');
45		this.setCurrentSearchEntryLibrary('azure2', 'azure2Management Governance');
46		this.addAzure2ManagementGovernancePalette(gn, r, sb, s + 'management_governance/');
47		this.setCurrentSearchEntryLibrary('azure2', 'azure2Migrate');
48		this.addAzure2MigratePalette(gn, r, sb, s + 'migrate/');
49		this.setCurrentSearchEntryLibrary('azure2', 'azure2Mixed Reality');
50		this.addAzure2MixedRealityPalette(gn, r, sb, s + 'mixed_reality/');
51		this.setCurrentSearchEntryLibrary('azure2', 'azure2Monitor');
52		this.addAzure2MonitorPalette(gn, r, sb, s + 'monitor/');
53		this.setCurrentSearchEntryLibrary('azure2', 'azure2Networking');
54		this.addAzure2NetworkingPalette(gn, r, sb, s + 'networking/');
55		this.setCurrentSearchEntryLibrary('azure2', 'azure2Other');
56		this.addAzure2OtherPalette(gn, r, sb, s + 'other/');
57		this.setCurrentSearchEntryLibrary('azure2', 'azure2Preview');
58		this.addAzure2PreviewPalette(gn, r, sb, s + 'preview/');
59		this.setCurrentSearchEntryLibrary('azure2', 'azure2Security');
60		this.addAzure2SecurityPalette(gn, r, sb, s + 'security/');
61		this.setCurrentSearchEntryLibrary('azure2', 'azure2Storage');
62		this.addAzure2StoragePalette(gn, r, sb, s + 'storage/');
63		this.setCurrentSearchEntryLibrary('azure2', 'azure2Web');
64		this.addAzure2WebPalette(gn, r, sb, s + 'web/');
65		this.setCurrentSearchEntryLibrary();
66	};
67
68	Sidebar.prototype.addAzure2AIMachineLearningPalette = function(gn, r, sb, s)
69	{
70		var dt = 'azure ai machine learning artificial intelligence ';
71
72		var fns =
73		[
74			this.createVertexTemplateEntry(s + 'Bot_Services.svg;',
75					r * 0.17, r * 0.17, '', 'Bot Services', null, null, this.getTagsForStencil(gn, 'bot services', dt).join(' ')),
76			this.createVertexTemplateEntry(s + 'Cognitive_Services.svg;',
77					r * 0.17, r * 0.12, '', 'Cognitive Services', null, null, this.getTagsForStencil(gn, 'cognitive services', dt).join(' ')),
78			this.createVertexTemplateEntry(s + 'Machine_Learning_Studio_Classic_Web_Services.svg;',
79					r * 0.17, r * 0.17, '', 'Machine Learning Studio - Classic Web Services', null, null, this.getTagsForStencil(gn, 'studio classic web services', dt).join(' ')),
80			this.createVertexTemplateEntry(s + 'Machine_Learning_Studio_Web_Service_Plans.svg;',
81					r * 0.17, r * 0.16, '', 'Machine Learning Studio - Web Service Plans', null, null, this.getTagsForStencil(gn, 'studio web service plans', dt).join(' ')),
82			this.createVertexTemplateEntry(s + 'Machine_Learning_Studio_Workspaces.svg;',
83					r * 0.17, r * 0.16, '', 'Machine Learning Studio - Workspaces', null, null, this.getTagsForStencil(gn, 'studio workspaces', dt).join(' ')),
84			this.createVertexTemplateEntry(s + 'Translator_Text.svg;',
85					r * 0.17, r * 0.17, '', 'Translator Text', null, null, this.getTagsForStencil(gn, 'translator text', dt).join(' '))
86		];
87
88		this.addPalette('azure2AI Machine Learning', 'Azure / AI and Machine Learning', false, mxUtils.bind(this, function(content)
89				{
90					for (var i = 0; i < fns.length; i++)
91					{
92						content.appendChild(fns[i](content));
93					}
94		}));
95	};
96
97	Sidebar.prototype.addAzure2AnalyticsPalette = function(gn, r, sb, s)
98	{
99		var dt = 'azure analytics ';
100
101		var fns =
102		[
103			this.createVertexTemplateEntry(s + 'Analysis_Services.svg;',
104					r * 0.1575, r * 0.12, '', 'Analysis Services', null, null, this.getTagsForStencil(gn, 'analysis services', dt).join(' ')),
105			this.createVertexTemplateEntry(s + 'Azure_Databricks.svg;',
106					r * 0.15, r * 0.17, '', 'Azure Databricks', null, null, this.getTagsForStencil(gn, 'azure databricks', dt).join(' ')),
107			this.createVertexTemplateEntry(s + 'Azure_Synapse_Analytics.svg;',
108					r * 0.15, r * 0.1725, '', 'Azure Synapse Analytics', null, null, this.getTagsForStencil(gn, 'synapse analytics', dt).join(' ')),
109			this.createVertexTemplateEntry(s + 'Data_Lake_Store_Gen1.svg;',
110					r * 0.16, r * 0.13, '', 'Data Lake Store Gen1', null, null, this.getTagsForStencil(gn, 'data lake store gen1', dt).join(' ')),
111			this.createVertexTemplateEntry(s + 'Event_Hub_Clusters.svg;',
112					r * 0.16, r * 0.13, '', 'Event Hub Clusters', null, null, this.getTagsForStencil(gn, 'event hub clusters', dt).join(' ')),
113			this.createVertexTemplateEntry(s + 'Event_Hubs.svg;',
114					r * 0.1675, r * 0.15, '', 'Event Hubs', null, null, this.getTagsForStencil(gn, 'event hubs', dt).join(' ')),
115			this.createVertexTemplateEntry(s + 'HD_Insight_Clusters.svg;',
116					r * 0.1575, r * 0.155, '', 'HD Insight Clusters', null, null, this.getTagsForStencil(gn, 'hd insight clusters', dt).join(' ')),
117			this.createVertexTemplateEntry(s + 'Log_Analytics_Workspaces.svg;',
118					r * 0.16, r * 0.16, '', 'Log Analytics Workspaces', null, null, this.getTagsForStencil(gn, 'log analytics workspaces', dt).join(' ')),
119			this.createVertexTemplateEntry(s + 'Stream_Analytics_Jobs.svg;',
120					r * 0.17, r * 0.145, '', 'Stream Analytics Jobs', null, null, this.getTagsForStencil(gn, 'Stream_Analytics_Jobs', dt).join(' '))
121		];
122
123		this.addPalette('azure2Analytics', 'Azure / Analytics', false, mxUtils.bind(this, function(content)
124				{
125					for (var i = 0; i < fns.length; i++)
126					{
127						content.appendChild(fns[i](content));
128					}
129		}));
130	};
131
132	Sidebar.prototype.addAzure2AppServicesPalette = function(gn, r, sb, s)
133	{
134		var dt = 'azure app services ';
135
136		var fns =
137		[
138			this.createVertexTemplateEntry(s + 'API_Management_Services.svg;',
139					r * 0.1625, r * 0.15, '', 'API Management Services', null, null, this.getTagsForStencil(gn, 'api application programming interface management services', dt).join(' ')),
140			this.createVertexTemplateEntry(s + 'App_Service_Certificates.svg;',
141					r * 0.175, r * 0.16, '', 'App Service Certificates', null, null, this.getTagsForStencil(gn, 'app service certificates', dt).join(' ')),
142			this.createVertexTemplateEntry(s + 'App_Service_Domains.svg;',
143					r * 0.1625, r * 0.13, '', 'App Service Domains', null, null, this.getTagsForStencil(gn, 'app service domains', dt).join(' ')),
144			this.createVertexTemplateEntry(s + 'App_Service_Environments.svg;',
145					r * 0.16, r * 0.16, '', 'App Service Environments', null, null, this.getTagsForStencil(gn, 'app service environments', dt).join(' ')),
146			this.createVertexTemplateEntry(s + 'App_Service_Plans.svg;',
147					r * 0.16, r * 0.16, '', 'App Service Plans', null, null, this.getTagsForStencil(gn, 'app service plans', dt).join(' ')),
148			this.createVertexTemplateEntry(s + 'App_Services.svg;',
149					r * 0.16, r * 0.16, '', 'App Services', null, null, this.getTagsForStencil(gn, 'app services', dt).join(' ')),
150			this.createVertexTemplateEntry(s + 'CDN_Profiles.svg;',
151					r * 0.17, r * 0.10, '', 'CDN Profiles', null, null, this.getTagsForStencil(gn, 'cdn profiles', dt).join(' ')),
152			this.createVertexTemplateEntry(s + 'Notification_Hubs.svg;',
153					r * 0.1675, r * 0.14, '', 'Notification Hubs', null, null, this.getTagsForStencil(gn, 'notification hubs', dt).join(' ')),
154			this.createVertexTemplateEntry(s + 'Search_Services.svg;',
155					r * 0.18, r * 0.13, '', 'Search Services', null, null, this.getTagsForStencil(gn, 'search services', dt).join(' '))
156		];
157
158		this.addPalette('azure2App Services', 'Azure / App Services', false, mxUtils.bind(this, function(content)
159				{
160					for (var i = 0; i < fns.length; i++)
161					{
162						content.appendChild(fns[i](content));
163					}
164		}));
165	};
166
167	Sidebar.prototype.addAzure2AzureStackPalette = function(gn, r, sb, s)
168	{
169		var dt = 'azure stack ';
170
171		var fns =
172		[
173			this.createVertexTemplateEntry(s + 'Azure_Stack.svg;',
174					r * 0.155, r * 0.16, '', 'Azure Stack', null, null, this.getTagsForStencil(gn, 'azure stack', dt).join(' ')),
175			this.createVertexTemplateEntry(s + 'Capacity.svg;',
176					r * 0.1575, r * 0.17, '', 'Capacity', null, null, this.getTagsForStencil(gn, 'capacity', dt).join(' ')),
177			this.createVertexTemplateEntry(s + 'Infrastructure_Backup.svg;',
178					r * 0.15, r * 0.1725, '', 'Infrastructure Backup', null, null, this.getTagsForStencil(gn, 'infrastructure backup', dt).join(' ')),
179			this.createVertexTemplateEntry(s + 'Multi_Tenancy.svg;',
180					r * 0.17, r * 0.1625, '', 'Multi Tenancy', null, null, this.getTagsForStencil(gn, 'multi tenancy', dt).join(' ')),
181			this.createVertexTemplateEntry(s + 'Offers.svg;',
182					r * 0.1625, r * 0.16, '', 'Offers', null, null, this.getTagsForStencil(gn, 'offers', dt).join(' ')),
183			this.createVertexTemplateEntry(s + 'Plans.svg;',
184					r * 0.13, r * 0.16, '', 'Plans', null, null, this.getTagsForStencil(gn, 'plans', dt).join(' ')),
185			this.createVertexTemplateEntry(s + 'Updates.svg;',
186					r * 0.17, r * 0.1675, '', 'Updates', null, null, this.getTagsForStencil(gn, 'updates', dt).join(' ')),
187			this.createVertexTemplateEntry(s + 'User_Subscriptions.svg;',
188					r * 0.17, r * 0.165, '', 'User Subscriptions', null, null, this.getTagsForStencil(gn, 'user subscriptions', dt).join(' '))
189		];
190
191		this.addPalette('azure2Azure Stack', 'Azure / Azure Stack', false, mxUtils.bind(this, function(content)
192				{
193					for (var i = 0; i < fns.length; i++)
194					{
195						content.appendChild(fns[i](content));
196					}
197		}));
198	};
199
200	Sidebar.prototype.addAzure2AzureVMwareSolutionPalette = function(gn, r, sb, s)
201	{
202		var dt = 'azure vmware solution ';
203
204		var fns =
205		[
206			this.createVertexTemplateEntry(s + 'AVS.svg;',
207					r * 0.175, r * 0.14, '', 'AVS', null, null, this.getTagsForStencil(gn, 'avs', dt).join(' '))
208		];
209
210		this.addPalette('azure2Azure VMware Solution', 'Azure / VMware Solution', false, mxUtils.bind(this, function(content)
211				{
212					for (var i = 0; i < fns.length; i++)
213					{
214						content.appendChild(fns[i](content));
215					}
216		}));
217	};
218
219	Sidebar.prototype.addAzure2BlockchainPalette = function(gn, r, sb, s)
220	{
221		var dt = 'azure blockchain ';
222
223		var fns =
224		[
225			this.createVertexTemplateEntry(s + 'ABS_Member.svg;',
226					r * 0.14, r * 0.1625, '', 'ABS Member', null, null, this.getTagsForStencil(gn, 'abs member', dt).join(' ')),
227			this.createVertexTemplateEntry(s + 'Azure_Blockchain_Service.svg;',
228					r * 0.17, r * 0.17, '', 'Azure Blockchain Service', null, null, this.getTagsForStencil(gn, 'blockchain service', dt).join(' ')),
229			this.createVertexTemplateEntry(s + 'Azure_Token_Service.svg;',
230					r * 0.1475, r * 0.17, '', 'Azure Token Service', null, null, this.getTagsForStencil(gn, 'token service', dt).join(' ')),
231			this.createVertexTemplateEntry(s + 'Consortium.svg;',
232					r * 0.17, r * 0.17, '', 'Consortium', null, null, this.getTagsForStencil(gn, 'consortium', dt).join(' ')),
233			this.createVertexTemplateEntry(s + 'Outbound_Connection.svg;',
234					r * 0.1775, r * 0.16, '', 'Outbound Connection', null, null, this.getTagsForStencil(gn, 'outbound connection', dt).join(' '))
235		];
236
237		this.addPalette('azure2Blockchain', 'Azure / Blockchain', false, mxUtils.bind(this, function(content)
238				{
239					for (var i = 0; i < fns.length; i++)
240					{
241						content.appendChild(fns[i](content));
242					}
243		}));
244	};
245
246	Sidebar.prototype.addAzure2ComputePalette = function(gn, r, sb, s)
247	{
248		var dt = 'azure compute ';
249
250		var fns =
251		[
252			this.createVertexTemplateEntry(s + 'App_Services.svg;',
253					r * 0.16, r * 0.16, '', 'App Services', null, null, this.getTagsForStencil(gn, 'app services', dt).join(' ')),
254			this.createVertexTemplateEntry(s + 'Availability_Sets.svg;',
255					r * 0.17, r * 0.17, '', 'Availability Sets', null, null, this.getTagsForStencil(gn, 'availability sets', dt).join(' ')),
256			this.createVertexTemplateEntry(s + 'Batch_Accounts.svg;',
257					r * 0.17, r * 0.16, '', 'Batch Accounts', null, null, this.getTagsForStencil(gn, 'batch accounts', dt).join(' ')),
258			this.createVertexTemplateEntry(s + 'Cloud_Services_Classic.svg;',
259					r * 0.18, r * 0.13, '', 'Cloud Services (Classic)', null, null, this.getTagsForStencil(gn, 'cloud services classic', dt).join(' ')),
260			this.createVertexTemplateEntry(s + 'Container_Instances.svg;',
261					r * 0.16, r * 0.17, '', 'Container Instances', null, null, this.getTagsForStencil(gn, 'container instances', dt).join(' ')),
262			this.createVertexTemplateEntry(s + 'Container_Services_Deprecated.svg;',
263					r * 0.17, r * 0.15, '', 'Container Services Deprecated', null, null, this.getTagsForStencil(gn, 'container services deprecated', dt).join(' ')),
264			this.createVertexTemplateEntry(s + 'Disk_Encryption_Sets.svg;',
265					r * 0.17, r * 0.17, '', 'Disk Encryption Sets', null, null, this.getTagsForStencil(gn, 'disk encryption sets', dt).join(' ')),
266			this.createVertexTemplateEntry(s + 'Disks.svg;',
267					r * 0.1425, r * 0.14, '', 'Disks', null, null, this.getTagsForStencil(gn, 'disks', dt).join(' ')),
268			this.createVertexTemplateEntry(s + 'Disks_Classic.svg;',
269					r * 0.1425, r * 0.14, '', 'Disks (Classic)', null, null, this.getTagsForStencil(gn, 'disks classic', dt).join(' ')),
270			this.createVertexTemplateEntry(s + 'Disks_Snapshots.svg;',
271					r * 0.17, r * 0.1775, '', 'Disks Snapshots', null, null, this.getTagsForStencil(gn, 'disks snapshots', dt).join(' ')),
272			this.createVertexTemplateEntry(s + 'Function_Apps.svg;',
273					r * 0.17, r * 0.15, '', 'Function Apps', null, null, this.getTagsForStencil(gn, 'function apps', dt).join(' ')),
274			this.createVertexTemplateEntry(s + 'Image_Definitions.svg;',
275					r * 0.165, r * 0.16, '', 'Image Definitions', null, null, this.getTagsForStencil(gn, 'image definitions', dt).join(' ')),
276			this.createVertexTemplateEntry(s + 'Image_Versions.svg;',
277					r * 0.1675, r * 0.16, '', 'Image Versions', null, null, this.getTagsForStencil(gn, 'image versions', dt).join(' ')),
278			this.createVertexTemplateEntry(s + 'Images.svg;',
279					r * 0.1725, r * 0.16, '', 'Images', null, null, this.getTagsForStencil(gn, 'images', dt).join(' ')),
280			this.createVertexTemplateEntry(s + 'Kubernetes_Services.svg;',
281					r * 0.17, r * 0.15, '', 'Kubernetes Services', null, null, this.getTagsForStencil(gn, 'kubernetes services', dt).join(' ')),
282			this.createVertexTemplateEntry(s + 'Mesh_Applications.svg;',
283					r * 0.17, r * 0.17, '', 'Mesh Applications', null, null, this.getTagsForStencil(gn, 'mesh applications', dt).join(' ')),
284			this.createVertexTemplateEntry(s + 'OS_Images_Classic.svg;',
285					r * 0.1725, r * 0.16, '', 'OS Images (Classic)', null, null, this.getTagsForStencil(gn, 'os images classic', dt).join(' ')),
286			this.createVertexTemplateEntry(s + 'Service_Fabric_Clusters.svg;',
287					r * 0.1675, r * 0.16, '', 'Service Fabric Clusters', null, null, this.getTagsForStencil(gn, 'service fabric clusters', dt).join(' ')),
288			this.createVertexTemplateEntry(s + 'Shared_Image_Galleries.svg;',
289					r * 0.16, r * 0.16, '', 'Shared Image Galleries', null, null, this.getTagsForStencil(gn, 'shared image galleries', dt).join(' ')),
290			this.createVertexTemplateEntry(s + 'Azure_Spring_Cloud.svg;',
291					r * 0.17, r * 0.16, '', 'Spring Cloud', null, null, this.getTagsForStencil(gn, 'azure spring cloud', dt).join(' ')),
292			this.createVertexTemplateEntry(s + 'Virtual_Machine.svg;',
293					r * 0.1725, r * 0.16, '', 'Virtual Machine', null, null, this.getTagsForStencil(gn, 'virtual machine', dt).join(' ')),
294			this.createVertexTemplateEntry(s + 'Virtual_Machines_Classic.svg;',
295					r * 0.1725, r * 0.16, '', 'Virtual Machines (Classic)', null, null, this.getTagsForStencil(gn, 'virtual machines classic', dt).join(' ')),
296			this.createVertexTemplateEntry(s + 'VM_Images_Classic.svg;',
297					r * 0.1725, r * 0.16, '', 'VM Images (Classic)', null, null, this.getTagsForStencil(gn, 'vm images classic', dt).join(' ')),
298			this.createVertexTemplateEntry(s + 'VM_Scale_Sets.svg;',
299					r * 0.17, r * 0.17, '', 'VM Scale Sets', null, null, this.getTagsForStencil(gn, 'vm scale sets', dt).join(' ')),
300			this.createVertexTemplateEntry(s + 'Workspaces.svg;',
301					r * 0.1625, r * 0.14, '', 'Workspaces', null, null, this.getTagsForStencil(gn, 'workspaces', dt).join(' '))
302		];
303
304		this.addPalette('azure2Compute', 'Azure / Compute', false, mxUtils.bind(this, function(content)
305				{
306					for (var i = 0; i < fns.length; i++)
307					{
308						content.appendChild(fns[i](content));
309					}
310		}));
311	};
312
313	Sidebar.prototype.addAzure2ContainersPalette = function(gn, r, sb, s)
314	{
315		var dt = 'azure containers ';
316
317		var fns =
318		[
319			this.createVertexTemplateEntry(s + 'App_Services.svg;',
320					r * 0.16, r * 0.16, '', 'App Services', null, null, this.getTagsForStencil(gn, 'app services', dt).join(' ')),
321			this.createVertexTemplateEntry(s + 'Batch_Accounts.svg;',
322					r * 0.17, r * 0.16, '', 'Batch Accounts', null, null, this.getTagsForStencil(gn, 'batch accounts', dt).join(' ')),
323			this.createVertexTemplateEntry(s + 'Container_Instances.svg;',
324					r * 0.16, r * 0.1725, '', 'Container Instances', null, null, this.getTagsForStencil(gn, 'container instances', dt).join(' ')),
325			this.createVertexTemplateEntry(s + 'Container_Registries.svg;',
326					r * 0.17, r * 0.1525, '', 'Container Registries', null, null, this.getTagsForStencil(gn, 'container registries', dt).join(' ')),
327			this.createVertexTemplateEntry(s + 'Kubernetes_Services.svg;',
328					r * 0.17, r * 0.15, '', 'Kubernetes Services', null, null, this.getTagsForStencil(gn, 'kubernetes services', dt).join(' ')),
329			this.createVertexTemplateEntry(s + 'Service_Fabric_Clusters.svg;',
330					r * 0.1675, r * 0.16, '', 'Service Fabric Clusters', null, null, this.getTagsForStencil(gn, 'service fabric clusters', dt).join(' '))
331		];
332
333		this.addPalette('azure2Containers', 'Azure / Containers', false, mxUtils.bind(this, function(content)
334				{
335					for (var i = 0; i < fns.length; i++)
336					{
337						content.appendChild(fns[i](content));
338					}
339		}));
340	};
341
342	Sidebar.prototype.addAzure2CXPPalette = function(gn, r, sb, s)
343	{
344		var dt = 'azure cxp ';
345
346		var fns =
347		[
348			this.createVertexTemplateEntry(s + 'Elixir.svg;',
349					r * 0.1225, r * 0.17, '', 'Elixir', null, null, this.getTagsForStencil(gn, 'elixir', dt).join(' ')),
350			this.createVertexTemplateEntry(s + 'Elixir_Purple.svg;',
351					r * 0.1225, r * 0.17, '', 'Elixir Purple', null, null, this.getTagsForStencil(gn, 'elixir purple', dt).join(' '))
352		];
353
354		this.addPalette('azure2CXP', 'Azure / CXP', false, mxUtils.bind(this, function(content)
355				{
356					for (var i = 0; i < fns.length; i++)
357					{
358						content.appendChild(fns[i](content));
359					}
360		}));
361	};
362
363	Sidebar.prototype.addAzure2DatabasesPalette = function(gn, r, sb, s)
364	{
365		var dt = 'azure database db ';
366
367		var fns =
368		[
369			this.createVertexTemplateEntry(s + 'Azure_Cosmos_DB.svg;',
370					r * 0.16, r * 0.16, '', 'Azure Cosmos DB', null, null, this.getTagsForStencil(gn, 'cosmos', dt).join(' ')),
371			this.createVertexTemplateEntry(s + 'Azure_Data_Explorer_Clusters.svg;',
372					r * 0.17, r * 0.17, '', 'Azure Data Explorer Clusters', null, null, this.getTagsForStencil(gn, 'data explorer clusters', dt).join(' ')),
373			this.createVertexTemplateEntry(s + 'Azure_Database_MariaDB_Server.svg;',
374					r * 0.12, r * 0.16, '', 'Azure Database MariaDB Server', null, null, this.getTagsForStencil(gn, 'mariadb server', dt).join(' ')),
375			this.createVertexTemplateEntry(s + 'Azure_Database_Migration_Services.svg;',
376					r * 0.16, r * 0.1725, '', 'Azure Database Migration Services', null, null, this.getTagsForStencil(gn, 'migration services', dt).join(' ')),
377			this.createVertexTemplateEntry(s + 'Azure_Database_MySQL_Server.svg;',
378					r * 0.12, r * 0.16, '', 'Azure Database MySQL Server', null, null, this.getTagsForStencil(gn, 'mysql my sql server', dt).join(' ')),
379			this.createVertexTemplateEntry(s + 'Azure_Database_PostgreSQL_Server.svg;',
380					r * 0.12, r * 0.16, '', 'Azure Database PostgreSQL Server', null, null, this.getTagsForStencil(gn, 'postgresql sql server', dt).join(' ')),
381			this.createVertexTemplateEntry(s + 'Azure_SQL.svg;',
382					r * 0.16, r * 0.115, '', 'Azure SQL', null, null, this.getTagsForStencil(gn, 'sql', dt).join(' ')),
383			this.createVertexTemplateEntry(s + 'Azure_SQL_Server_Stretch_Databases.svg;',
384					r * 0.16, r * 0.1625, '', 'Azure SQL Server Stretch Databases', null, null, this.getTagsForStencil(gn, 'sql server stretch', dt).join(' ')),
385			this.createVertexTemplateEntry(s + 'Azure_SQL_VM.svg;',
386					r * 0.16, r * 0.15, '', 'Azure SQL VM', null, null, this.getTagsForStencil(gn, 'sql vm virtual machine', dt).join(' ')),
387			this.createVertexTemplateEntry(s + 'Azure_Synapse_Analytics.svg;',
388					r * 0.15, r * 0.1725, '', 'Azure Synapse Analytics', null, null, this.getTagsForStencil(gn, 'synapse analytics', dt).join(' ')),
389			this.createVertexTemplateEntry(s + 'Cache_Redis.svg;',
390					r * 0.16, r * 0.13, '', 'Cache Redis', null, null, this.getTagsForStencil(gn, 'cache redis', dt).join(' ')),
391			this.createVertexTemplateEntry(s + 'Data_Factory.svg;',
392					r * 0.17, r * 0.17, '', 'Data Factory', null, null, this.getTagsForStencil(gn, 'data factory', dt).join(' ')),
393			this.createVertexTemplateEntry(s + 'Elastic_Job_Agents.svg;',
394					r * 0.16, r * 0.16, '', 'Elastic Job Agents', null, null, this.getTagsForStencil(gn, 'elastic job agents', dt).join(' ')),
395			this.createVertexTemplateEntry(s + 'Instance_Pools.svg;',
396					r * 0.1625, r * 0.16, '', 'Instance Pools', null, null, this.getTagsForStencil(gn, 'instance pools', dt).join(' ')),
397			this.createVertexTemplateEntry(s + 'Managed_Database.svg;',
398					r * 0.17, r * 0.16, '', 'Managed Database', null, null, this.getTagsForStencil(gn, 'managed', dt).join(' ')),
399			this.createVertexTemplateEntry(s + 'SQL_Data_Warehouses.svg;',
400					r * 0.16, r * 0.1625, '', 'SQL Data Warehouses', null, null, this.getTagsForStencil(gn, 'sql data warehouses', dt).join(' ')),
401			this.createVertexTemplateEntry(s + 'SQL_Database.svg;',
402					r * 0.12, r * 0.16, '', 'SQL Database', null, null, this.getTagsForStencil(gn, 'sql', dt).join(' ')),
403			this.createVertexTemplateEntry(s + 'SQL_Elastic_Pools.svg;',
404					r * 0.17, r * 0.17, '', 'SQL Elastic Pools', null, null, this.getTagsForStencil(gn, 'sql elastic pools', dt).join(' ')),
405			this.createVertexTemplateEntry(s + 'SQL_Managed_Instance.svg;',
406					r * 0.1625, r * 0.16, '', 'SQL Managed Instance', null, null, this.getTagsForStencil(gn, 'sql managed instance', dt).join(' ')),
407			this.createVertexTemplateEntry(s + 'SQL_Server.svg;',
408					r * 0.17, r * 0.17, '', 'SQL Server', null, null, this.getTagsForStencil(gn, 'sql server', dt).join(' ')),
409			this.createVertexTemplateEntry(s + 'SSIS_Lift_And_Shift_IR.svg;',
410					r * 0.155, r * 0.17, '', 'SSIS Lift and Shift IR', null, null, this.getTagsForStencil(gn, 'ssis lift and shift ir', dt).join(' ')),
411			this.createVertexTemplateEntry(s + 'Virtual_Clusters.svg;',
412					r * 0.165, r * 0.16, '', 'Virtual Clusters', null, null, this.getTagsForStencil(gn, 'virtual clusters', dt).join(' '))
413		];
414
415		this.addPalette('azure2Databases', 'Azure / Databases', false, mxUtils.bind(this, function(content)
416				{
417					for (var i = 0; i < fns.length; i++)
418					{
419						content.appendChild(fns[i](content));
420					}
421		}));
422	};
423
424	Sidebar.prototype.addAzure2DevOpsPalette = function(gn, r, sb, s)
425	{
426		var dt = 'azure devops ';
427
428		var fns =
429		[
430			this.createVertexTemplateEntry(s + 'Application_Insights.svg;',
431					r * 0.11, r * 0.1575, '', 'Application Insights', null, null, this.getTagsForStencil(gn, 'application insights', dt).join(' ')),
432			this.createVertexTemplateEntry(s + 'Azure_DevOps.svg;',
433					r * 0.16, r * 0.16, '', 'Azure DevOps', null, null, this.getTagsForStencil(gn, 'devops', dt).join(' ')),
434			this.createVertexTemplateEntry(s + 'DevTest_Labs.svg;',
435					r * 0.165, r * 0.16, '', 'DevTest Labs', null, null, this.getTagsForStencil(gn, 'devtest labs', dt).join(' ')),
436			this.createVertexTemplateEntry(s + 'Lab_Services.svg;',
437					r * 0.165, r * 0.16, '', 'Lab Services', null, null, this.getTagsForStencil(gn, 'lab services', dt).join(' '))
438		];
439
440		this.addPalette('azure2DevOps', 'Azure / DevOps', false, mxUtils.bind(this, function(content)
441				{
442					for (var i = 0; i < fns.length; i++)
443					{
444						content.appendChild(fns[i](content));
445					}
446		}));
447	};
448
449	Sidebar.prototype.addAzure2GeneralPalette = function(gn, r, sb, s)
450	{
451		var dt = 'azure general ';
452
453		var fns =
454		[
455			this.createVertexTemplateEntry(s + 'All_Resources.svg;',
456					r * 0.16, r * 0.16, '', 'All Resources', null, null, this.getTagsForStencil(gn, 'all resources', dt).join(' ')),
457			this.createVertexTemplateEntry(s + 'Backlog.svg;',
458					r * 0.17, r * 0.15, '', 'Backlog', null, null, this.getTagsForStencil(gn, 'backlog', dt).join(' ')),
459			this.createVertexTemplateEntry(s + 'Biz_Talk.svg;',
460					r * 0.1725, r * 0.16, '', 'Biz Talk', null, null, this.getTagsForStencil(gn, 'biz talk', dt).join(' ')),
461			this.createVertexTemplateEntry(s + 'Blob_Block.svg;',
462					r * 0.1625, r * 0.13, '', 'Blob Block', null, null, this.getTagsForStencil(gn, 'blob block', dt).join(' ')),
463			this.createVertexTemplateEntry(s + 'Blob_Page.svg;',
464					r * 0.1625, r * 0.13, '', 'Blob Page', null, null, this.getTagsForStencil(gn, 'blob page', dt).join(' ')),
465			this.createVertexTemplateEntry(s + 'Branch.svg;',
466					r * 0.18, r * 0.18, '', 'Branch', null, null, this.getTagsForStencil(gn, 'branch', dt).join(' ')),
467			this.createVertexTemplateEntry(s + 'Browser.svg;',
468					r * 0.1625, r * 0.13, '', 'Browser', null, null, this.getTagsForStencil(gn, 'browser', dt).join(' ')),
469			this.createVertexTemplateEntry(s + 'Bug.svg;',
470					r * 0.1475, r * 0.16, '', 'Bug', null, null, this.getTagsForStencil(gn, 'bug', dt).join(' ')),
471			this.createVertexTemplateEntry(s + 'Builds.svg;',
472					r * 0.16, r * 0.16, '', 'Builds', null, null, this.getTagsForStencil(gn, 'builds', dt).join(' ')),
473			this.createVertexTemplateEntry(s + 'Cache.svg;',
474					r * 0.16, r * 0.16, '', 'Cache', null, null, this.getTagsForStencil(gn, 'cache', dt).join(' ')),
475			this.createVertexTemplateEntry(s + 'Code.svg;',
476					r * 0.16, r * 0.13, '', 'Code', null, null, this.getTagsForStencil(gn, 'code', dt).join(' ')),
477			this.createVertexTemplateEntry(s + 'Commit.svg;',
478					r * 0.18, r * 0.17, '', 'Commit', null, null, this.getTagsForStencil(gn, 'commit', dt).join(' ')),
479			this.createVertexTemplateEntry(s + 'Controls.svg;',
480					r * 0.14, r * 0.1725, '', 'Controls', null, null, this.getTagsForStencil(gn, 'controls', dt).join(' ')),
481			this.createVertexTemplateEntry(s + 'Controls_Horizontal.svg;',
482					r * 0.1725, r * 0.14, '', 'Controls Horizontal', null, null, this.getTagsForStencil(gn, 'controls horizontal', dt).join(' ')),
483			this.createVertexTemplateEntry(s + 'Cost_Alerts.svg;',
484					r * 0.1675, r * 0.14, '', 'Cost Alerts', null, null, this.getTagsForStencil(gn, 'cost alerts', dt).join(' ')),
485			this.createVertexTemplateEntry(s + 'Cost_Analysis.svg;',
486					r * 0.15, r * 0.175, '', 'Cost Analysis', null, null, this.getTagsForStencil(gn, 'cost analysis', dt).join(' ')),
487			this.createVertexTemplateEntry(s + 'Cost_Budgets.svg;',
488					r * 0.1675, r * 0.17, '', 'Cost Budgets', null, null, this.getTagsForStencil(gn, 'cost budgets', dt).join(' ')),
489			this.createVertexTemplateEntry(s + 'Cost_Management.svg;',
490					r * 0.1675, r * 0.15, '', 'Cost Management', null, null, this.getTagsForStencil(gn, 'cost management', dt).join(' ')),
491			this.createVertexTemplateEntry(s + 'Cost_Management_and_Billing.svg;',
492					r * 0.17, r * 0.17, '', 'Cost Management and Billing', null, null, this.getTagsForStencil(gn, 'cost management and billing', dt).join(' ')),
493			this.createVertexTemplateEntry(s + 'Counter.svg;',
494					r * 0.16, r * 0.13, '', 'Counter', null, null, this.getTagsForStencil(gn, 'counter', dt).join(' ')),
495			this.createVertexTemplateEntry(s + 'Cubes.svg;',
496					r * 0.1675, r * 0.17, '', 'Cubes', null, null, this.getTagsForStencil(gn, 'cubes', dt).join(' ')),
497			this.createVertexTemplateEntry(s + 'Dashboard.svg;',
498					r * 0.17, r * 0.12, '', 'Dashboard', null, null, this.getTagsForStencil(gn, 'dashboard', dt).join(' ')),
499			this.createVertexTemplateEntry(s + 'Dev_Console.svg;',
500					r * 0.1625, r * 0.13, '', 'Dev Console', null, null, this.getTagsForStencil(gn, 'dev console', dt).join(' ')),
501			this.createVertexTemplateEntry(s + 'Download.svg;',
502					r * 0.16, r * 0.1675, '', 'Download', null, null, this.getTagsForStencil(gn, 'download', dt).join(' ')),
503			this.createVertexTemplateEntry(s + 'Error.svg;',
504					r * 0.1775, r * 0.17, '', 'Error', null, null, this.getTagsForStencil(gn, 'error', dt).join(' ')),
505			this.createVertexTemplateEntry(s + 'Extensions.svg;',
506					r * 0.1625, r * 0.16, '', 'Extensions', null, null, this.getTagsForStencil(gn, 'extensions', dt).join(' ')),
507			this.createVertexTemplateEntry(s + 'File.svg;',
508					r * 0.14, r * 0.1725, '', 'File', null, null, this.getTagsForStencil(gn, 'file', dt).join(' ')),
509			this.createVertexTemplateEntry(s + 'Files.svg;',
510					r * 0.16, r * 0.175, '', 'Files', null, null, this.getTagsForStencil(gn, 'files', dt).join(' ')),
511			this.createVertexTemplateEntry(s + 'Folder_Blank.svg;',
512					r * 0.1725, r * 0.14, '', 'Folder Blank', null, null, this.getTagsForStencil(gn, 'folder blank', dt).join(' ')),
513			this.createVertexTemplateEntry(s + 'Folder_Website.svg;',
514					r * 0.17, r * 0.14, '', 'Folder Website', null, null, this.getTagsForStencil(gn, 'folder website', dt).join(' ')),
515			this.createVertexTemplateEntry(s + 'Free_Services.svg;',
516					r * 0.17, r * 0.1575, '', 'Free Services', null, null, this.getTagsForStencil(gn, 'free services', dt).join(' ')),
517			this.createVertexTemplateEntry(s + 'FTP.svg;',
518					r * 0.15, r * 0.12, '', 'FTP', null, null, this.getTagsForStencil(gn, 'ftp file transfer protocol', dt).join(' ')),
519			this.createVertexTemplateEntry(s + 'Gear.svg;',
520					r * 0.16, r * 0.16, '', 'Gear', null, null, this.getTagsForStencil(gn, 'gear', dt).join(' ')),
521			this.createVertexTemplateEntry(s + 'Globe.svg;',
522					r * 0.14, r * 0.165, '', 'Globe', null, null, this.getTagsForStencil(gn, 'globe', dt).join(' ')),
523			this.createVertexTemplateEntry(s + 'Globe_Error.svg;',
524					r * 0.14, r * 0.165, '', 'Globe Error', null, null, this.getTagsForStencil(gn, 'globe error', dt).join(' ')),
525			this.createVertexTemplateEntry(s + 'Globe_Success.svg;',
526					r * 0.14, r * 0.165, '', 'Globe Success', null, null, this.getTagsForStencil(gn, 'globe success', dt).join(' ')),
527			this.createVertexTemplateEntry(s + 'Globe_Warning.svg;',
528					r * 0.14, r * 0.165, '', 'Globe Warning', null, null, this.getTagsForStencil(gn, 'globe warning', dt).join(' ')),
529			this.createVertexTemplateEntry(s + 'Guide.svg;',
530					r * 0.17, r * 0.17, '', 'Guide', null, null, this.getTagsForStencil(gn, 'guide', dt).join(' ')),
531			this.createVertexTemplateEntry(s + 'Heart.svg;',
532					r * 0.16, r * 0.15, '', 'Heart', null, null, this.getTagsForStencil(gn, 'heart', dt).join(' ')),
533			this.createVertexTemplateEntry(s + 'Help_and_Support.svg;',
534					r * 0.14, r * 0.1725, '', 'Help and Support', null, null, this.getTagsForStencil(gn, 'help support', dt).join(' ')),
535			this.createVertexTemplateEntry(s + 'Image.svg;',
536					r * 0.16, r * 0.11, '', 'Image', null, null, this.getTagsForStencil(gn, 'image', dt).join(' ')),
537			this.createVertexTemplateEntry(s + 'Information.svg;',
538					r * 0.16, r * 0.16, '', 'Information', null, null, this.getTagsForStencil(gn, 'information', dt).join(' ')),
539			this.createVertexTemplateEntry(s + 'Input_Output.svg;',
540					r * 0.16, r * 0.1375, '', 'Input Output', null, null, this.getTagsForStencil(gn, 'input output', dt).join(' ')),
541			this.createVertexTemplateEntry(s + 'Journey_Hub.svg;',
542					r * 0.15, r * 0.1575, '', 'Journey Hub', null, null, this.getTagsForStencil(gn, 'journey hub', dt).join(' ')),
543			this.createVertexTemplateEntry(s + 'Launch_Portal.svg;',
544					r * 0.17, r * 0.1675, '', 'Launch Portal', null, null, this.getTagsForStencil(gn, 'launch portal', dt).join(' ')),
545			this.createVertexTemplateEntry(s + 'Learn.svg;',
546					r * 0.12, r * 0.175, '', 'Learn', null, null, this.getTagsForStencil(gn, 'learn', dt).join(' ')),
547			this.createVertexTemplateEntry(s + 'Load_Test.svg;',
548					r * 0.17, r * 0.165, '', 'Load Test', null, null, this.getTagsForStencil(gn, 'load test', dt).join(' ')),
549			this.createVertexTemplateEntry(s + 'Location.svg;',
550					r * 0.10, r * 0.1775, '', 'Location', null, null, this.getTagsForStencil(gn, 'location', dt).join(' ')),
551			this.createVertexTemplateEntry(s + 'Log_Streaming.svg;',
552					r * 0.14, r * 0.1675, '', 'Log Streaming', null, null, this.getTagsForStencil(gn, 'log streaming', dt).join(' ')),
553			this.createVertexTemplateEntry(s + 'Management_Groups.svg;',
554					r * 0.165, r * 0.16, '', 'Management Groups', null, null, this.getTagsForStencil(gn, 'management groups', dt).join(' ')),
555			this.createVertexTemplateEntry(s + 'Management_Portal.svg;',
556					r * 0.15, r * 0.12, '', 'Management Portal', null, null, this.getTagsForStencil(gn, 'management portal', dt).join(' ')),
557			this.createVertexTemplateEntry(s + 'Marketplace.svg;',
558					r * 0.14, r * 0.16, '', 'Marketplace', null, null, this.getTagsForStencil(gn, 'marketplace', dt).join(' ')),
559			this.createVertexTemplateEntry(s + 'Media.svg;',
560					r * 0.17, r * 0.17, '', 'Media', null, null, this.getTagsForStencil(gn, 'media', dt).join(' ')),
561			this.createVertexTemplateEntry(s + 'Media_File.svg;',
562					r * 0.13, r * 0.16, '', 'Media File', null, null, this.getTagsForStencil(gn, 'media file', dt).join(' ')),
563			this.createVertexTemplateEntry(s + 'Mobile.svg;',
564					r * 0.1, r * 0.1675, '', 'Mobile', null, null, this.getTagsForStencil(gn, 'mobile', dt).join(' ')),
565			this.createVertexTemplateEntry(s + 'Mobile_Engagement.svg;',
566					r * 0.1, r * 0.1675, '', 'Mobile Engagement', null, null, this.getTagsForStencil(gn, 'mobile engagement', dt).join(' ')),
567			this.createVertexTemplateEntry(s + 'Module.svg;',
568					r * 0.16, r * 0.16, '', 'Module', null, null, this.getTagsForStencil(gn, 'module', dt).join(' ')),
569			this.createVertexTemplateEntry(s + 'Power.svg;',
570					r * 0.11, r * 0.17, '', 'Power', null, null, this.getTagsForStencil(gn, 'power', dt).join(' ')),
571			this.createVertexTemplateEntry(s + 'Power_Up.svg;',
572					r * 0.17, r * 0.17, '', 'Power Up', null, null, this.getTagsForStencil(gn, 'power up', dt).join(' ')),
573			this.createVertexTemplateEntry(s + 'Powershell.svg;',
574					r * 0.1625, r * 0.13, '', 'Powershell', null, null, this.getTagsForStencil(gn, 'powershell', dt).join(' ')),
575			this.createVertexTemplateEntry(s + 'Preview.svg;',
576					r * 0.11, r * 0.16, '', 'Preview', null, null, this.getTagsForStencil(gn, 'preview', dt).join(' ')),
577			this.createVertexTemplateEntry(s + 'Process_Explorer.svg;',
578					r * 0.175, r * 0.17, '', 'Process Explorer', null, null, this.getTagsForStencil(gn, 'process explorer', dt).join(' ')),
579			this.createVertexTemplateEntry(s + 'Production_Ready_Database.svg;',
580					r * 0.12, r * 0.16, '', 'Production Ready Database', null, null, this.getTagsForStencil(gn, 'production ready database', dt).join(' ')),
581			this.createVertexTemplateEntry(s + 'Quickstart_Center.svg;',
582					r * 0.17, r * 0.17, '', 'Quickstart Center', null, null, this.getTagsForStencil(gn, 'quickstart center', dt).join(' ')),
583			this.createVertexTemplateEntry(s + 'Recent.svg;',
584					r * 0.17, r * 0.17, '', 'Recent', null, null, this.getTagsForStencil(gn, 'recent', dt).join(' ')),
585			this.createVertexTemplateEntry(s + 'Reservations.svg;',
586					r * 0.17, r * 0.17, '', 'Reservations', null, null, this.getTagsForStencil(gn, 'reservations', dt).join(' ')),
587			this.createVertexTemplateEntry(s + 'Resource_Explorer.svg;',
588					r * 0.17, r * 0.14, '', 'Resource Explorer', null, null, this.getTagsForStencil(gn, 'resource exporer', dt).join(' ')),
589			this.createVertexTemplateEntry(s + 'Resource_Group_List.svg;',
590					r * 0.17, r * 0.1675, '', 'Resource Group List', null, null, this.getTagsForStencil(gn, 'resource group list', dt).join(' ')),
591			this.createVertexTemplateEntry(s + 'Resource_Groups.svg;',
592					r * 0.17, r * 0.16, '', 'Resource Groups', null, null, this.getTagsForStencil(gn, 'resource groups', dt).join(' ')),
593			this.createVertexTemplateEntry(s + 'Resource_Linked.svg;',
594					r * 0.18, r * 0.18, '', 'Resource Linked', null, null, this.getTagsForStencil(gn, 'resource linked', dt).join(' ')),
595			this.createVertexTemplateEntry(s + 'Scale.svg;',
596					r * 0.15, r * 0.15, '', 'Scale', null, null, this.getTagsForStencil(gn, 'scale', dt).join(' ')),
597			this.createVertexTemplateEntry(s + 'Scheduler.svg;',
598					r * 0.17, r * 0.17, '', 'Scheduler', null, null, this.getTagsForStencil(gn, 'scheduler', dt).join(' ')),
599			this.createVertexTemplateEntry(s + 'Search.svg;',
600					r * 0.16, r * 0.1625, '', 'Search', null, null, this.getTagsForStencil(gn, 'search', dt).join(' ')),
601			this.createVertexTemplateEntry(s + 'Search_Grid.svg;',
602					r * 0.17, r * 0.1675, '', 'Search Grid', null, null, this.getTagsForStencil(gn, 'search grid', dt).join(' ')),
603			this.createVertexTemplateEntry(s + 'Server_Farm.svg;',
604					r * 0.16, r * 0.16, '', 'Server Farm', null, null, this.getTagsForStencil(gn, 'server farm', dt).join(' ')),
605			this.createVertexTemplateEntry(s + 'Service_Bus.svg;',
606					r * 0.175, r * 0.15, '', 'Service Bus', null, null, this.getTagsForStencil(gn, 'service bus', dt).join(' ')),
607			this.createVertexTemplateEntry(s + 'Service_Health.svg;',
608					r * 0.17, r * 0.16, '', 'Service Health', null, null, this.getTagsForStencil(gn, 'service health', dt).join(' ')),
609			this.createVertexTemplateEntry(s + 'SSD.svg;',
610					r * 0.165, r * 0.15, '', 'SSD', null, null, this.getTagsForStencil(gn, 'ssd solid state drive', dt).join(' ')),
611			this.createVertexTemplateEntry(s + 'Storage_Azure_Files.svg;',
612					r * 0.16, r * 0.13, '', 'Storage Azure Files', null, null, this.getTagsForStencil(gn, 'storage files', dt).join(' ')),
613			this.createVertexTemplateEntry(s + 'Storage_Container.svg;',
614					r * 0.16, r * 0.13, '', 'Storage Container', null, null, this.getTagsForStencil(gn, 'storage container', dt).join(' ')),
615			this.createVertexTemplateEntry(s + 'Storage_Queue.svg;',
616					r * 0.16, r * 0.13, '', 'Storage Queue', null, null, this.getTagsForStencil(gn, 'storage queue', dt).join(' ')),
617			this.createVertexTemplateEntry(s + 'Subscriptions.svg;',
618					r * 0.11, r * 0.1775, '', 'Subscriptions', null, null, this.getTagsForStencil(gn, 'subscriptions', dt).join(' ')),
619			this.createVertexTemplateEntry(s + 'Table.svg;',
620					r * 0.16, r * 0.13, '', 'Table', null, null, this.getTagsForStencil(gn, 'table', dt).join(' ')),
621			this.createVertexTemplateEntry(s + 'Tag.svg;',
622					r * 0.17, r * 0.17, '', 'Tag', null, null, this.getTagsForStencil(gn, 'tag', dt).join(' ')),
623			this.createVertexTemplateEntry(s + 'Tags.svg;',
624					r * 0.15, r * 0.1625, '', 'Tags', null, null, this.getTagsForStencil(gn, 'tags', dt).join(' ')),
625			this.createVertexTemplateEntry(s + 'TFS_VC_Repository.svg;',
626					r * 0.17, r * 0.17, '', 'TFS VC Repository', null, null, this.getTagsForStencil(gn, 'tfs vc repository', dt).join(' ')),
627			this.createVertexTemplateEntry(s + 'Toolbox.svg;',
628					r * 0.16, r * 0.14, '', 'Toolbox', null, null, this.getTagsForStencil(gn, 'toolbox', dt).join(' ')),
629			this.createVertexTemplateEntry(s + 'Versions.svg;',
630					r * 0.155, r * 0.15, '', 'Versions', null, null, this.getTagsForStencil(gn, 'versions', dt).join(' ')),
631			this.createVertexTemplateEntry(s + 'Web_Slots.svg;',
632					r * 0.145, r * 0.16, '', 'Web Slots', null, null, this.getTagsForStencil(gn, 'web slots', dt).join(' ')),
633			this.createVertexTemplateEntry(s + 'Web_Test.svg;',
634					r * 0.18, r * 0.18, '', 'Web Test', null, null, this.getTagsForStencil(gn, 'web test', dt).join(' ')),
635			this.createVertexTemplateEntry(s + 'Website_Power.svg;',
636					r * 0.17, r * 0.17, '', 'Website Power', null, null, this.getTagsForStencil(gn, 'website power', dt).join(' ')),
637			this.createVertexTemplateEntry(s + 'Website_Staging.svg;',
638					r * 0.16, r * 0.175, '', 'Website Staging', null, null, this.getTagsForStencil(gn, 'website staging', dt).join(' ')),
639			this.createVertexTemplateEntry(s + 'Workbooks.svg;',
640					r * 0.15, r * 0.1625, '', 'Workbooks', null, null, this.getTagsForStencil(gn, 'workbooks', dt).join(' ')),
641			this.createVertexTemplateEntry(s + 'Workflow.svg;',
642					r * 0.17, r * 0.175, '', 'Workflow', null, null, this.getTagsForStencil(gn, 'workflow', dt).join(' '))
643		];
644
645		this.addPalette('azure2General', 'Azure / General', false, mxUtils.bind(this, function(content)
646				{
647					for (var i = 0; i < fns.length; i++)
648					{
649						content.appendChild(fns[i](content));
650					}
651		}));
652	};
653
654	Sidebar.prototype.addAzure2IdentityPalette = function(gn, r, sb, s)
655	{
656		var dt = 'azure identity ';
657
658		var fns =
659		[
660			this.createVertexTemplateEntry(s + 'Active_Directory_Connect_Health.svg;',
661					r * 0.1725, r * 0.16, '', 'Active Directory Connect Health', null, null, this.getTagsForStencil(gn, 'active directory connect health', dt).join(' ')),
662			this.createVertexTemplateEntry(s + 'App_Registrations.svg;',
663					r * 0.1575, r * 0.16, '', 'App Registrations', null, null, this.getTagsForStencil(gn, 'app registrations', dt).join(' ')),
664			this.createVertexTemplateEntry(s + 'Azure_Active_Directory.svg;',
665					r * 0.175, r * 0.16, '', 'Azure Active Directory', null, null, this.getTagsForStencil(gn, 'active directory', dt).join(' ')),
666			this.createVertexTemplateEntry(s + 'Azure_AD_B2C.svg;',
667					r * 0.1725, r * 0.16, '', 'Azure AD B2C', null, null, this.getTagsForStencil(gn, 'ad b2c', dt).join(' ')),
668			this.createVertexTemplateEntry(s + 'Azure_AD_Domain_Services.svg;',
669					r * 0.175, r * 0.16, '', 'Azure AD Domain Services', null, null, this.getTagsForStencil(gn, 'ad domain services', dt).join(' ')),
670			this.createVertexTemplateEntry(s + 'Azure_AD_Identity_Protection.svg;',
671					r * 0.17, r * 0.15, '', 'Azure AD Identity Protection', null, null, this.getTagsForStencil(gn, 'ad identity protection', dt).join(' ')),
672			this.createVertexTemplateEntry(s + 'Enterprise_Applications.svg;',
673					r * 0.16, r * 0.16, '', 'Enterprise Applications', null, null, this.getTagsForStencil(gn, 'enterprise applications', dt).join(' ')),
674			this.createVertexTemplateEntry(s + 'Groups.svg;',
675					r * 0.17, r * 0.14, '', 'Groups', null, null, this.getTagsForStencil(gn, 'groups', dt).join(' ')),
676			this.createVertexTemplateEntry(s + 'Identity_Governance.svg;',
677					r * 0.16, r * 0.16, '', 'Identity Governance', null, null, this.getTagsForStencil(gn, 'identity governance', dt).join(' ')),
678			this.createVertexTemplateEntry(s + 'Managed_Identities.svg;',
679					r * 0.17, r * 0.17, '', 'Managed Identities', null, null, this.getTagsForStencil(gn, 'managed identities', dt).join(' ')),
680			this.createVertexTemplateEntry(s + 'Users.svg;',
681					r * 0.16, r * 0.175, '', 'Users', null, null, this.getTagsForStencil(gn, 'users', dt).join(' '))
682		];
683
684		this.addPalette('azure2Identity', 'Azure / Identity', false, mxUtils.bind(this, function(content)
685				{
686					for (var i = 0; i < fns.length; i++)
687					{
688						content.appendChild(fns[i](content));
689					}
690		}));
691	};
692
693	Sidebar.prototype.addAzure2IntegrationPalette = function(gn, r, sb, s)
694	{
695		var dt = 'azure integration ';
696
697		var fns =
698		[
699			this.createVertexTemplateEntry(s + 'Azure_API_for_FHIR.svg;',
700					r * 0.17, r * 0.165, '', 'Azure API for FHIR', null, null, this.getTagsForStencil(gn, 'api application programming interface for fhir', dt).join(' ')),
701			this.createVertexTemplateEntry(s + 'API_Management_Services.svg;',
702					r * 0.1625, r * 0.15, '', 'API Management Services', null, null, this.getTagsForStencil(gn, 'api application programming interface management services', dt).join(' ')),
703			this.createVertexTemplateEntry(s + 'Azure_Data_Catalog.svg;',
704					r * 0.15, r * 0.1675, '', 'Azure Data Catalog', null, null, this.getTagsForStencil(gn, 'data catalog', dt).join(' ')),
705			this.createVertexTemplateEntry(s + 'Event_Grid_Domains.svg;',
706					r * 0.1675, r * 0.15, '', 'Event Grid Domains', null, null, this.getTagsForStencil(gn, 'event grid domains', dt).join(' ')),
707			this.createVertexTemplateEntry(s + 'Event_Grid_Subscriptions.svg;',
708					r * 0.1675, r * 0.15, '', 'Event Grid Subscriptions', null, null, this.getTagsForStencil(gn, 'event grid subscriptions', dt).join(' ')),
709			this.createVertexTemplateEntry(s + 'Event_Grid_Topics.svg;',
710					r * 0.1675, r * 0.15, '', 'Event Grid Topics', null, null, this.getTagsForStencil(gn, 'event grid topics', dt).join(' ')),
711			this.createVertexTemplateEntry(s + 'Integration_Accounts.svg;',
712					r * 0.16, r * 0.16, '', 'Integration Accounts', null, null, this.getTagsForStencil(gn, 'integration accounts', dt).join(' ')),
713			this.createVertexTemplateEntry(s + 'Logic_Apps.svg;',
714					r * 0.1675, r * 0.13, '', 'Logic Apps', null, null, this.getTagsForStencil(gn, 'logic apps', dt).join(' ')),
715			this.createVertexTemplateEntry(s + 'Partner_Topic.svg;',
716					r * 0.17, r * 0.1525, '', 'Partner Topic', null, null, this.getTagsForStencil(gn, 'partner topic', dt).join(' ')),
717			this.createVertexTemplateEntry(s + 'Relays.svg;',
718					r * 0.1675, r * 0.15, '', 'Relays', null, null, this.getTagsForStencil(gn, 'relays', dt).join(' ')),
719			this.createVertexTemplateEntry(s + 'Software_as_a_Service.svg;',
720					r * 0.16, r * 0.1325, '', 'Software as a Service', null, null, this.getTagsForStencil(gn, 'software service', dt).join(' ')),
721			this.createVertexTemplateEntry(s + 'SQL_Data_Warehouses.svg;',
722					r * 0.16, r * 0.1625, '', 'SQL Data Warehouses', null, null, this.getTagsForStencil(gn, 'sql data warehouses', dt).join(' ')),
723			this.createVertexTemplateEntry(s + 'System_Topic.svg;',
724					r * 0.17, r * 0.15, '', 'System Topic', null, null, this.getTagsForStencil(gn, 'system topic', dt).join(' '))
725		];
726
727		this.addPalette('azure2Integration', 'Azure / Integration', false, mxUtils.bind(this, function(content)
728				{
729					for (var i = 0; i < fns.length; i++)
730					{
731						content.appendChild(fns[i](content));
732					}
733		}));
734	};
735
736	Sidebar.prototype.addAzure2InternetOfThingsPalette = function(gn, r, sb, s)
737	{
738		var dt = 'azure iot internet of things ';
739
740		var fns =
741		[
742			this.createVertexTemplateEntry(s + 'Digital_Twins.svg;',
743					r * 0.17, r * 0.1725, '', 'Digital Twins', null, null, this.getTagsForStencil(gn, 'digital twins', dt).join(' ')),
744			this.createVertexTemplateEntry(s + 'Time_Series_Insights_Access_Policies.svg;',
745					r * 0.105, r * 0.17, '', 'Time Series Insights Access Policies', null, null, this.getTagsForStencil(gn, 'time series insights access policies', dt).join(' '))
746		];
747
748		this.addPalette('azure2Internet of Things', 'Azure / Internet of Things', false, mxUtils.bind(this, function(content)
749				{
750					for (var i = 0; i < fns.length; i++)
751					{
752						content.appendChild(fns[i](content));
753					}
754		}));
755	};
756
757	Sidebar.prototype.addAzure2IntunePalette = function(gn, r, sb, s)
758	{
759		var dt = 'azure intune ';
760
761		var fns =
762		[
763			this.createVertexTemplateEntry(s + 'Azure_AD_Roles_and_Administrators.svg;',
764					r * 0.16, r * 0.16, '', 'Azure AD Roles and Administrators', null, null, this.getTagsForStencil(gn, 'ad roles administrators', dt).join(' ')),
765			this.createVertexTemplateEntry(s + 'Device_Security_Apple.svg;',
766					r * 0.17, r * 0.1725, '', 'Device Security Apple', null, null, this.getTagsForStencil(gn, 'device security apple', dt).join(' ')),
767			this.createVertexTemplateEntry(s + 'Device_Security_Google.svg;',
768					r * 0.17, r * 0.1725, '', 'Device Security Google', null, null, this.getTagsForStencil(gn, 'device security google', dt).join(' ')),
769			this.createVertexTemplateEntry(s + 'Device_Security_Windows.svg;',
770					r * 0.17, r * 0.1725, '', 'Device Security Windows', null, null, this.getTagsForStencil(gn, 'device security windows', dt).join(' ')),
771			this.createVertexTemplateEntry(s + 'Intune.svg;',
772					r * 0.17, r * 0.155, '', 'Intune', null, null, this.getTagsForStencil(gn, 'intune', dt).join(' ')),
773			this.createVertexTemplateEntry(s + 'Intune_For_Education.svg;',
774					r * 0.17, r * 0.155, '', 'Intune for Education', null, null, this.getTagsForStencil(gn, 'intune for education', dt).join(' '))
775		];
776
777		this.addPalette('azure2Intune', 'Azure / Intune', false, mxUtils.bind(this, function(content)
778				{
779					for (var i = 0; i < fns.length; i++)
780					{
781						content.appendChild(fns[i](content));
782					}
783		}));
784	};
785
786	Sidebar.prototype.addAzure2IOTPalette = function(gn, r, sb, s)
787	{
788		var dt = 'azure iot internet of things ';
789
790		var fns =
791		[
792			this.createVertexTemplateEntry(s + 'Azure_Maps_Accounts.svg;',
793					r * 0.17, r * 0.17, '', 'Azure Maps Accounts', null, null, this.getTagsForStencil(gn, 'maps accounts', dt).join(' ')),
794			this.createVertexTemplateEntry(s + 'Device_Provisioning_Services.svg;',
795					r * 0.16, r * 0.165, '', 'Device Provisioning Services', null, null, this.getTagsForStencil(gn, 'device provisioning services', dt).join(' ')),
796			this.createVertexTemplateEntry(s + 'Event_Hubs.svg;',
797					r * 0.1675, r * 0.15, '', 'Event Hubs', null, null, this.getTagsForStencil(gn, 'event hubs', dt).join(' ')),
798			this.createVertexTemplateEntry(s + 'Function_Apps.svg;',
799					r * 0.17, r * 0.15, '', 'Function Apps', null, null, this.getTagsForStencil(gn, 'function apps', dt).join(' ')),
800			this.createVertexTemplateEntry(s + 'IoT_Central_Applications.svg;',
801					r * 0.15, r * 0.1725, '', 'IoT Central Applications', null, null, this.getTagsForStencil(gn, 'central applications', dt).join(' ')),
802			this.createVertexTemplateEntry(s + 'IoT_Hub.svg;',
803					r * 0.16, r * 0.16, '', 'IoT Hub', null, null, this.getTagsForStencil(gn, 'roles', dt).join(' ')),
804			this.createVertexTemplateEntry(s + 'Logic_Apps.svg;',
805					r * 0.1675, r * 0.13, '', 'Logic Apps', null, null, this.getTagsForStencil(gn, 'logic apps', dt).join(' ')),
806			this.createVertexTemplateEntry(s + 'Notification_Hubs.svg;',
807					r * 0.1675, r * 0.14, '', 'Notification Hubs', null, null, this.getTagsForStencil(gn, 'notification hubs', dt).join(' ')),
808			this.createVertexTemplateEntry(s + 'Stream_Analytics_Jobs.svg;',
809					r * 0.17, r * 0.145, '', 'Stream Analytics Jobs', null, null, this.getTagsForStencil(gn, 'stream analytics jobs', dt).join(' ')),
810			this.createVertexTemplateEntry(s + 'Time_Series_Insights_Environments.svg;',
811					r * 0.1675, r * 0.17, '', 'Time Series Insights Environments', null, null, this.getTagsForStencil(gn, 'time series insights environments', dt).join(' ')),
812			this.createVertexTemplateEntry(s + 'Time_Series_Insights_Event_Sources.svg;',
813					r * 0.1675, r * 0.17, '', 'Time Series Insights Event Sources', null, null, this.getTagsForStencil(gn, 'time series insights event sources', dt).join(' '))
814		];
815
816		this.addPalette('azure2IoT', 'Azure / IoT', false, mxUtils.bind(this, function(content)
817				{
818					for (var i = 0; i < fns.length; i++)
819					{
820						content.appendChild(fns[i](content));
821					}
822		}));
823	};
824
825	Sidebar.prototype.addAzure2ManagementGovernancePalette = function(gn, r, sb, s)
826	{
827		var dt = 'azure management governance ';
828
829		var fns =
830		[
831			this.createVertexTemplateEntry(s + 'Activity_Log.svg;',
832					r * 0.14, r * 0.1675, '', 'Activity Log', null, null, this.getTagsForStencil(gn, 'activity log', dt).join(' ')),
833			this.createVertexTemplateEntry(s + 'Advisor.svg;',
834					r * 0.165, r * 0.16, '', 'Advisor', null, null, this.getTagsForStencil(gn, 'advisor', dt).join(' ')),
835			this.createVertexTemplateEntry(s + 'Alerts.svg;',
836					r * 0.1675, r * 0.14, '', 'Alerts', null, null, this.getTagsForStencil(gn, 'alerts', dt).join(' ')),
837			this.createVertexTemplateEntry(s + 'Application_Insights.svg;',
838					r * 0.11, r * 0.1575, '', 'Application Insights', null, null, this.getTagsForStencil(gn, 'application insights', dt).join(' ')),
839			this.createVertexTemplateEntry(s + 'Automation_Accounts.svg;',
840					r * 0.17, r * 0.17, '', 'Automation Accounts', null, null, this.getTagsForStencil(gn, 'automation accounts', dt).join(' ')),
841			this.createVertexTemplateEntry(s + 'Azure_Arc.svg;',
842					r * 0.1725, r * 0.13, '', 'Azure Arc', null, null, this.getTagsForStencil(gn, 'arc', dt).join(' ')),
843			this.createVertexTemplateEntry(s + 'Azure_Lighthouse.svg;',
844					r * 0.1475, r * 0.17, '', 'Azure Lighthouse', null, null, this.getTagsForStencil(gn, 'lighthouse', dt).join(' ')),
845			this.createVertexTemplateEntry(s + 'Blueprints.svg;',
846					r * 0.1625, r * 0.16, '', 'Blueprints', null, null, this.getTagsForStencil(gn, 'blueprints', dt).join(' ')),
847			this.createVertexTemplateEntry(s + 'Compliance.svg;',
848					r * 0.13, r * 0.16, '', 'Compliance', null, null, this.getTagsForStencil(gn, 'compliance', dt).join(' ')),
849			this.createVertexTemplateEntry(s + 'Cost_Management_and_Billing.svg;',
850					r * 0.17, r * 0.17, '', 'Cost Management and Billing', null, null, this.getTagsForStencil(gn, 'cost management billing', dt).join(' ')),
851			this.createVertexTemplateEntry(s + 'Diagnostics_Settings.svg;',
852					r * 0.14, r * 0.1675, '', 'Diagnostics Settings', null, null, this.getTagsForStencil(gn, 'diagnostics settings', dt).join(' ')),
853			this.createVertexTemplateEntry(s + 'Education.svg;',
854					r * 0.1675, r * 0.13, '', 'Education', null, null, this.getTagsForStencil(gn, 'education', dt).join(' ')),
855			this.createVertexTemplateEntry(s + 'Log_Analytics_Workspaces.svg;',
856					r * 0.16, r * 0.16, '', 'Log Analytics Workspaces', null, null, this.getTagsForStencil(gn, 'log analytics workspaces', dt).join(' ')),
857			this.createVertexTemplateEntry(s + 'MachinesAzureArc.svg;',
858					r * 0.11, r * 0.17, '', 'MachinesAzureArc', null, null, this.getTagsForStencil(gn, 'machines arc', dt).join(' ')),
859			this.createVertexTemplateEntry(s + 'Managed_Applications_Center.svg;',
860					r * 0.17, r * 0.135, '', 'Managed Applications Center', null, null, this.getTagsForStencil(gn, 'managed applications center', dt).join(' ')),
861			this.createVertexTemplateEntry(s + 'Metrics.svg;',
862					r * 0.15, r * 0.1625, '', 'Metrics', null, null, this.getTagsForStencil(gn, 'metrics', dt).join(' ')),
863			this.createVertexTemplateEntry(s + 'Monitor.svg;',
864					r * 0.16, r * 0.16, '', 'Monitor', null, null, this.getTagsForStencil(gn, 'monitor', dt).join(' ')),
865			this.createVertexTemplateEntry(s + 'My_Customers.svg;',
866					r * 0.1725, r * 0.14, '', 'My Customers', null, null, this.getTagsForStencil(gn, 'my customers', dt).join(' ')),
867			this.createVertexTemplateEntry(s + 'Operation_Log_Classic.svg;',
868					r * 0.14, r * 0.1675, '', 'Operation Log (Classic)', null, null, this.getTagsForStencil(gn, 'operation log classic', dt).join(' ')),
869			this.createVertexTemplateEntry(s + 'Policy.svg;',
870					r * 0.15, r * 0.16, '', 'Policy', null, null, this.getTagsForStencil(gn, 'policy', dt).join(' ')),
871			this.createVertexTemplateEntry(s + 'Recovery_Services_Vaults.svg;',
872					r * 0.1725, r * 0.15, '', 'Recovery Services Vaults', null, null, this.getTagsForStencil(gn, 'recovery services vaults', dt).join(' ')),
873			this.createVertexTemplateEntry(s + 'Resource_Graph_Explorer.svg;',
874					r * 0.1675, r * 0.16, '', 'Resource Graph Explorer', null, null, this.getTagsForStencil(gn, 'resource graph explorer', dt).join(' ')),
875			this.createVertexTemplateEntry(s + 'Service_Providers.svg;',
876					r * 0.165, r * 0.17, '', 'Service Providers', null, null, this.getTagsForStencil(gn, 'service providers', dt).join(' ')),
877			this.createVertexTemplateEntry(s + 'solutions.svg;',
878					r * 0.16, r * 0.16, '', 'Solutions', null, null, this.getTagsForStencil(gn, 'solutions', dt).join(' ')),
879			this.createVertexTemplateEntry(s + 'User_Privacy.svg;',
880					r * 0.16, r * 0.17, '', 'User Privacy', null, null, this.getTagsForStencil(gn, 'user privacy', dt).join(' '))
881		];
882
883		this.addPalette('azure2Management Governance', 'Azure / Management Governance', false, mxUtils.bind(this, function(content)
884				{
885					for (var i = 0; i < fns.length; i++)
886					{
887						content.appendChild(fns[i](content));
888					}
889		}));
890	};
891
892	Sidebar.prototype.addAzure2MigratePalette = function(gn, r, sb, s)
893	{
894		var dt = 'azure migrate ';
895
896		var fns =
897		[
898			this.createVertexTemplateEntry(s + 'Azure_Migrate.svg;',
899					r * 0.18, r * 0.11, '', 'Azure Migrate', null, null, this.getTagsForStencil(gn, 'migrate', dt).join(' ')),
900			this.createVertexTemplateEntry(s + 'Cost_Management_and_Billing.svg;',
901					r * 0.17, r * 0.17, '', 'Cost Management and Billing', null, null, this.getTagsForStencil(gn, 'cost management billing', dt).join(' ')),
902			this.createVertexTemplateEntry(s + 'Data_Box.svg;',
903					r * 0.1775, r * 0.17, '', 'Data Box', null, null, this.getTagsForStencil(gn, 'data box', dt).join(' ')),
904			this.createVertexTemplateEntry(s + 'Data_Box_Edge.svg;',
905					r * 0.1675, r * 0.12, '', 'Data Box Edge', null, null, this.getTagsForStencil(gn, 'data box edge', dt).join(' ')),
906			this.createVertexTemplateEntry(s + 'Recovery_Services_Vaults.svg;',
907					r * 0.1725, r * 0.15, '', 'Recovery Services Vaults', null, null, this.getTagsForStencil(gn, 'recovery services vaults', dt).join(' '))
908		];
909
910		this.addPalette('azure2Migrate', 'Azure / Migrate', false, mxUtils.bind(this, function(content)
911				{
912					for (var i = 0; i < fns.length; i++)
913					{
914						content.appendChild(fns[i](content));
915					}
916		}));
917	};
918
919	Sidebar.prototype.addAzure2MixedRealityPalette = function(gn, r, sb, s)
920	{
921		var dt = 'azure mixed reality ';
922
923		var fns =
924		[
925			this.createVertexTemplateEntry(s + 'Remote_Rendering.svg;',
926					r * 0.17, r * 0.12, '', 'Remote Rendering', null, null, this.getTagsForStencil(gn, 'remote rendering', dt).join(' '))
927		];
928
929		this.addPalette('azure2Mixed Reality', 'Azure / Mixed Reality', false, mxUtils.bind(this, function(content)
930				{
931					for (var i = 0; i < fns.length; i++)
932					{
933						content.appendChild(fns[i](content));
934					}
935		}));
936	};
937
938	Sidebar.prototype.addAzure2MonitorPalette = function(gn, r, sb, s)
939	{
940		var dt = 'azure monitor ';
941
942		var fns =
943		[
944			this.createVertexTemplateEntry(s + 'SAP_Azure_Monitor.svg;',
945					r * 0.175, r * 0.14, '', 'SAP Azure Monitor', null, null, this.getTagsForStencil(gn, 'sap monitor', dt).join(' '))
946		];
947
948		this.addPalette('azure2Monitor', 'Azure / Monitor', false, mxUtils.bind(this, function(content)
949				{
950					for (var i = 0; i < fns.length; i++)
951					{
952						content.appendChild(fns[i](content));
953					}
954		}));
955	};
956
957	Sidebar.prototype.addAzure2NetworkingPalette = function(gn, r, sb, s)
958	{
959		var dt = 'azure network networking ';
960
961		var fns =
962		[
963			this.createVertexTemplateEntry(s + 'Application_Gateways.svg;',
964					r * 0.16, r * 0.16, '', 'Application Gateways', null, null, this.getTagsForStencil(gn, 'application gateways', dt).join(' ')),
965			this.createVertexTemplateEntry(s + 'Azure_Firewall_Manager.svg;',
966					r * 0.175, r * 0.15, '', 'Azure Firewall Manager', null, null, this.getTagsForStencil(gn, 'firewall manager', dt).join(' ')),
967			this.createVertexTemplateEntry(s + 'CDN_Profiles.svg;',
968					r * 0.17, r * 0.1, '', 'CDN Profiles', null, null, this.getTagsForStencil(gn, 'cdn profiles', dt).join(' ')),
969			this.createVertexTemplateEntry(s + 'Connections.svg;',
970					r * 0.17, r * 0.17, '', 'Connections', null, null, this.getTagsForStencil(gn, 'connections', dt).join(' ')),
971			this.createVertexTemplateEntry(s + 'DDoS_Protection_Plans.svg;',
972					r * 0.14, r * 0.17, '', 'DDoS Protection Plans', null, null, this.getTagsForStencil(gn, 'ddos protection plans', dt).join(' ')),
973			this.createVertexTemplateEntry(s + 'DNS_Zones.svg;',
974					r * 0.16, r * 0.16, '', 'DNS Zones', null, null, this.getTagsForStencil(gn, 'dns domain name server zones', dt).join(' ')),
975			this.createVertexTemplateEntry(s + 'ExpressRoute_Circuits.svg;',
976					r * 0.175, r * 0.16, '', 'ExpressRoute Circuits', null, null, this.getTagsForStencil(gn, 'expressroute circuits', dt).join(' ')),
977			this.createVertexTemplateEntry(s + 'Firewalls.svg;',
978					r * 0.1775, r * 0.15, '', 'Firewalls', null, null, this.getTagsForStencil(gn, 'firewalls', dt).join(' ')),
979			this.createVertexTemplateEntry(s + 'Front_Doors.svg;',
980					r * 0.17, r * 0.15, '', 'Front Doors', null, null, this.getTagsForStencil(gn, 'front doors', dt).join(' ')),
981			this.createVertexTemplateEntry(s + 'IP_Groups.svg;',
982					r * 0.1675, r * 0.13, '', 'IP Groups', null, null, this.getTagsForStencil(gn, 'ip internet protocol groups', dt).join(' ')),
983			this.createVertexTemplateEntry(s + 'Load_Balancers.svg;',
984					r * 0.18, r * 0.18, '', 'Load Balancers', null, null, this.getTagsForStencil(gn, 'load balancers', dt).join(' ')),
985			this.createVertexTemplateEntry(s + 'Local_Network_Gateways.svg;',
986					r * 0.17, r * 0.17, '', 'Local Network Gateways', null, null, this.getTagsForStencil(gn, 'local network gateways', dt).join(' ')),
987			this.createVertexTemplateEntry(s + 'NAT.svg;',
988					r * 0.17, r * 0.17, '', 'NAT', null, null, this.getTagsForStencil(gn, 'nat', dt).join(' ')),
989			this.createVertexTemplateEntry(s + 'Network_Interfaces.svg;',
990					r * 0.17, r * 0.15, '', 'Network Interfaces', null, null, this.getTagsForStencil(gn, 'network interfaces', dt).join(' ')),
991			this.createVertexTemplateEntry(s + 'Network_Security_Groups.svg;',
992					r * 0.14, r * 0.17, '', 'Network Security Groups', null, null, this.getTagsForStencil(gn, 'network security groups', dt).join(' ')),
993			this.createVertexTemplateEntry(s + 'Network_Watcher.svg;',
994					r * 0.16, r * 0.16, '', 'Network Watcher', null, null, this.getTagsForStencil(gn, 'network watcher', dt).join(' ')),
995			this.createVertexTemplateEntry(s + 'Private_Endpoint.svg;',
996					r * 0.18, r * 0.165, '', 'Private Endpoint', null, null, this.getTagsForStencil(gn, 'private endpoint', dt).join(' ')),
997			this.createVertexTemplateEntry(s + 'Private_Link.svg;',
998					r * 0.18, r * 0.165, '', 'Private Link', null, null, this.getTagsForStencil(gn, 'private link', dt).join(' ')),
999			this.createVertexTemplateEntry(s + 'Private_Link_Service.svg;',
1000					r * 0.1725, r * 0.1, '', 'Private Link Service', null, null, this.getTagsForStencil(gn, 'private link service', dt).join(' ')),
1001			this.createVertexTemplateEntry(s + 'Proximity_Placement_Groups.svg;',
1002					r * 0.18, r * 0.17, '', 'Proximity Placement Groups', null, null, this.getTagsForStencil(gn, 'proximity placement groups', dt).join(' ')),
1003			this.createVertexTemplateEntry(s + 'Public_IP_Addresses.svg;',
1004					r * 0.1625, r * 0.13, '', 'Public IP Addresses', null, null, this.getTagsForStencil(gn, 'public ip addresses', dt).join(' ')),
1005			this.createVertexTemplateEntry(s + 'Public_IP_Addresses_Classic.svg;',
1006					r * 0.16, r * 0.13, '', 'Public IP Addresses (Classic)', null, null, this.getTagsForStencil(gn, 'public ip internet protocol addresses classic', dt).join(' ')),
1007			this.createVertexTemplateEntry(s + 'Public_IP_Prefixes.svg;',
1008					r * 0.18, r * 0.14, '', 'Public IP Prefixes', null, null, this.getTagsForStencil(gn, 'public ip internet protocol prefixes', dt).join(' ')),
1009			this.createVertexTemplateEntry(s + 'Reserved_IP_Addresses_Classic.svg;',
1010					r * 0.17, r * 0.1375, '', 'Reserved IP Addresses (Classic)', null, null, this.getTagsForStencil(gn, 'reserved ip internet protocol addresses classic', dt).join(' ')),
1011			this.createVertexTemplateEntry(s + 'Route_Filters.svg;',
1012					r * 0.1775, r * 0.11, '', 'Route Filters', null, null, this.getTagsForStencil(gn, 'route filters', dt).join(' ')),
1013			this.createVertexTemplateEntry(s + 'Route_Tables.svg;',
1014					r * 0.16, r * 0.155, '', 'Route Tables', null, null, this.getTagsForStencil(gn, 'route tables', dt).join(' ')),
1015			this.createVertexTemplateEntry(s + 'Service_Endpoint_Policies.svg;',
1016					r * 0.155, r * 0.16, '', 'Service Endpoint Policies', null, null, this.getTagsForStencil(gn, 'service endpoint policies', dt).join(' ')),
1017			this.createVertexTemplateEntry(s + 'Traffic_Manager_Profiles.svg;',
1018					r * 0.17, r * 0.17, '', 'Traffic Manager Profiles', null, null, this.getTagsForStencil(gn, 'traffic manager profiles', dt).join(' ')),
1019			this.createVertexTemplateEntry(s + 'Virtual_Network_Gateways.svg;',
1020					r * 0.13, r * 0.1725, '', 'Virtual Network Gateways', null, null, this.getTagsForStencil(gn, 'virtual network gateways', dt).join(' ')),
1021			this.createVertexTemplateEntry(s + 'Virtual_Networks.svg;',
1022					r * 0.1675, r * 0.1, '', 'Virtual Networks', null, null, this.getTagsForStencil(gn, 'virtual networks', dt).join(' ')),
1023			this.createVertexTemplateEntry(s + 'Virtual_Networks_Classic.svg;',
1024					r * 0.1675, r * 0.1, '', 'Virtual Networks (Classic)', null, null, this.getTagsForStencil(gn, 'virtual networks classic', dt).join(' ')),
1025			this.createVertexTemplateEntry(s + 'Virtual_WANs.svg;',
1026					r * 0.1625, r * 0.16, '', 'Virtual WANs', null, null, this.getTagsForStencil(gn, 'virtual wans wan wide area network', dt).join(' ')),
1027			this.createVertexTemplateEntry(s + 'Web_Application_Firewall_Policies_WAF.svg;',
1028					r * 0.17, r * 0.17, '', 'Web Application Firewall Policies (WAF)', null, null, this.getTagsForStencil(gn, 'web application firewall policies waf', dt).join(' '))
1029		];
1030
1031		this.addPalette('azure2Networking', 'Azure / Networking', false, mxUtils.bind(this, function(content)
1032				{
1033					for (var i = 0; i < fns.length; i++)
1034					{
1035						content.appendChild(fns[i](content));
1036					}
1037		}));
1038	};
1039
1040	Sidebar.prototype.addAzure2OtherPalette = function(gn, r, sb, s)
1041	{
1042		var dt = 'azure other ';
1043
1044		var fns =
1045		[
1046			this.createVertexTemplateEntry(s + 'Azure_Backup_Center.svg;',
1047					r * 0.17, r * 0.155, '', 'Backup Center', null, null, this.getTagsForStencil(gn, 'backup center', dt).join(' ')),
1048			this.createVertexTemplateEntry(s + 'Detonation.svg;',
1049					r * 0.155, r * 0.16, '', 'Detonation', null, null, this.getTagsForStencil(gn, 'detonation', dt).join(' ')),
1050			this.createVertexTemplateEntry(s + 'ExpressRoute_Direct.svg;',
1051					r * 0.17, r * 0.15, '', 'ExpressRoute Direct', null, null, this.getTagsForStencil(gn, 'expressroute express route direct', dt).join(' ')),
1052			this.createVertexTemplateEntry(s + 'Instance_Pools.svg;',
1053					r * 0.1625, r * 0.16, '', 'Instance Pools', null, null, this.getTagsForStencil(gn, 'instance pools', dt).join(' ')),
1054			this.createVertexTemplateEntry(s + 'Internet_Analyzer_Profiles.svg;',
1055					r * 0.17, r * 0.16, '', 'Internet Analyzer Profiles', null, null, this.getTagsForStencil(gn, 'internet analyzer profiles', dt).join(' ')),
1056			this.createVertexTemplateEntry(s + 'Local_Network_Gateways.svg;',
1057					r * 0.17, r * 0.17, '', 'Local Network Gateways', null, null, this.getTagsForStencil(gn, 'local network gateways', dt).join(' ')),
1058			this.createVertexTemplateEntry(s + 'Peering_Service.svg;',
1059					r * 0.17, r * 0.1725, '', 'Peering Service', null, null, this.getTagsForStencil(gn, 'peering service', dt).join(' ')),
1060			this.createVertexTemplateEntry(s + 'Resource_Mover.svg;',
1061					r * 0.14, r * 0.17, '', 'Resource Mover', null, null, this.getTagsForStencil(gn, 'resource mover', dt).join(' ')),
1062			this.createVertexTemplateEntry(s + 'SSH_Keys.svg;',
1063					r * 0.17, r * 0.15, '', 'SSH Keys', null, null, this.getTagsForStencil(gn, 'ssh keys', dt).join(' ')),
1064			this.createVertexTemplateEntry(s + 'Template_Specs.svg;',
1065					r * 0.1425, r * 0.17, '', 'Template Specs', null, null, this.getTagsForStencil(gn, 'template specs', dt).join(' ')),
1066			this.createVertexTemplateEntry(s + 'Universal_Print.svg;',
1067					r * 0.175, r * 0.15, '', 'Universal Print', null, null, this.getTagsForStencil(gn, 'universal print', dt).join(' ')),
1068			this.createVertexTemplateEntry(s + 'Windows_Virtual_Desktop.svg;',
1069					r * 0.17, r * 0.17, '', 'Windows Virtual Desktop', null, null, this.getTagsForStencil(gn, 'windows virtual desktop', dt).join(' '))
1070		];
1071
1072		this.addPalette('azure2Other', 'Azure / Other', false, mxUtils.bind(this, function(content)
1073				{
1074					for (var i = 0; i < fns.length; i++)
1075					{
1076						content.appendChild(fns[i](content));
1077					}
1078		}));
1079	};
1080
1081	Sidebar.prototype.addAzure2PreviewPalette = function(gn, r, sb, s)
1082	{
1083		var dt = 'azure preview ';
1084
1085		var fns =
1086		[
1087			this.createVertexTemplateEntry(s + 'Azure_Cloud_Shell.svg;',
1088					r * 0.17, r * 0.12, '', 'Azure Cloud Shell', null, null, this.getTagsForStencil(gn, 'cloud shell', dt).join(' ')),
1089			this.createVertexTemplateEntry(s + 'Azure_Sphere.svg;',
1090					r * 0.165, r * 0.17, '', 'Azure Sphere', null, null, this.getTagsForStencil(gn, 'sphere', dt).join(' ')),
1091			this.createVertexTemplateEntry(s + 'Azure_Workbooks.svg;',
1092					r * 0.18, r * 0.18, '', 'Azure Workbooks', null, null, this.getTagsForStencil(gn, 'workbooks', dt).join(' ')),
1093			this.createVertexTemplateEntry(s + 'IoT_Edge.svg;',
1094					r * 0.17, r * 0.1675, '', 'IoT Edge', null, null, this.getTagsForStencil(gn, 'iot internet of things edge', dt).join(' ')),
1095			this.createVertexTemplateEntry(s + 'Private_Link_Hub.svg;',
1096					r * 0.15, r * 0.1725, '', 'Private Link Hub', null, null, this.getTagsForStencil(gn, 'private link hub', dt).join(' ')),
1097			this.createVertexTemplateEntry(s + 'RTOS.svg;',
1098					r * 0.17, r * 0.17, '', 'RTOS', null, null, this.getTagsForStencil(gn, 'rtos', dt).join(' ')),
1099			this.createVertexTemplateEntry(s + 'Static_Apps.svg;',
1100					r * 0.175, r * 0.14, '', 'Static Apps', null, null, this.getTagsForStencil(gn, 'static apps', dt).join(' ')),
1101			this.createVertexTemplateEntry(s + 'Time_Series_Data_Sets.svg;',
1102					r * 0.12, r * 0.16, '', 'Time Series Data Sets', null, null, this.getTagsForStencil(gn, 'time series data sets', dt).join(' ')),
1103			this.createVertexTemplateEntry(s + 'Web_Environment.svg;',
1104					r * 0.16, r * 0.165, '', 'Web Environment', null, null, this.getTagsForStencil(gn, 'web environment', dt).join(' '))
1105		];
1106
1107		this.addPalette('azure2Preview', 'Azure / Preview', false, mxUtils.bind(this, function(content)
1108				{
1109					for (var i = 0; i < fns.length; i++)
1110					{
1111						content.appendChild(fns[i](content));
1112					}
1113		}));
1114	};
1115
1116	Sidebar.prototype.addAzure2SecurityPalette = function(gn, r, sb, s)
1117	{
1118		var dt = 'azure security ';
1119
1120		var fns =
1121		[
1122			this.createVertexTemplateEntry(s + 'Application_Security_Groups.svg;',
1123					r * 0.14, r * 0.17, '', 'Application Security Groups', null, null, this.getTagsForStencil(gn, 'application security groups', dt).join(' ')),
1124			this.createVertexTemplateEntry(s + 'Azure_Defender.svg;',
1125					r * 0.14, r * 0.17, '', 'Azure Defender', null, null, this.getTagsForStencil(gn, 'defender', dt).join(' ')),
1126			this.createVertexTemplateEntry(s + 'Azure_Sentinel.svg;',
1127					r * 0.14, r * 0.17, '', 'Azure Sentinel', null, null, this.getTagsForStencil(gn, 'sentinel', dt).join(' ')),
1128			this.createVertexTemplateEntry(s + 'Conditional_Access.svg;',
1129					r * 0.14, r * 0.17, '', 'Conditional Access', null, null, this.getTagsForStencil(gn, 'conditional access', dt).join(' ')),
1130			this.createVertexTemplateEntry(s + 'ExtendedSecurityUpdates.svg;',
1131					r * 0.16, r * 0.175, '', 'Extended Security Updates', null, null, this.getTagsForStencil(gn, 'extended security updates', dt).join(' ')),
1132			this.createVertexTemplateEntry(s + 'Key_Vaults.svg;',
1133					r * 0.17, r * 0.17, '', 'Key Vaults', null, null, this.getTagsForStencil(gn, 'key vaults', dt).join(' ')),
1134			this.createVertexTemplateEntry(s + 'Keys.svg;',
1135					r * 0.18, r * 0.19, '', 'Keys', null, null, this.getTagsForStencil(gn, 'keys', dt).join(' ')),
1136			this.createVertexTemplateEntry(s + 'Security_Center.svg;',
1137					r * 0.14, r * 0.17, '', 'Security Center', null, null, this.getTagsForStencil(gn, 'security center', dt).join(' '))
1138		];
1139
1140		this.addPalette('azure2Security', 'Azure / Security', false, mxUtils.bind(this, function(content)
1141				{
1142					for (var i = 0; i < fns.length; i++)
1143					{
1144						content.appendChild(fns[i](content));
1145					}
1146		}));
1147	};
1148
1149	Sidebar.prototype.addAzure2StoragePalette = function(gn, r, sb, s)
1150	{
1151		var dt = 'azure storage ';
1152
1153		var fns =
1154		[
1155			this.createVertexTemplateEntry(s + 'Azure_HCP_Cache.svg;',
1156					r * 0.17, r * 0.1575, '', 'Azure HCP Cache', null, null, this.getTagsForStencil(gn, 'hcp cache', dt).join(' ')),
1157			this.createVertexTemplateEntry(s + 'Azure_NetApp_Files.svg;',
1158					r * 0.1625, r * 0.13, '', 'Azure NetApp Files', null, null, this.getTagsForStencil(gn, 'netapp files', dt).join(' ')),
1159			this.createVertexTemplateEntry(s + 'Azure_Stack_Edge.svg;',
1160					r * 0.17, r * 0.12, '', 'Azure Stack Edge', null, null, this.getTagsForStencil(gn, 'stack edge', dt).join(' ')),
1161			this.createVertexTemplateEntry(s + 'Data_Box.svg;',
1162					r * 0.1775, r * 0.17, '', 'Data Box', null, null, this.getTagsForStencil(gn, 'data box', dt).join(' ')),
1163			this.createVertexTemplateEntry(s + 'Data_Box_Edge.svg;',
1164					r * 0.1675, r * 0.12, '', 'Data Box Edge', null, null, this.getTagsForStencil(gn, 'data box edge', dt).join(' ')),
1165			this.createVertexTemplateEntry(s + 'Data_Lake_Storage_Gen1.svg;',
1166					r * 0.16, r * 0.13, '', 'Data Lake Storage Gen1', null, null, this.getTagsForStencil(gn, 'data lake storage gen1', dt).join(' ')),
1167			this.createVertexTemplateEntry(s + 'Data_Share_Invitations.svg;',
1168					r * 0.16, r * 0.1075, '', 'Data Share Invitations', null, null, this.getTagsForStencil(gn, 'data share invitations', dt).join(' ')),
1169			this.createVertexTemplateEntry(s + 'Data_Shares.svg;',
1170					r * 0.16, r * 0.1375, '', 'Data Shares', null, null, this.getTagsForStencil(gn, 'data shares', dt).join(' ')),
1171			this.createVertexTemplateEntry(s + 'Import_Export_Jobs.svg;',
1172					r * 0.16, r * 0.1675, '', 'Import Export Jobs', null, null, this.getTagsForStencil(gn, 'import export jobs', dt).join(' ')),
1173			this.createVertexTemplateEntry(s + 'Recovery_Services_Vaults.svg;',
1174					r * 0.1725, r * 0.15, '', 'Recovery Services Vaults', null, null, this.getTagsForStencil(gn, 'recovery services vaults', dt).join(' ')),
1175			this.createVertexTemplateEntry(s + 'Storage_Accounts.svg;',
1176					r * 0.1625, r * 0.13, '', 'Storage Accounts', null, null, this.getTagsForStencil(gn, 'storage accounts', dt).join(' ')),
1177			this.createVertexTemplateEntry(s + 'Storage_Accounts_Classic.svg;',
1178					r * 0.1625, r * 0.13, '', 'Storage Accounts (Classic)', null, null, this.getTagsForStencil(gn, 'storage accounts classic', dt).join(' ')),
1179			this.createVertexTemplateEntry(s + 'Storage_Sync_Services.svg;',
1180					r * 0.18, r * 0.15, '', 'Storage Sync Services', null, null, this.getTagsForStencil(gn, 'storage sync services', dt).join(' ')),
1181			this.createVertexTemplateEntry(s + 'StorSimple_Data_Managers.svg;',
1182					r * 0.12, r * 0.16, '', 'StorSimple Data Managers', null, null, this.getTagsForStencil(gn, 'storsimple data managers', dt).join(' ')),
1183			this.createVertexTemplateEntry(s + 'StorSimple_Device_Managers.svg;',
1184					r * 0.175, r * 0.16, '', 'StorSimple Device Managers', null, null, this.getTagsForStencil(gn, 'storsimple device managers', dt).join(' '))
1185		];
1186
1187		this.addPalette('azure2Storage', 'Azure / Storage', false, mxUtils.bind(this, function(content)
1188				{
1189					for (var i = 0; i < fns.length; i++)
1190					{
1191						content.appendChild(fns[i](content));
1192					}
1193		}));
1194	};
1195
1196	Sidebar.prototype.addAzure2WebPalette = function(gn, r, sb, s)
1197	{
1198		var dt = 'azure web ';
1199
1200		var fns =
1201		[
1202			this.createVertexTemplateEntry(s + 'Azure_Media_Service.svg;',
1203					r * 0.17, r * 0.17, '', 'Azure Media Service', null, null, this.getTagsForStencil(gn, 'media service', dt).join(' ')),
1204			this.createVertexTemplateEntry(s + 'Notification_Hub_Namespaces.svg;',
1205					r * 0.1675, r * 0.14, '', 'Notification Hub Namespaces', null, null, this.getTagsForStencil(gn, 'notification hub namespaces', dt).join(' '))
1206		];
1207
1208		this.addPalette('azure2Web', 'Azure / Web', false, mxUtils.bind(this, function(content)
1209				{
1210					for (var i = 0; i < fns.length; i++)
1211					{
1212						content.appendChild(fns[i](content));
1213					}
1214		}));
1215	};
1216
1217})();
1218