diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9491a2f --- /dev/null +++ b/.gitignore @@ -0,0 +1,363 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd \ No newline at end of file diff --git a/PROJECT/MODs/MOD.001 Graphical User Interface (GUI)/TINF20C_MOD.001GraphicalUserInterface(GUI)_Team_1_v1.0.docx b/PROJECT/MODs/MOD.001 Graphical User Interface (GUI)/TINF20C_MOD.001GraphicalUserInterface(GUI)_Team_1_v1.0.docx deleted file mode 100644 index b2e32cd..0000000 Binary files a/PROJECT/MODs/MOD.001 Graphical User Interface (GUI)/TINF20C_MOD.001GraphicalUserInterface(GUI)_Team_1_v1.0.docx and /dev/null differ diff --git a/PROJECT/MODs/MOD.001 Graphical User Interface (GUI)/readme.md b/PROJECT/MODs/MOD.001 Graphical User Interface (GUI)/readme.md deleted file mode 100644 index 378da94..0000000 --- a/PROJECT/MODs/MOD.001 Graphical User Interface (GUI)/readme.md +++ /dev/null @@ -1 +0,0 @@ -MOD.001 Graphical User Interface (GUI) diff --git a/PROJECT/MODs/MOD.002 Controller/TINF20C_MOD.002Controller_Team_1_v1.0.docx b/PROJECT/MODs/MOD.002 Controller/TINF20C_MOD.002Controller_Team_1_v1.0.docx deleted file mode 100644 index f890fe9..0000000 Binary files a/PROJECT/MODs/MOD.002 Controller/TINF20C_MOD.002Controller_Team_1_v1.0.docx and /dev/null differ diff --git a/PROJECT/MODs/MOD.002 Controller/readme.md b/PROJECT/MODs/MOD.002 Controller/readme.md deleted file mode 100644 index ae95f7c..0000000 --- a/PROJECT/MODs/MOD.002 Controller/readme.md +++ /dev/null @@ -1 +0,0 @@ -MOD.002 Controller diff --git a/PROJECT/MODs/MOD.003 Runtime/readme.md b/PROJECT/MODs/MOD.003 Runtime/readme.md deleted file mode 100644 index 47f69f0..0000000 --- a/PROJECT/MODs/MOD.003 Runtime/readme.md +++ /dev/null @@ -1 +0,0 @@ -MOD.003 Runtime diff --git a/PROJECT/PM/TINF20C_Team1_PM.docx b/PROJECT/PM/TINF20C_Team1_PM.docx index ec59038..80be37e 100644 Binary files a/PROJECT/PM/TINF20C_Team1_PM.docx and b/PROJECT/PM/TINF20C_Team1_PM.docx differ diff --git a/PROJECT/SAS/TINF20C_SAS_Team1_v1.4.docx b/PROJECT/SAS/TINF20C_SAS_Team1_v1.4.docx deleted file mode 100644 index 5433eeb..0000000 Binary files a/PROJECT/SAS/TINF20C_SAS_Team1_v1.4.docx and /dev/null differ diff --git a/PROJECT/STP/README.md b/PROJECT/STP/README.md deleted file mode 100644 index 0b00d6d..0000000 --- a/PROJECT/STP/README.md +++ /dev/null @@ -1 +0,0 @@ -Link to Wiki: [Systemtestplan]() diff --git a/PROJECT/STP/TINF20C_STP_Team_1.docx b/PROJECT/STP/TINF20C_STP_Team_1.docx deleted file mode 100755 index 981688b..0000000 Binary files a/PROJECT/STP/TINF20C_STP_Team_1.docx and /dev/null differ diff --git a/PROJECT/STP/TINF20C_STP_Team_1.pdf b/PROJECT/STP/TINF20C_STP_Team_1.pdf deleted file mode 100644 index dd1dcca..0000000 Binary files a/PROJECT/STP/TINF20C_STP_Team_1.pdf and /dev/null differ diff --git a/PROJECT/STR/TINF20C_STR_Team_1.docx b/PROJECT/STR/TINF20C_STR_Team_1.docx deleted file mode 100755 index 29cda1d..0000000 Binary files a/PROJECT/STR/TINF20C_STR_Team_1.docx and /dev/null differ diff --git a/PROJECT/STR/TINF20C_STR_Team_1.pdf b/PROJECT/STR/TINF20C_STR_Team_1.pdf deleted file mode 100755 index 91d35fc..0000000 Binary files a/PROJECT/STR/TINF20C_STR_Team_1.pdf and /dev/null differ diff --git a/SOURCE/Application/App.config b/SOURCE/Application/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/SOURCE/Application/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/SOURCE/Application/Application.csproj b/SOURCE/Application/Application.csproj new file mode 100644 index 0000000..5df3597 --- /dev/null +++ b/SOURCE/Application/Application.csproj @@ -0,0 +1,95 @@ + + + + + Debug + AnyCPU + {165D011D-D27B-48F5-995D-BAC062F41986} + WinExe + Application + Application + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {10E1A26F-1F33-478A-84A3-BF59710893C0} + ModellingWizard + + + + \ No newline at end of file diff --git a/SOURCE/Application/Application.sln b/SOURCE/Application/Application.sln new file mode 100644 index 0000000..238d1c4 --- /dev/null +++ b/SOURCE/Application/Application.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.32228.343 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Application", "Application.csproj", "{165D011D-D27B-48F5-995D-BAC062F41986}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModellingWizard", "..\Plugin\ModellingWizard.csproj", "{10E1A26F-1F33-478A-84A3-BF59710893C0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {165D011D-D27B-48F5-995D-BAC062F41986}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {165D011D-D27B-48F5-995D-BAC062F41986}.Debug|Any CPU.Build.0 = Debug|Any CPU + {165D011D-D27B-48F5-995D-BAC062F41986}.Release|Any CPU.ActiveCfg = Release|Any CPU + {165D011D-D27B-48F5-995D-BAC062F41986}.Release|Any CPU.Build.0 = Release|Any CPU + {10E1A26F-1F33-478A-84A3-BF59710893C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {10E1A26F-1F33-478A-84A3-BF59710893C0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {10E1A26F-1F33-478A-84A3-BF59710893C0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {10E1A26F-1F33-478A-84A3-BF59710893C0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C56F1D04-53B4-40D4-9B1C-6FECF9F987A3} + EndGlobalSection +EndGlobal diff --git a/SOURCE/Application/Form1.Designer.cs b/SOURCE/Application/Form1.Designer.cs new file mode 100644 index 0000000..614fe94 --- /dev/null +++ b/SOURCE/Application/Form1.Designer.cs @@ -0,0 +1,70 @@ + +namespace App +{ + partial class Form1 + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.deviceDescription1 = new Aml.Editor.Plugin.DeviceDescription(new Aml.Editor.Plugin.MWController()); + this.SuspendLayout(); + // + // deviceDescription1 + // + this.deviceDescription1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.deviceDescription1.BackColor = System.Drawing.Color.Transparent; + this.deviceDescription1.Dock = System.Windows.Forms.DockStyle.Fill; + this.deviceDescription1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.deviceDescription1.Location = new System.Drawing.Point(0, 0); + this.deviceDescription1.Margin = new System.Windows.Forms.Padding(0); + this.deviceDescription1.Name = "deviceDescription1"; + this.deviceDescription1.Size = new System.Drawing.Size(884, 461); + this.deviceDescription1.TabIndex = 0; + this.deviceDescription1.Load += new System.EventHandler(this.deviceDescription1_Load); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSize = true; + this.ClientSize = new System.Drawing.Size(884, 461); + this.Controls.Add(this.deviceDescription1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MinimumSize = new System.Drawing.Size(900, 500); + this.Name = "Form1"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Modelling Wizard für Gerätemodelle"; + this.ResumeLayout(false); + + } + + #endregion + + private Aml.Editor.Plugin.DeviceDescription deviceDescription1; + } +} + diff --git a/SOURCE/Application/Form1.cs b/SOURCE/Application/Form1.cs new file mode 100644 index 0000000..29bf4dd --- /dev/null +++ b/SOURCE/Application/Form1.cs @@ -0,0 +1,18 @@ +using System; +using System.Windows.Forms; + +namespace App +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + + private void deviceDescription1_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/SOURCE/Application/Form1.resx b/SOURCE/Application/Form1.resx new file mode 100644 index 0000000..7fcc870 --- /dev/null +++ b/SOURCE/Application/Form1.resx @@ -0,0 +1,1014 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEA1tYAAAEACAAg0AAAFgAAACgAAADWAAAArAEAAAEACAAAAAAAkLQAAAAAAAAAAAAAAAEAAAAB + AAB/EwAAAGr/AAdu/wAXd/8AJ4D/AC2E/wA2if8AO4z/AEGP/wBJlP8ATJb/AE+Y/wBdoP8AY6P/AG+q + /wB1rv8Ae7H/AIG1/wCLu/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAADAQEBAQEBAQENAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAABAQEBAQEBAQEDAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEB + AQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAQEBAQEBAQEC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkBAQEBAQEBAQEAAAAAAAAA + AAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAAAAAAALAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAA + AAAAAAABAQEBAQEBAQEJAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAACQEBAQEBAQEBCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEB + AQEBAQ0AAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAAAAAAAAAAAA + AAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwEBAQEBAQEBAQAAAAAAAAAAAAcBAQEBAQEBBwAA + AAAAAAAAAAAAAAAAAAAAAAsBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAIBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAQEBAQEBAQEBAwAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEB + AQEBBwAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BAQEBAQEB + AQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBAQEBAAAAAAAAAAAA + AAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAA + AAAACQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAFAQEBAQEBAQERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEB + AQENAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQUAAAAAAAAA + AAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEDAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUBAQEBAQEBAQEAAAAAAAAAAAAAAAcBAQEBAQEBBwAA + AAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAEBAQEBAQEBAQUAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAAAJAQEBAQEBAQoB + AQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEBAQEB + AQEBDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEBAQEBAQEBAQAAAAAAAAAAAAAA + AAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAwABAQEBAQEFAAAAAAAAAAAAAAAAAAAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAgEBAQEBAQEBAgAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAA + AAABAQEBAQEBEQADAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAMBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEB + EAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAAkBAQEBAQEBAAARAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQsAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAA + AAAAAAAAAAAAAAAAAAEBAQEBAQEDAAAAAQEBAQEBBAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAABAQEBAQEBAQEJAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAAEBAQEBAQEOAAAA + AwEBAQEBAQAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAQEB + AQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAABwEBAQEBAQEAAAAAEAEBAQEBARIAAAAAAAAAAAAAAAAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEFAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAMBAQEBAQEBAQMAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAA + AQEBAQEBAQIAAAAAAAEBAQEBAQQAAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQ4AAAAAAAMBAQEBAQEAAAAA + AAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEBAQEBAQEBEgAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAA + AAAAAAAAAAAAAAAHAQEBAQEBAQAAAAAAABABAQEBAQERAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AQEBAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAABAQEBAQEBAgAAAAAA + AAABAQEBAQEDAAAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBBwAAAAAAAAAAAAAAAAABAQEBAQEBDQAAAAAAAAADAQEBAQEBAAAAAAAAAAAAAAAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEFAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAcB + AQEBAQEBAAAAAAAAAAAQAQEBAQEBEQAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAAEBAQEBAQECAAAAAAAAAAAAAQEBAQEBAwAA + AAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAA + AAAAAAAAAAAAAAEBAQEBAQENAAAAAAAAAAAAAwEBAQEBAQAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQ0AAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAABwEBAQEBAQEAAAAAAAAA + AAAAEQEBAQEBARAAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBBwAAAAAAAAAAAAAAAQEBAQEBAQIAAAAAAAAAAAAAAAEBAQEBAQMAAAAAAAAAAAAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQEBAQEBAQEBAQEBAQEBAQEBBQAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAAAQEB + AQEBAQ0AAAAAAAAAAAAAAAMBAQEBAQEAAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAAFAQEBAQEBAQAAAAAAAAAAAAAAABEBAQEBAQEQ + AAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkBAQEBAQEBAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAQAQEBAQEBAQECAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAA + AAAAAAAAAAABAQEBAQEBAgAAAAAAAAAAAAAAAAABAQEBAQEDAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBARIAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQEB + AQEBAQEQAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAABAQEBAQEBDQAAAAAAAAAA + AAAAAAADAQEBAQEBAAAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAACAQEBAQEBAQMAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBBwAAAAAAAAAAAAUBAQEBAQEBAAAAAAAAAAAAAAAAAAASAQEBAQEBDgAAAAAAAAAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQEBAQEBAQEAAAAAAAAAAAAAAAAA + AAAAAAAAAAwBAQEBAQEBAQkAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAEBAQEB + AQECAAAAAAAAAAAAAAAAAAAAAQEBAQEBAgAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAQEBAQEBAQENAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAAEBAQEBAQENAAAAAAAAAAAAAAAAAAAABAEBAQEB + AQAAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQEBAQEBAQEB + AAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAA + AAAAAAAABQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAEgEBAQEBAQ4AAAAAAAAAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAABQEBAQEB + AQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAAAQEBAQEBAQIAAAAAAAAAAAAA + AAAAAAAAAAEBAQEBAQIAAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAIBAQEBAQEBBQAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBBwAAAAAAAAASAQEBAQEBAQ0AAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEAAAAAAAAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0BAQEBAQEBAQAAAAAAAAAAAAAA + AAAAAAAQAQEBAQEBAQENAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAAEAQEBAQEB + AQAAAAAAAAAAAAAAAAAAAAAAABIBAQEBAQENAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBARAAAAAAAAAAAAAAAAAAAAACAQEBAQEBAQEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAABAQEBAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAABAQEB + AQECAAAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAQEBAQEB + AQMAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAA + AAAAABIBAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAFAQEBAQEBAAAAAAAAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAkBAQEBAQEB + AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAAAQBAQEBAQEBAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQEBAQEBDQAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAQEBAQEBAQEMAAAAAAAAAAAAAAAAAAEBAQEBAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBBwAAAAAAAAEBAQEBAQECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQAAAAAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwEBAQEBAQEBAAAAAAAAAAAA + AAAAAAEBAQEBAQEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAAEgEBAQEBAQEN + AAAAAAAAAAAAAAAAAAAAAAAAAAAABQEBAQEBAQAAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAAAAAAAAAAAAAAAABAEBAQEBAQEBAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAAABAEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB + AQEBAQwAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBAQEB + AQEBBQAAAAAAAAAAAAAAAQEBAQEBAQEFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAA + AAAAAQEBAQEBAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEAAAAAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEBAQEBAQEBAQAAAAAAAAAAAAAOAQEBAQEBAQEA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAASAQEBAQEBAQ0AAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAUBAQEBAQEAAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAABAQEBAQEBARAAAAAAAAAAAAACAQEBAQEBAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBBwAAAAADAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQELAAAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAQEBAQEBAQIAAAAAAAAA + AAABAQEBAQEBARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAABAQEBAQEBAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEAAAAAAAAAAAkBAQEBAQEBAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAABEBAQEBAQEBDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH + AQEBAQEBAAAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEB + AQEBAQEMAAAAAAAAAAEBAQEBAQEBCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAA + AAMBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBCwAAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAAEBAQEBAQECAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAQEBAQEBAQAAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAEBAQEBAQEBAAAAAAAAAwEBAQEBAQEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBBwAAEQEBAQEBAQEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwEBAQEBAQAAAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUBAQEBAQEBCwAAAAAA + AQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAwEBAQEBAQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQkAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQAAAAAQAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAAAQEBAQEBAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEBAQEBAQEAAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB + AQEBAQEBAQAAAAACAQEBAQEBAQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwAR + AQEBAQEBAQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkBAQEBAQEAAAEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAQEBAQEBAQ8AAAABAQEBAQEBAQAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBwADAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAABAQEBAQEJAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAQEBAQEBAQQAAA0BAQEBAQEBBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBBwABAQEBAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAAEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwEBAQEBAQEAAAIB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBBxABAQEBAQEBDgAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAQEBAQEBAAEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgEBAQEBAQEAAAEBAQEBAQECAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBBgMBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAQEBAQEBBwEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEBAQEBAQERDgEBAQEBAQEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBAQEB + AQEBAQECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkBAQEBAQEIAwEBAQEBAQEAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBAQEBAQEBAQEOAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAACQEBAQEBAQEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAQEBAQEBAQEB + AQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBAQEBAQEBAQIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQEBAQEBAQEBAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBAQEBAQEBAQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAsBAQEBAQEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAQEBAQEBAQEBAQEBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBAQEB + AQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBBwAAAAAA + AAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQEBAQEBAQEBAQEBAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBAQEBAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAcBAQEBAQEBAQEBAQEBDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAQEBAQEB + AQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEB + AQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcBAQEBAQEBAQEBAQEBAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEB + AQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0BAQEBAQEBAQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcBAQEBAQEBAQEBAQECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAQEBAQEBAQEBAQEBBwAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/SOURCE/Application/Plugins/ModellingWizard/AML.Editor.PluginContracts.dll b/SOURCE/Application/Plugins/ModellingWizard/AML.Editor.PluginContracts.dll new file mode 100644 index 0000000..045a465 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/AML.Editor.PluginContracts.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/AML.Editor.PluginContracts.xml b/SOURCE/Application/Plugins/ModellingWizard/AML.Editor.PluginContracts.xml new file mode 100644 index 0000000..a346ae7 --- /dev/null +++ b/SOURCE/Application/Plugins/ModellingWizard/AML.Editor.PluginContracts.xml @@ -0,0 +1,1343 @@ + + + + AML.Editor.PluginContracts + + + + + The command arguments for the + + + + + + Gets the captured image. If no image was captured, the value is null. + + + + + The command arguments for the + + + + + + Some extension methods, which can be used to get access to the commanding interface of a PlugIn + + + + + Calls the command, to close the CAEX file. + + The plug in. + The result. + + true, if the operation has been executed successfully; false + if an Error exists or the operation has been cancelled. Interpret the result output for details. + + + + + Calls the command, to save the CAEX file. + + The plug in. + The result. + + true, if the operation has been executed successfully; false + if an Error exists or the operation has been cancelled. Interpret the result output for details. + + + + + Calls the command, to get the currently edited CAEX file from the AutomationML editor. + + The plug in. + The result. + + true, if the operation has been executed successfully; false + if an Error exists or no current file is loaded. Interpret the result output for details. + + + + + Calls the command, to capture the selected tree node and its visible descendants. + + The plug in. + The result. + + true, if the operation has been executed successfully; false + if an Error exists or no image has been created. Interpret the result output for details. + + + + + Calls the command, to open the CAEX file. + + The plug in. + The file path. + The library names. + if set to true no user interaction is required. + The result. + + true, if the operation has been executed successfully; false + if an Error exists or the operation has been cancelled. Interpret the result output for details. + + + + + Calls the command, to create a new CAEX file. + + The plug in. + The result. + + true, if the operation has been executed successfully; false + if an Error exists or the operation has been cancelled. Interpret the result output for details. + + + + + Calls the command, to open the CAEX file. + + The plug in. + The file path. + The result. + + true, if the operation has been executed successfully; false + if an Error exists or the operation has been cancelled. Interpret the result output for details. + + + + + Calls the command, to open the CAEX file from a stream. + + The plug in. + The file content stream. + The result. + + true, if the operation has been executed successfully; false + if an Error exists or the operation has been cancelled. Interpret the result output for details. + + + + + The available commands of the AMLEditor, which can be invoked by a PlugIn, implementing the + interface. + + + + + The close file command. Use this command with the callback arguments. + The command executes identical to the close command invoked from the File/Close menu item of the AutomationML + Editor. + + + Be aware, that this command is a User Interaction and may be cancelled by the user. + + + + + The save file command. Use this command with the callback arguments. + The command executes identical to the save command invoked from the File/Save menu item of the AutomationML Editor. + + + Be aware, that this command is a User Interaction and may be cancelled by the user. + + + + + The open file command. Use this command with the callback arguments. + The command executes nearly identical to the open command invoked from the File/Open menu item, except that + no open file browser dialogue is presented to the user. + + + Be aware, that this command may include a User Interaction (if a currently opened and modified file has not been + saved) and may be cancelled by the user. + + + + + The new file command. Use this command with the callback arguments. + The command executes identical to the close command invoked from the File/New menu item. The new file's CAEX schema + is set to the currently selected schema. + + + Be aware, that this command may include a User Interaction (if a currently opened and modified file has not been + saved) and may be cancelled by the user. + + + + + The get current CAEX file command. Use this command with the callback + arguments. + + + + + The command to insert AML libraries from an external file into the current document. Use this command with the + callback arguments. + The command executes nearly identical to the import from file command invoked from the File/ImportFromFile menu + item, except that + no selection dialogue is presented to the user, if the command mode is set to silent. In silent mode, libraries are + automatically transformed if a schema transformation is needed. + + + + + The command to capture an image from the selected tree node and its visible sub tree. Use this command with the + callback arguments. + The command executes nearly identical to the capture command provided by the editor except the save dialogue. The + created image is returned to the caller. + /// + + + + + The command arguments for the + + + + + + This delegate type defines the callback function, provided by the AMLEditor to a PlugIn, implementing the + interface. + + The source PlugIn which calls the delegate. + The command which should be executed. + The command arguments. + + + + + This class defines the base command properties for an AMLEditor command. + + + + + Gets or sets the input arguments for a command. Specific access properties to the arguments array are provided by + the derived classes. + + + + + Gets or sets a value indicating whether an interactive operation has been canceled by the user. + + + The PlugIn application should check the Canceled property before accessing any properties in a class derived from + EditorCommandArguments; + otherwise, the property will raise an InvalidOperationException if the operation was aborted. + + + + + Gets a value indicating which error occurred during the operation. + + + If an exception is raised during an operation, the AutomationML editor will assign the exception to the Error + property. + The PlugIn application should check the Error property before accessing any properties in a class derived from + EditorCommandArguments; + otherwise, the property will raise a TargetInvocationException with its InnerException property holding a reference + to Error. + The value of the Error property is null if the operation was completed successful or canceled. + + + + + Gets the result of the command. Specific type conversions for this property are provided by the derived classes. + + + + + The command arguments for the + + + + + + Gets the CAEX file of the current opened AML file. If no file is currently edited, the value is null. + + + + + This interface is a PlugIn interface, that provides a callback function, which can be used to execute commands + provided by the AMLEditor. + + + + + + Property set by the AMLEditor to provide a callback function to a PlugIn, which can be used to execute an editor + command. + All available commands are listed in . The current implementation only supports + synchronous + execution of commands. + + + + + The command arguments for the + + + + + + Initializes a new instance of the class. + + Name of the file. + The library names. + if set to true the import command doesn't require a user interaction. + + + + Gets the file path of the AML file, containing the libraries. + + + The file path. + + + + + Gets a value indicating whether the import command requires a user interaction. + + + true if this instance is silent; otherwise, false. + + + + + Gets the library names, which should be imported + + + + + The Aml.Editor.Plugin.Commanding name space contains a specific PlugIn Interface class to enable a PlugIn to call a + specific command of the AMLEditor using a callback function. Each command has an assigned command argument class, + which + should be used with the command. + + + + + The command arguments for the + + + + + + The command arguments for the + + + + + + Initializes a new instance of the class. + + The file path, which defines the path to the file which should be opened in the editor. + + + + Initializes a new instance of the class. + + The file path, which defines the path to the file which should be opened in the editor. + + + + Gets the file path for the Opened file. + + + + + Gets the file content as a stream for the Opened file. + + + + + The Aml.Editor.Plugin.Contracts.Base name space contains abstract Base Classes for AutomationML + Editor PlugIn Developers which implement some basic Functionality for PlugIns. + Example Implementations, that may be used as a starting point for PlugIn Development + are available on + + the + Aml.Editor.Plugin + + Project side for Developers. + + + To get a PlugIns loaded into the AutomationML Editor at startup the DLLs have to be put in the PlugIns + Folder in the Execution Directory of the Editor. Only the AutomationML Editor Version 4 and + higher supports 3d Party PlugIns. Every PlugIn shall use the same version of the Aml.Engine as the + used Aml.Editor version. + + + + + This enum defines the possible docking positions for a plugIn window, when it is layouted by the Editors + Docking manager. + + + + + The initial position is the left tabular docking pane + + + + + The initial position is the right tabular docking pane + + + + + The initial position is the bottom tabular docking pane + + + + + The initial position is the top tabular docking pane + + + + + The initial position is the content host containing also the library views + + + + + The initial position is the content host containing also the library views. The existing library views are set to + the maximized window. + + + + + The plugIn window is viewed as a floating window + + + + + This interface can be implemented by plugIns, which are used to view external data, referenced by external data + connectors in an AutomationML file or stream. + + + + + + Gets a value indicating whether this PlugIn is an externals viewer. An external viewer is provided + with a selected external data source like a PLCopenXML document or a COLLADA document or any other + content. An external viewer can restrict itself to a specific MIME type . + If any external content is ready to be viewed, the AML Editors calls the + or + . + + + true if this instance is externals viewer; otherwise, false. + + + + + Gets the MIME type defining the content class, this viewer is able to handle. The AML editor looks at the + MIME type, found in the external reference or AutomationML container relation. As an example, the MIME type in + the is + set to "model/vnd.collada+xml". + + + + + This method is called by the AML editor if the PlugIn's property + returns true and the URI attribute references a file. + + The attribute. + The file path. + + + + This method is called by the AML editor if the PlugIn's property + returns true and the URI attribute references a stream in an AutomationML container. + + The attribute. + The memory stream. + + + + InterfaceClass for any AutomationML Editor PlugIn. + The AutomationML Editor is the Host Application for any PlugIn, which implements this interface. + The PlugIn implementing this interface will typically run it's own user interface thread. For an + integrated UI-PlugIn, which will be controlled by the AutomationML Editors Main UI-Thread the + -Interface Contract has to be used. + + + + [ExportMetadata("Author", "...")] + [ExportMetadata("DisplayName", "HelloAml")] + [ExportMetadata("Description", "The 'HelloAml' is an AutomationML Editor plugin, which ....")] + [Export(typeof(IAMLEditorPlugin))] + public class HelloAml : IAMLEditorPlugin + { + } + + + + + + The Event occurs when the PlugIn is Activated (for example via an Activation Command). + This event is raised by the PlugIn and handled by the AutomationML Editor. If the PlugIn + has a UI-Control, the AutomationML Editor will show the UI and dock the Control in a + Container Window, used for external Views. + + + + + Occurs when the PlugIn is terminated (some UserInteraction inside the PlugIn, i. e. a + Window is Closed, or via a Command). This event is raised by the PlugIn and handled by + the AutomationML Editor. If the PlugIn is a UI-Control , the + control is removed from the Container Window. The State of the currently open AutomationML + Document is checked, and if it was modified, the User will be asked to reload it. + + + + + Gets the Activation command for the PlugIn. + + The activation command. + + + + Gets the List of commands, which are bound to the PlugIn Menu in the AutomationML + Editor. The Command Names are shown in a sub-Menu in the PlugIn-Menu. + + The commands. + + + + Gets the display name which is shown in the PlugIn Menu in the AutomationML Editor. + + The display name. + + + + Gets a value indicating whether this instance is active. + + true if this instance is active; otherwise, false. + + + + Gets or sets a value indicating whether this instance is automatic active when loaded. + This value can be initially set and will be defined by the user. + + + true if this instance is automatic active; otherwise, false. + + + + + Gets a value indicating whether this instance is reactive. Reactive PlugIn will be + notified, when the actual CAEX-Object changes (Selection of any Tree view Item in an + AutomationML TreeView) via the Method or an + AutomationML File is opened via the Method. + + true if this instance is reactive; otherwise, false. + + + + Gets a value indicating whether this instance is read only. A Read only PlugIn should not + change any CAEX Objects. + + true if this instance is read only; otherwise, false. + + + + Gets the package name which is used to download the PlugIn package from a NuGet feed. If a Package name + is defined, the AMLEditor can update PlugIn packages independently from its own update cycle. + + The package name. + + + + Gets the Terminate command for the PlugIn. + + The terminate command. + + + + Changes the current amlFilePath. The Host Application will call this method when the + PlugIns Property is set to true and the Currently opened + AutomationML File changes in the AMLEditor Host Application. + + The Path to the current AML File in the AML Editor. + + + + Changes the selected object. The Host Application will call this method when the PlugIns + Property is set to true and the Current Selection changes in + the AMLEditor Host Application. + + The selected CAEX - object. + + + + This Method enables the AutomationML Editor to execute a command. Only those commands + are executable, which are identifiable via the . + + The command identifier. + + The FilePath of the currently loaded AMLDocument, if a CAEXDocument is loaded, otherwise null + or empty + + + + // ... + switch (command) + { + case PluginCommandsEnum.Activate: + // activation code; + // call your ActivateCommand execution method + + ActivateCommand.Execute (amlFilePath); + break; + + case PluginCommandsEnum.Terminate: + + // termination code; + // call your TerminateCommand execution method + // the Execution Method of the PlugIn may save the changes of the AMLDocument if it was edited by the plugIn. + // It should raise the PluginTerminated Event. This Event is handled by the AMLEditor, the Editor will + // check, if the Document was modified and ask the user to reload the document. The Editor will also return + // to editing mode if it was disabled during activation. + + TerminateCommand.Execute (amlFilePath); + break; + } + + + + + + PublishAutomationMLFileAndObject after the PlugIn is activated. This Method is called by + the AutomationML Editor when the Event is handled. The + AutomationML Editor will send the actual Path of the AutomationML File and the actual + selected Object to the PlugIn, when an AutomationML File is currently open. If the + Activation happened, when no AutomationML File was opened so far, the PlugIn will be + informed as soon as this will happen, but only if the Flag is set to true. + + The AML file path. + The selected CAEX Object. + + + // To Load the content of the AutomationML Document the AmlEngine can be used + var document = CAEXDocument.LoadFromFile (amlFilePath); /// + + + + + + Interface which defines Metadata for an exported PlugIn. + + + + + Gets the name of the author. + + + + + Gets the name of the owner. + + + + + Gets the description of the PlugIn. + + + + + Gets the display name of the PlugIn. + + + + + The Interface IAMLEditorView is used for a PlugIn, which can be embedded in + the AutomationML Editor's Window- and Docking-Manager. The PlugIn must implement the + IFrameworkInputElement Interface (as an example, a WPF UserControl) and + the Interface. For windows, based on , + the view must have a wrapper. + + + + [ExportMetadata("Author", "...")] + [ExportMetadata("DisplayName", "HelloAml")] + [ExportMetadata("Description", "The 'HelloAml' is an AutomationML Editor plugin, which ....")] + [Export(typeof(IAMLEditorView))] + public partial class HelloAml : System.Windows.Control.UserControl, IAMLEditorView + { + } + + + + + + Gets a value indicating whether this PlugIn Instance can close. If set to true, + the PlugIn may be closed from the AutomationML Docking Manger Window Menu or the + Windows Close Button. + + true if this instance can close; otherwise, false. + + + + Gets the initial dock position for the PlugIn window + + + + + Gets the image which should be used in the Header of the PlugIn window. If no image is defined the editor uses a + default image. + + + + + The Interface IAMLEditorViewCollection is used for a PlugIn, which can be embedded in + the AutomationML Editor's Window- and Docking-Manager. This PlugIn can provide + multiple independent views, to be embedded at different positions in the AML Editor where + each of the views shall implement the interface. + It is possible to dynamically add and remove views from the collection while the PlugIn is + active. + + + The individual views in this collection shall not export themselves as PlugIns because + the Activation and Termination is handled by this collection PlugIn for all views in the + list as a whole. + + + + [ExportMetadata("Author", "...")] + [ExportMetadata("DisplayName", "MultiWindowPlugin")] + [ExportMetadata("Description", "The 'MultiWindowPlugin' is an AutomationML Editor plugin, which ....")] + [Export(typeof(IAMLEditorViewCollection))] + public partial class MultiWindowPlugin : List<IAMLEditorView> + { + } + + + + + + The Event occurs when a view has been added to this collection. The AML editor will handle this event and + will dock the added view at the dock position, defined by the view. + + + + + This PlugIn interface can be implemented to get notifications when an AML document + is loaded or unloaded by the AutomationML editor. + + + + + Occurs when the PlugIn has loaded a new document, which should be loaded into the AutomationML editor for editing. + + + + + Method called by the AutomationML editor, when the editor application is closed. + + + + + Method called by the AutomationML editor, when a document is loaded. + + The loaded document + + + + Method called by the AutomationML editor, when the current document is unloaded. + + + + + This PlugIn interface can be implemented to get notifications when an AML document + is saved by the AutomationML editor. + + + + + Method called by the AutomationML editor, when the editor saved a document + + + + + This interfaces is used to implement a PlugIn which will receive a notification with the + method called, when the AMLEditor activates a view. + + + + + Is called, when the AMLEditor activates a view. + + Name of the activated view. This is the display name shown in the view tab header. + + + + This interface can be implemented by a PlugIn to get the AutomationML editor to notify + the plugin when the UI zoom factor changes. + + + + + The event which is raised when an element should be selected. + + + + + Supported application themes of the AML Editor. + + + + + The default theme + + + + + The office2010 blue theme + + + + + The office2013 theme + + + + + The metro theme + + + + + The royal light theme + + + + + No theme defined + + + + + This interface can be implemented by a PlugIn which needs a notification when the editor + theme changes. + + + + + Called when the editors theme changes. + + Name of the theme. + + + + This interface can be implemented by a PlugIn to get the AutomationML editor to select a + CAEX element in a tree view when the event is raised. + + + + + The event which is raised when an element should be selected. + + + + + The event arguments for the selection event . + + + + + Creates an instance of the for the + specified . + + This element should be selected by the AutomationML editor. + + + + The element to select. + + + + + This interface can be implemented by PlugIns which provide , integrated into the + AMLEditors tool bar. + + + + + Gets the commands to be integrated into the tool bar. The commands shall specify an image source for the tool bar + button. + + + + + The Aml.Editor.Plugin.Contracts Namespace contains Classes and Interfaces for AutomationML + Editor PlugIn Developers. The Interface Classes should be used as MEF Contracts, that + matches Import and Export components, defined by Import and Export Attributes, at runtime. + An AutomationML Editor PlugIn will export the components, implementing the Interfaces in the + Contract DLL and the AutomationML Editor imports those components. The Contracts DLL is + managed on nuget. + + + All PlugIns which export an interface are loaded into the AutomationML Editor at startup + only. If the AutomationML Editor restarts after a crash, no PlugIns are loaded, because the + crash may be caused by a PlugIn. To get a PlugIn loaded, the DLLs have to be in the PlugIns + Folder in the Execution Directory of the Editor. Only the AutomationML Editor Version 4 and + higher supports 3d Party PlugIns. + + + + + Class PluginCommand is used to publish Commands from a PlugIn to the AutomationML Editor. + + + Since version 2.2.0 the PluginCommand implements the ICommand interface. The + AutomationML Editor > v5.1.3 binds UI commanding elements directly to this instance and + not to the property. The Execution methods defined by the + command property are indirectly called. This allows the PluginCommand to catch exceptions of + Command execution. + + + + + + + Initializes a new instance of the class. + + + + + The DoNothing - Command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Occurs when a property value changes + + + + + Occurs when changes occur that affect the execution of the command + + + + + Gets or sets the command, as an example a . A Command + Parameter is set to the FilePath of the Active AMLDocument if a document is loaded, + otherwise it is null or empty. + + The command. + + + + Gets or sets the command icon which should be used, if the command is bound to a button control. + + + + + Gets or sets the button content which should be used, if the command is bound to a button control. + This is an alternative to the property if the button content is not an icon + but any content. The content will be loaded to the Button using a content presenter. + + + + + Gets or sets the name of the command used by the AutomationML Editor to show the Command + in the PlugIn Menu + + The name of the command. + + + + Gets or sets the command tool tip + + The command tool tip. + + + + Gets the display name (This returns only the ). + A DisplayName Property is needed to bind the CommandName to UI controls. + + + + + Gets or sets a value indicating whether this instance is a checkable command. Checkable + Commands get a Check Box in the MenuItem + + true if this instance is checkable command; otherwise, false. + + + + Gets or sets a value indicating whether this instance is a toggle command. Toggle + Commands get a Check Box in the MenuItem + + true if this instance is toggle command; otherwise, false. + + + + Test, if the can execute. + + TODO The parameter. + true, if command can execute + + + + The Execution Action. + + TODO The parameter. + + + + Called when [property changed]. + + Name of the property. + + + + Enumeration Constants for Plugin Commands. This Constants are used in the Host AutomationML Editor Application + to Execute a Plugin internal command. The Plugin should at least publish these commands to the Host via its command + list. + + + + + Identifies the activate command + + + + + Identifies the terminate command + + + + + Class RelayCommand as it was defined in an MSDN Article + by Josh Smith. + This class is an implementation pattern for a plugin command, which the AutomationML Editor + can bind to a plugin Menu. This Implementation provides the UI with the state information, to enabled or disable a + command, and with the + invocation Method. + + Type of Command Data (this may be the System type 'object') + + + + Gets or sets the identifier for the command, when the command is published by the plugin + class, the Identifier can be set as an + + The identifier. + + + + Occurs, when property changes are notified, which have an effect on the command execution. + + + + + The _can execute + + + + + The _execute + + + + + Initializes a new instance of the class. + + + + + Creates a new command. + + The execution logic. + The execution status logic. + execute + + + + Defines the method used to determine whether the command in the current state can be performed. + + + Data used from the command. When the command does not require data transfer, the object + can be set to null. + + true, if the command can be executed, otherwise false. + + + + Defines the method that will be called when the command is invoked. + + + Data used from the command. When the command does not require data transfer, the object + can be set to null. + + + + + PluginBase is an abstract base class for PlugIn Implementation which is a basic implementation of the + + PlugIn Interface + + + + + The Display name + + + + + The PlugIn commands which are shown in the PlugIn Menu. + + + + + Initializes a new instance of the class which contains the two PlugIn Commands + and which every PlugIn should have. + + + + + The Event occurs when the PlugIn is Activated (for example via an Activation Command). + This event is raised by the PlugIn and handled by the AutomationML Editor. If the PlugIn + has a UI-Control, the AutomationML Editor will show the UI and dock the Control in a + Container Window, used for external Views. + + + + + Occurs when the PlugIn is terminated (some UserInteraction inside the PlugIn, i. e. a + Window is Closed, or via a Command). This event is raised by the PlugIn and handled by + the AutomationML Editor. If the PlugIn is a UI-Control , the + control is removed from the Container Window. The State of the currently open AutomationML + Document is checked, and if it was modified, the User will be asked to reload it. + + + + + Gets the Activation command for the PlugIn. + + + The activation command. + + + + + Gets the List of commands, which are bound to the PlugIn Menu in the AutomationML + Editor. The Command Names are shown in a sub-Menu in the PlugIn-Menu. + + + The commands. + + + + + Gets the display name which is shown in the PlugIn Menu in the AutomationML Editor. + + + The display name. + + + + + Gets a value indicating whether this instance is active. + + true if this instance is active; otherwise, false. + + + + Gets or sets a value indicating whether this instance is automatic active when loaded. + This value can be initially set and will be defined by the user. + + + true if this instance is automatic active; otherwise, false. + + + + + Gets a value indicating whether this instance is reactive. Reactive PlugIn will be + notified, when the actual CAEX-Object changes (Selection of any Tree view Item in an + AutomationML TreeView) via the Method or an + AutomationML File is opened via the Method. + + + true if this instance is reactive; otherwise, false. + + + + + Gets a value indicating whether this instance is read only. A Read only PlugIn should not + change any CAEX Objects. + + + true if this instance is read only; otherwise, false. + + + + + Gets the package name which is used to download the PlugIn package from a NuGet feed. If a Package name + is defined, the AMLEditor can update PlugIn packages independently from its own update cycle. + + + The package name. + + + + + Gets the Terminate command for the PlugIn. + + + The terminate command. + + + + + Changes the current amlFilePath. The Host Application will call this method when the + PlugIns Property is set to true and the Currently opened + AutomationML File changes in the AMLEditor Host Application. + + The Path to the current AML File in the AML Editor. + + + + Changes the selected object. The Host Application will call this method when the PlugIns + Property is set to true and the Current Selection changes in + the AMLEditor Host Application. + + The selected CAEX - object. + + + + This Method enables the AutomationML Editor to execute a command. Only those commands + are executable, which are identifiable via the . + + The command identifier. + + The FilePath of the currently loaded AMLDocument, if a CAEXDocument is loaded, otherwise null + or empty + + + + // ... + switch (command) + { + case PluginCommandsEnum.Activate: + // activation code; + // call your ActivateCommand execution method + ActivateCommand.Execute (amlFilePath); + break; + case PluginCommandsEnum.Terminate: + // termination code; + // call your TerminateCommand execution method + // the Execution Method of the PlugIn may save the changes of the AMLDocument if it was edited by the PlugIn. + // It should raise the PluginTerminated Event. This Event is handled by the AMLEditor, the Editor will + // check, if the Document was modified and ask the user to reload the document. The Editor will also return + // to editing mode if it was disabled during activation. + TerminateCommand.Execute (amlFilePath); + break; + } + + + + + + PublishAutomationMLFileAndObject after the PlugIn is activated. This Method is called by + the AutomationML Editor when the Event is handled. The + AutomationML Editor will send the actual Path of the AutomationML File and the actual + selected Object to the PlugIn, when an AutomationML File is currently open. If the + Activation happened, when no AutomationML File was opened so far, the PlugIn will be + informed as soon as this will happen, but only if the Flag is set to true. + + The AML file path. + The selected CAEX Object. + + + // To Load the content of the AutomationML Document the AmlEngine can be used + var document = CAEXDocument.LoadFromFile (amlFilePath); + + + + + Test, if the can execute. + + + parameter may contain the FilePath of the Active AMLDocument if a document is loaded, + otherwise it is null or empty + + true, if command can execute + + + + The Execution Action. The Property is set to true and + the Event is raised. + + + parameter may contain the FilePath of the Active AMLDocument if a document is loaded, + otherwise it is null or empty + + + + + Raises the PlugIn activated. + + + + + Raises the PlugIn terminated. + + + + + Test, if the can execute. + + + parameter may contain the FilePath of the Active AMLDocument if a document is loaded, + otherwise it is null or empty + + true, if command can execute + + + + The Execution Action. The Property is set to false and + the Event is raised. + + + parameter may contain the FilePath of the Active AMLDocument if a document is loaded, + otherwise it is null or empty + + + + diff --git a/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.Services.dll b/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.Services.dll new file mode 100644 index 0000000..91a50a4 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.Services.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.Services.xml b/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.Services.xml new file mode 100644 index 0000000..6b97db0 --- /dev/null +++ b/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.Services.xml @@ -0,0 +1,2762 @@ + + + + AML.Engine.Services + + + + + This service calculates statistics for a CAEX document. + + + + + + Registers a new instance of a CAEXFileStatisticService with the of the AMLEngine. + + The service instance + + + + Unregisters this service + + + + + Counts all objects (sum of all others with specific counts) and returns the result. + + The CAEX file. + Total number of all countable objects. + + + + Counts all Attribute objects and returns the result. + + The CAEX file. + Total number of all attributes. + + + + Counts all Attribute type reference objects and returns the result. + + The CAEX file. + Total number of all attribute type references. + + + + Counts all AttributeType objects and returns the result. + + The CAEX file. + + Total number of all AttributeTypes + + + + + Counts all InterfaceClass objects and returns the result. + + The CAEX file. + + Total number of all InterfaceClasses + + + + + Counts all ExternalInterface objects and returns the result. + + The CAEX file. + + Total number of all ExternalInterfaces + + + + + Counts all InternalElement objects and returns the result. + + The CAEX file. + + Total number of all InternalElements + + + + + Counts all InternalLink objects and returns the result. + + The CAEX file. + + Total number of all InternalLinks + + + + + Counts all RoleClass objects and returns the result. + + The CAEX file. + + Total number of all RoleClasses + + + + + Counts all RoleClass reference (RoleRequirements and SupportedRoleClass) objects and returns the result. + + The CAEX file. + + Total number of all RoleClasses references + + + + + Counts all SystemUnitClass objects and returns the result. + + The CAEX file. + + Total number of all SystemUnitClasses + + + + + Counts all SystemUnitClass reference objects and returns the result. + + The CAEX file. + + Total number of all SystemUnitClasses + + + + + Clears the disposed documents from the dictionary. + + + + + This class implements the service interface. With this service it is + possible to access CAEX objects which are outsourced into external documents and referenced using alias names. + Normally the service is located by other services like query services. They can call this service to resolve an + external reference if an alias is part of a CAEX path in any query. + + + + + + Registers a service to resolve external references. + + The registered service. + + + + Unregister this service + + + + + This method is used to load an outsourced CAEX document. The external representation for that document is defined + in the provided + ExternalReference object. The CAEXDocument is loaded as a new 'stand alone' document, which means that no libraries + of the + loaded document are merged to the original referencing document. The ExternalReference is not changed and all + external references + in the original document which use the alias name in a path- or id-reference will not change too. A merge of + documents can only + be requested by a service. + + the ExternalReference object + + If the ExternalReference doesn't have an alias, the document is not loaded. If a referenced document for the alias + already exists, + the existing document is returned. + + + + + Determines, if the provided path contains an alias and gets the resolved document + for that alias. + + The CAEX document, which provides the ExternalReference to resolve the 'Alias'. + The CAEX path which contains an 'Alias'. + + The resolved document for the alias, extracted from the path. + + + + + Gets all already resolved externals for the provided CAEXDocument containing ExternalReference objects + + The CAEX document, containing ExternalReference objects. + + An enumeration of all CAEX documents, which have been loaded from the ExternalReferences. + + + + + Clears the disposed documents from the dictionary + + + + + Adds the specified reference to the node collection assigned to the provided key. + If no node collection exists, a new collection is added for the given key. + Before the reference is added, it is checked, if referenced elements exist. If no element exists, + the reference is not added. If elements exists, these elements are added too. + + The key. + The attribute used to reference an element. + The referenced Element if not null + The node collection, if the reference was added; otherwise false. + + + + Updates all name references, which use the provided "oldName" to reference an element. + + The old name. + The new name. + The referenced element, which will change its name from oldName to newName. + + + + Gets all attributes from the reference collection, which define references to the provided element. + + The reference collection. + The referenced element. + All attributes from the reference collection, which define references to the provided element + + + + This class implements a merge service which is able to merge CAEX documents from different sources into one + common document. The merge service adds the libraries from the external referenced file into the target document + and updates all references, which use an alias and can be resolved after the merge. If a library, which is used + in the external source, also exists in the target document, this library is replaced, if the library version in the + external source is newer. If not the existing library is kept. If an InstanceHierarchy in the external source can + be identified as an outsourced Master InternalElement, it is tried to add the Master InternalElement back to its + original position. + + + + + + Registers a new instance of a MergeService with the of the AMLEngine. + + The service instance + + + + Unregisters this service + + + + + Merges the defined ExternalReference into the provided CAEXDocument. The source is loaded from the provided + external source stream. + + The document. + The external reference. + The external source stream. + The merge protocol. + if set to true the service performs a schema transformation if necessary. + + true, if merge was successful + + + + + Merges the defined ExternalReference into the provided CAEXDocument. + + The document. + The external reference. + The merge protocol. + if set to true the service performs a schema transformation if necessary. + + true, if merge was successful + + + + + Gets the external libraries from the source which should be imported into the target. + + + The target. + The source. + The protocol. + + + + + Tries to load the external source which is defined in the external reference. + + The document. + The external reference. + The source. + The merge protocol. + if set to true [automatic transform]. + + true, if loaded; otherwise false. + + + + + The Aml.Engine.Services namespace contains classes that define and implement specific Services + that provide additional features for the processing of AMLDocuments. Registered services + are located by the AMLEngine and can enhance API methods to provide faster queries or automated + name assignment to added elements. + + + + + This interface defines methods, each NodeDictionary should provide. + + + + + + + Adds the specified element to the node collection identified with the provided key. + If no node collection exists, a new collection is added for the given key. + + The key. + The element. + The node collection + + + + Adds the specified reference to the node collection assigned to the provided key. + If no node collection exists, a new collection is added for the given key. + + The key. + The attribute used to reference an element. + The referenced element, if already known. + + The node collection + + + + + Removes the element. If this is the last element in the + collection, remaining references will be deleted and the key is deleted from the dictionary. + + The key. + The node. + if set to true reference attribute values will be set to null. + + + + Removes the reference from the collection. If this is the last item in the + collection, the key is deleted from the dictionary. + + The key. + The node. + + + + This class implements a dictionary which allows the association of multiple nodes to the same key. The source of + the key is an attribute value of a CAEX object. The nodes are assembled into a . + + + + + + + Generic class for all node dictionaries + + + + + + + + Gets and sets the with the specified key. If no entry exists, the value is + null. + + The key. + a node collection + + + + Adds the specified element to the node collection identified with the provided key. + If no node collection exists, a new collection is added for the given key. + + The key. + The element. + + The node collection + + + + + Adds the specified reference to the node collection assigned to the provided key. + If no node collection exists, a new collection is added for the given key. + + The key. + The attribute used to reference an element. + The referenced element, if already known. + + The node collection + + + + + Removes the reference from the collection. If this is the last item in the + collection, the key is deleted from the dictionary. + + The key. + The node. + + + + Removes the element. If this is the last element in the + collection, remaining references will be deleted and the key is deleted from the dictionary. + If updating is enabled, the registered references will all get a value of null. + + The key. + The node. + if set to true [update references]. + + + + Removes the unused references in a collection. Unused references may exist, after an element + is deleted. + + The collection. + The element. + + + + Updates the references in a collection. Updates are applied, if the updating mode is + on and a referenced element is removed or changed. + + The collection. + The element. + The value. + if set to true the referenced element has been deleted. + The actual registry key. + + + + This class is used to get key-based access to XML nodes of an CAEX document using an identifying string. + Currently the CAEX ID and the CAEX Name of an XML node are valid keys. The class currently + uses three different tables to store nodes. The IDTable is used to identify nodes with the CAEX ID. The + PathTable is used to identify nodes with the CAEXPath and the Alias of an ExternalReference object is + used to identify nodes which contain references to nodes which are not contained in the current document + but stored in an externally referenced document. + + + + + The Key used to identify elements which define a reference attribute but with an invalid value + + + + + The Key used to identify elements which don't define an ID but should have one. + + + + + The Key used to identify elements which don't define a reference attribute but should have one. + + + + + Initializes a new instance of the class. + + The root. + + + + Gets the alias table. This Table contains the ExternalReference objects as well as the references using + the alias of the ExternalReference. + + + + + Gets the identifier table. This Table contains the Elements identifiable by an ID as well as the references + to the element using the ID. + + + + + Gets the name table. This Table contains the Elements which reference another element using the name of that + element. + + + + + Gets the path table. This Table contains the Elements identifiable by a CAEXPath as well as the references + to the element using the Path. + + + + + Gets the root which creates the dictionary. + + + + + Adds the specified XML element and all its descendants to the table. An element is added + if it is a CAEXClass , + an element with an identifier , + an element with an ID reference or + an element with a Path reference . + + The service. + The element. + + + + Adds the provided node if not already added using its CAEX ID as the key. If the ID is missing, the node + is added with the "NOKEY" identifier. + + The node. + + + + Adds the provided node if not already added using its ID reference attribute as the key. + + The service. + The node. + + + + Adds an lookup table entry with name reference. + + The service. + The node. + + + + Adds the node using its path reference attribute as the key. + + The service. + The node. + + + + Finds all the elements, which are identifiable by a CAEX path and are descendants of the + specified CAEX object. Only elements are included, which can be referenced by their path + from other CAEX objects. These includes also the elements, which + represent an element on the path (like class libraries). The elements are put into a lookup table, + using the path as a key. + Elements, having the same CAEX path are grouped together.The Elements are represented as + . + + The CAEX object. + Elements, which are identifiable by a CAEX path. + + + + Finds all elements with IDs, which are descendants of the provided CAEX object. + Elements, using the same ID are grouped together. + + The CAEX object. + Elements with an ID + + + + Finds all the elements, which are have a reference to a class using a CAEX path. The elements are put into a + dictionary, + using the path as a key. The Elements are represented as . + + + + + Finds all elements which have references to other elements using the ID of the referenced element + + + + + Finds all elements with IDs. + + + + + Finds all elements with a name reference, which are descendants of the provided CAEX objects. Elements + using the same name in their reference are grouped together. A name reference uses the CAEX attribute Name + of another CAEX object to reference that CAEX object. + + The CAEX object. + Elements with name references. + + + + Finds the table value using the Alias as a key + + The alias. + + the identified table value + + + + + Finds the table value using the ID as a key + + The ID. + if set to true [is alias]. + + the identified table value + + + + + Finds the table value using the path as a key + + The path. + if set to true [is alias]. + + the identified table value + + + + + Gets all ExternalInterface objects which are used in InternalLinks. + + A collection of all ExternalInterface objects, having an associated InternalLink. + + + + Called when [changed reference]. + + The service. + The instance containing the event data. + The change mode. + + + + Handles the event. + + The service. + The instance containing the event data. + The change mode. + + + + Updates the complete table for all descendants of the associated root node. + + The service. + The element. + if set to true [automatic update]. + + + + This method is used to handle a name change for any CAEX element, which is a CAEXClass. It will updated the + elements registration + and also - if the auto update is enabled - the updates for all references to this element and nested CAEXClass + elements. + + The instance containing the change information. + The change mode. + if set to true [is automatic update enabled]. + + + + Determines whether the specified key is a special reference key used to identify + invalid and missing references. + + The key. + + true if the specified key is a special reference key; otherwise, false. + + + + + this methods applies the specified action on all IDReference attributes of the provided node. + + The node. + The action. + + + + this methods applies the specified action on all Name Reference attributes of the provided node. + + The node. + The action. + + + + this methods applies the specified action on all path reference attributes of the provided node. + + The node. + The action. + + + + Get the key to identify items which use an alias in their reference. If the reference doesn't contain + an alias, the result is null. + + The reference. + The path parts array, which is created to identify an alias in the reference. + If an alias is identified, this is the alias table. + + + + + Builds an ID-Key from the provided reference. + + The reference. + The attribute. + Name of the attribute. + The owner. + The table which has to be used with the identified key. + + + + + Get the key to identify items which use an ID in their reference. If the reference is not a valid + GUID, the key is set to INVALIDREF. + + The key. + + + + + Builds a Name-Key from the provided reference. + + The reference. + The attribute. + Name of the attribute. + The owner. + The path parts. + The table, which has to be used with the identified key. + + + + + Get a key to identify items, which don't define a reference but need to do so. + + The attribute. + Name of the attribute. + The owner. + + + + + Builds a Path-Key from the provided reference. + + The reference. + The attribute. + Name of the attribute. + The owner. + if set to true [is alias]. + The path parts. + + + + + Removes the node, registered with its ID from the table. All references to the ID are moved + to the 'invalid' entry. + + The node. + if set to true [update references]. + + + + Removes the ID-references registered with this node from the table. + + The service. + The node. + + + + Removes the Name-references registered with this node from the table. + + The service. + The node. + + + + Removes the node, registered with its CAEXPath from the . + + The node. + if set to true [update references]. + + + + Removes all path references which have been registered with this node. + + The service. + The node. + + + + This class implements a list of s. The list may contain different + types of objects, s and s. + + + + + + Gets all XAttributes from the Node list. + + + + + Gets all XElements from the Node list. + + + + + Gets a value indicating whether this instance contains a. An XAttribute represents + a reference to another node. The reference element is the parent of the attribute. + + + true if this instance has references; otherwise, false. + + + + + Gets all XElements from the Node list which are references. These are all parent nodes of the + attribute elements in the list. + + + + + Adds the specified node to the list, if it is not already contained. + + The node. + + + + This class is a query service based on dictionaries. + + + + + + + + Initializes a new instance of the class. + + + + + Occurs when any reference has been updated. + + + + + Gets or sets a value indicating whether this instance will automatically update + cross references between AutomationML objects. + + + true if the automatic update is enabled; otherwise, false. + + + + + Registers a new instance of a LookupService with the of the AMLEngine. + + The service instance + + + + Unregisters this service + + + + + Adds the document to the query service. All tables for the document will be created. + + The document. + doc + + + + Removes the document from the query service. All tables for the document will be unloaded. + + The document. + doc + + + + Gets all classes which have references to the provided class path. Use this method to get all classes which have + a class to class relation to the class, identified by the provided classPath. If the + is + set, only classes with the defined element name are considered. + + The CAEX document which is searched through. + The class path. + + Name of the element. Valid values are 'RoleClass', 'SystemUnitClass', 'InterfaceClass' and + 'AttributeType'. + + + An enumeration of all classes which use the identified class as a base class. + + + + + Gets all classes which have references to the provided CAEX object. Use this method to get all classes which have + a class to class relation to the provided CAEX object. + + The CAEX object. + + An enumeration of all classes which use the provided CAEX object as a base class. + + + + + Gets all classes which have references to the provided CAEX object and their referencing classes (recursive). + This method extends the + and gets not + only the directly + derived classes of a base class but also the derived classes of these classes and further on. + + The CAEX object. + + The derived classes tree for the specified base class. + + + + + Gets all classes which have references to the provided CAEX object and their referencing classes (recursive). + This method extends the + + and gets not only the directly + derived classes of a base class but also the derived classes of these classes and further on. If the + is + set, only classes with the defined element name are considered. + + The CAEX document which is searched through. + The class path. + + Name of the element. Valid values are 'RoleClass', 'SystemUnitClass', 'InterfaceClass' and + 'AttributeType'. + + + + + + Gets all the elements which are descendants of the provided CAEX object and are identifiable by a CAEX path. + Elements having the same path are grouped together. + Use this method to validate the existence of ambiguous CAEXPaths. + + The CAEX object. + + Lookup table of elements which are identifiable by a CAEX path. + + caexObject + + + + Gets all the elements which are descendants of the provided CAEX object and use an alias reference. + Elements referencing the same Alias are grouped together. + Use this method to validate the existence of referenced externals. If the is + set, only elements with the defined element name are considered. + + The CAEX object. + If parameter is set, only elements with the given element Name are considered. + + Lookup table of elements with Alias references. The Alias part of the CAEXPath is used as a dictionary key. + + + + + Gets all the elements which are descendants of the provided CAEX object and use a path reference. + Elements referencing the same path are grouped together. + Use this method to validate the existence of referenced classes. If the is + set, only elements with the defined element name are considered. + + The CAEX object. + If parameter is set, only elements with the given element Name are considered. + + Lookup table of elements with path references. The CAEXPath is used as a grouping key. + + caexObject + + + + Gets all the elements which are descendants of the provided CAEX object and which use identifier references. + Elements referencing the same ID are grouped together. + Use this method to validate the existence of referenced IDs. If the is + set, only elements with the defined element name are considered. + + The CAEX object. + If parameter is set, only elements with the given element Name are considered. + + Lookup table of elements with ID references. The ID is used as a dictionary key. + + caexObject + + + + Gets all the elements which are descendants of the provided CAEX object with IDs. + Elements using the same ID are grouped together. + Use this method to validate the uniqueness of IDs. + + The CAEX object. + If an ID is specified, only elements with the defined ID are searched. + + Lookup table of elements with IDs. The ID is used as a dictionary key. + + caexObject + + + + Returns all Elements which are descendants of the provided CAEX object with InternalLinks. + These elements are the owners of the InternalLink objects. + The returned collection may contain InternalElements and SystemUnitClasses as well. + + The CAEX object + + A collection of all objects with associated InternalLinks. + + caexObject + + Note the difference to the method + + which doesn't return the + owners of an InternalLink but the related elements. + + + + + Gets all the elements which are descendants of the provided CAEX object and use a name reference. + Elements referencing the same name are grouped together. + Use this method to validate the existence of referenced elements. + + The CAEX object. + + + Lookup table of elements with name references. The name is used as a grouping key. + + caexObject + + + + Returns all ExternalInterfaces in the provided document or optionally + in the caexObject and descendants, which are + instances of the standard Interface class + . + + The document. + Optional parameter, defining a possible start object for the query. + + A collection of all ExternalInterface which are instances of the + standard Interface class . + + + + + Returns all ExternalInterfaces in the provided document or optionally + in the caexObject and descendants, which are + instances of the Interface class defined by the provided . + + The document. + The CAEX ClassPath of the InterfaceClassType + Optional parameter, defining a possible start object for the query. + + A collection of all ExternalInterface which are + instances of the Interface class defined by the provided . + + + + + Returns all InternalElements which are descendants of the provided CAEX object with InternalLinks. + These elements are the owners of the InternalLink objects. + + The CAEX object + + A collection of all objects with associated InternalLinks. + + caexObject + + Note the difference to the method + + which doesn't return the + owners of an InternalLink but the related elements. + + + + + Returns all Mirrors of the specified Attribute + + The master. + + An enumeration of mirror Attribute objects + + + + + Gets alls the elements which are descendants of the provided CAEX object + which use the provided Alias in a reference. The elements in the result collection are + references, which define the CAEX object and the attribute, containing the reference + . + If the is + set, only elements with the defined element name are considered. + + The CAEX object. + The Alias. + If parameter is set, only elements with the given element Name are considered. + + a collection of element references which use the provided Alias in a reference + + caexObject + + + + Gets alls the elements which are descendants of the provided CAEX object + which have a reference to the provided CAEXPath. The elements in the result collection are + references, which define the CAEX object and the attribute, containing the reference + . + If the is set, only elements with the defined element name are considered. + + The CAEX object. + The path. + If parameter is set, only elements with the given element Name are considered. + + a collection of element references which have a reference to the provided Path^. + + + + + Gets alls the elements from the document which have a reference to the provided ID. The elements in the result + collection are + references, which define the CAEX object and the attribute, containing the reference + . + If the is + set, only elements with the defined element name are considered. + + The CAEX object. + The identifier. + If parameter is set, only elements with the given element Name are considered. + + a collection of element references which have a reference to the provided ID + + caexObject + + + + Returns all InternalElements and SystemUnitClasses which are descendants of the provided CAEX object, + which are related to others via InternalLinks. + + The CAEX object. + + A collection of related SystemUnitClass objects + + caexObject + + Note the difference to the method + + which doesn't return the + related elements but the InternalLink owners. + + + + + Returns all Mirrors of the specified ExternalInterface + + The master. + + An enumeration of mirror ExternalInterface objects + + + + + + Locates a CAEX object in the provided document using the specified ID - Attribute for identification. + + The document. + The identifier. + + if set to true tries to resolve an alias reference with an ExternalReferenceResolver + service. + + + The located object with the specified ID or null. + + + + + Locates a CAEX object in the provided document using the specified CAEX - Path for identification. + If the path uses an alias reference and an can be located, + it is tried to resolve the external reference and to get the object from the external source. + + The document. + The path. + + if set to true tries to resolve an alias reference with an ExternalReferenceResolver + service. + + + The first object which is found (if the path is not a unique identifier, than more than this object may exist). + + doc + + + + Returns all ExternalInterface objects which are descendants of the provided CAEX object + and are used in relations (InternalLinks). + + The CAEX object. + + A collection of related ExternalInterface objects + + caexObject + + + + Returns all Mirrors of the specified InternalElement + + The master. + + a collection of mirror InternalElements + + master + + + + Gets all InternalLinks that reference the specified InternalElement or SystemUnitClass. + + The InternalElement or SystemUnitClass. + + a collection of InternalLinks. + + systemUnitClass + + + + Gets all InternalLinks that reference the specified ExternalInterface. + + The ExternalInterface. + + a collection of InternalLinks. + + externalInterface + + + + Determines whether the specified InternalElement is referenced by other InternalElement + objects called 'Mirrors'. + + The InternalElement object. + + true if the specified element is a 'Master'-InternalElement; otherwise, false. + + internalElement + + + + Determines whether the specified ExternalInterface is referenced by other ExternalInterface + objects called 'Mirrors'. + + The ExternalInterface element. + + true if the specified element is a 'Master'-ExternalInterface; otherwise, false. + + externalInterface + + + + Determines whether the specified AttributeType is referenced by other AttributeType + objects called 'Mirrors'. + + The element. + + true if the specified element is a 'Master'-Attribute; otherwise, false. + + + + + Determines whether the specified CAEX object is referenced. + + The CAEX object. + + true if the specified CAEX object is referenced; otherwise, false. + + + + + RemoveDeletedElement the element which is deleted. + + The element. + + + + The PathDictionary contains nodes which are identifiable with a CAEXPath or which have + references using a CAEXPath. + + + + + + + Gets and sets the PathReferenceCollection for the last table which can be located with + the given path parts, where the last part defines the target table. + + + The . + + The parts of a path. These parts are build from a CAEXPath. + The index. + + the identified PathReferenceCollection + + + + + Gets and sets the PathReferenceCollection for the last table which can be located with + the given path parts, where the last part defines the target table. + + The parts of a path. These parts are build from a CAEXPath. + The index. + + the identified PathReferenceCollection + + + + + Removes the reference from the collection. If this is the last item in the + collection, the key is deleted from the dictionary. + + The key. + The node. + + + + TODO: There is a big confusion in this method because the parameter order is not same with the base + newValue/oldValue + + + + + + + + + + Adds all nodes, which are identifiable with the given node and the path parts + to the appropriate table. The name of each node should be equal to its path part. + The provided node's path is identifiable with the full path (all path parts). + + The path parts. + The node. + + + + + Adds the reference. + + The path parts. + The object. + + + + + Gets all elements, which are identifiable with a CAEXPath for this table and all included sub tables. + + collection of elements from all tables + + + + Gets all elements, which are references for this table and all included sub tables. + + collection of attributes from all tables + + + + Gets the dictionary which contains the node entries, assigned to the specified path parts. + + The path parts. + + + + + Removes the element from the path table. To remove the element, the elements dictionary + is located using a deep scan along the hierarchy path. If the leave node is reached, which contains + the element, the element is deleted and the ancestor levels are updated to (if any higher level becomes + empty). + + The path parts. + The element. + if set to true [update references]. + + + + Removes the reference. To remove the reference, the reference dictionary + is located using a deep scan along the hierarchy path. If the leave node is reached, which contains + the reference, the reference is deleted and the ancestor levels are updated to (if any higher level becomes + empty). + + The path parts. + The Attribute defining the reference to an element. + + + + + Updates the element. + + The path parts old. + The path parts new. + The element. + + + + This class defines the properties and methods of any value, stored in a . + A TableValue allows the construction of a hierarchical table structure. This is used to + support access to XML nodes using a . + + + + + Gets a value indicating whether this instance has a table of subordinate elements + + + true if this instance owns a table; otherwise, false. + + + + + Gets the table of associated registered elements. + + + + + This class is an implementation of a split service. This service + is able to split one into multiple files using split points. + + + + + + Initializes a new instance of the class. + + + + + Registers a new instance of a SplitService with the of the AMLEngine. + + The service instance + + + + Unregisters this service + + + + + Removes the split point for the provided CAEX object. + + The CAEX object. + + + + Removes the document from the internal registry of the split service. All registered split points for this document + will be removed. + + The document. + + + + Sets the split point for the provided CAEX object. If the actual list of split points for + the same document already contains a split point which is a child of the provided CAEX object, + this existing split point is removed from the list. + + The CAEX object. + + + + Splits the specified document on all currently defined split points. The + created libraries are saved in an AutomationML document and an ExternalReference + is created, using the specified alias. All remaining references to the + external source are renamed using the provided alias. After splitting, + the document doesn't contain any SplitPoints any more. + + The document. + The alias. + The file path. + The Split document + document or alias or filePath + File path is equal to source document + + + + Splits the specified source document. + + The source document. + The split point. + The alias. + The file path. + + + sourceDocument + or + alias + or + filePath + + File path is equal to source document + + + + Gets a collection of all split points for the provided document. + + The document. + + all split points for this document. + + + + + All alias references are checked and the necessary externals are copied from the source document. + + + + + + + + Adds the external reference for the provided alias to the source document if needed. + + The source document. + The alias. + The file path. + + + + this handler reacts on deleting elements and updates the split point list if needed + + The sender. + The instance containing the event data. + + + + Splits the internal element. ID references which stay in the source document but point to the split document are + changed + to ALIAS references. + + The source document. + The split document. + The internal element. + The alias. + + + + Splits the library. Path references and ID references which cross the library border are changed to alias + references. + + The source document. + The split document. + The library. + The alias. + + + + Checks the created external references in the source document, if they are still needed after every split point is + processed. + Additionally the outgoing references of the created split document are checked and the needed externals are + created. + + The source document. + The split document. + The alias. + + + + This class creates a new document with CAEX version 2.15 by transforming a document with CAEX version 3.0 + + + + + Executes the downgrade from Schema 3.0 to 2.15 + + New document with CAEX version 2.15 + + + + This class defines a service for a schema transformation. The service supports transformation + of CAEX documents from CAEX Version 2.15 to version 3.0 and back. Backwards transformation + can result in a loss of information. + + + + + + Prevents a default instance of the class from being created. + + + + + Raised from the ShemaTransform service when a transformation has started. + + + + + Raised from the ShemaTransform service when a transformation has ended. + + + + + Registration of a new + + The registered CAEX Schema Transformer. + + + + Unregisters this service + + + + + Method to do a schema transformation for the provided document to the defined schema. + This method can be used for upward and downward transformations. + + the document to be transformed + the target schema + the transformed document + + + + This class creates a new document with CAEX version 3.0 by transforming a document with CAEX version 2.15 + + + + + Executes the upgrade from Schema 2.15 to 3.0 + + New document with CAEX version 3.0 + + + + Converts the supported role type to role requirement type + + Parent internal element for supported roles + The role requirement object. + + + + ReferenceElement is a Tuple of an XElement and the Name of + an Attributes, which is used to reference another Element. The reference + may be used as a key to find the referenced Element. + + + + + Initializes a new instance of the class. + + The XML node. + Name of the reference attribute. + + + + Gets the XML node. + + The element. + + + + Gets the name of the reference attribute of the + + The name of the reference attribute. + + + + gets the value of the Reference Attribute + + + + + Gets the CAEX object which owns the reference. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + true if the specified is equal to this instance; otherwise, false. + + + + Returns a hash code for this instance. + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + This class defines a command that contains a collection of commands. This collection is treated + as a transaction. If a transaction is undone, all commands in the transaction will be undone too. + + + + + + This class implements an Undo and Redo service. When this service is registered, changes in an AutomationML + document + can be reversed. A sequence of actions can be grouped into transactions which than can be reversed + within a single undo operation. The AMLEngine will locate a registered UndoRedoService and will notify + the service of any changes, made to a document. The service manages individual stacks for each loaded CAEX + document. + + + + + + + Prevents a default instance of the class from being created. + + + + + Occurs when a property value changes. + + + + + Removes the XML document from the internal registry of the service. + Undo- and Redo Stacks for this document will be deleted. + + The document. + + + + Request to not record changes of the specified document. + + The document. + + + + Request to resume recording changes of the specified document. + + The document. + + + + Registers a new instance of a UndoRedoService with the of the AMLEngine. + + The service instance + + + + Unregisters this service + + + + + Begins a new transaction. All changes, made to a CAEXDocument inside a transaction are treated as a single + operation. + + The CAEX document to which the transaction should be associated. + A friendly name for this transaction. + If the transaction started. + + + + Determines, if the service can redo a command + + The document. + + true if this instance can redo any undone command from the specified document; otherwise, false. + + + + + Determines, if the service can undo a command. + + The document. + + true if this instance can undo any command from the specified document; otherwise, false. + + + + + Clears the stacks, managed for the specified document. + + The document. + + + + Ends the current transaction from the specified document. + + The document. + No matching Transaction Begin + If the transaction ended + + + + A command is pushed on the undo stack of this service. + + the CAEX command. + + + + Executes the last undone operation from the specified document again. + + The document. + + + + Gets the date of the most recently executed command for the specified document. + + The document. + if set to true the last undo operation is considered; otherwise the last redo operation. + + + + + Gets the command names of all redo actions for the defined document. + + The document. + + List of command names + + + + + Reverses the last action of the defined document. + + The document. + + + + Gets the command names of all undo actions of the defined document. + + The document. + + List of command names. + + + + + This class defines methods for a unique name service. The names of CAEX-Objects in a Sequence of + Elements should all be unique. If a unique name service is registered, the AMLEngine will + automatically call this service for a unique name generation whenever a new element is added + to a sequence which requires a unique name for its members. + This services uses a generation pattern which consists of the specified default name followed by + a generated ordinal number of the elements in a sequence. + + + + + + Registers a new instance of a UniqueNameService with the of the AMLEngine. + + The service instance + + + + Unregisters the current instance of the UniqueNameService with the of the AMLEngine. + + + + + Determines whether the specified element has a unique CAEX name in the sequence of equal elements + of its parent. + + The element. + + true if the elements name is unique, otherwise false. + + + + + Registers the default name for all CAEX objects with the provided element name. + + Name of the element. + The default name. + + + + Resumes activities of the unique name service. + + + + + Suspends activities of the unique name service. + + + + + Creates a unique CAEX Name for a child with the specified elementTagName in the specified sequence + + The sequence of elements. + Name of the element tag. + + a unique name using the registered default extended with an added number, representing the maximal number + + elementTagName + + + + Creates a unique CAEX Name for a child with the specified elementTagName in the specified sequence using the + specified + defaultName + + The sequence. + Name of the element tag. + The default name. + + a unique name using the registered default extended with an added number, representing the maximal number + + elementTagName + elementTagName + + + + Enumeration RepairTypeEnum + + + + + The options which are related to ID validation issues + + + + + The options which are related to Name validation issues + + + + + The options which are related to ID reference validation issues + + + + + The options which are related to Path reference validation issues + + + + + This Flag cause the generation of a unique ID for all Empty IDs + + + + + This Flag cause the generation of a unique ID for all Double IDs + + + + + This Flag cause the renaming of all empty Names with an automatic name generation algorithm. + To apply this method, a has to be registered, + + + + + This Flag cause the removal of all references where the Reference Value is empty + + + + + This Flag cause the removal of all ID References where the ID Value has not been resolved + + + + + This Flag cause the removal of all Path References where the Path reference Value has + not been resolved + + + + + This Flag cause the generation of a new name for an element, when it's CAEX-Path is + double so that the Path is unique. + To apply this method, a has to be registered. + + + + + This Flag cause the generation of a writer header + + + + + This Flag cause the generation of an AutomationML Version header + + + + + This Flag cause the correction of the Schema Version + + + + + This Flag cause the generation of a new GUID for existing GUID's with invalid formats + + + + + This Flag cause the generation of a new reference without the alias + + + + + This Flag cause the generation of source document information + + + + + This Flag cause the deletion of an element + + + + + This Flag cause the deletion of an element which reference an element out of the allowed scope. + + + + + This Flag cause the generation of a valid file URL in an ExternalDataConnector to a localized file. + + + + + This Flag cause the removal of all Name References where the Name reference Value has + not been resolved + + + + + The Option None indicates, that nothing should be done + + + + + Extensions for + + + + + Converts the specified repair option to a readable string + + Option for repairing an element. + a readable string describing the repair option + + + + Class ValidationElement is a Tuple of an XElement and associated detailed + Information about any inconsistencies, assigned with that Element. + + + + + + Checks the validation of the element + + + + + + Initializes a new instance of the class. + + The element. + The validation key. + + + + constant string, defining validation elements which are yet not repaired. + + + + + Gets the available repair options. + + + + + Gets the CAEX element wrapper for the XElement. + + + + + Gets the element which has been validated. + + + + + Gets information about the result of a repair operation for one element. + + + + + Gets or sets the validated attribute. + + + + + Gets a short information about the validation of one element. + + + + + Gets a longer description containing more detailed information about a validation issue. To get this information, + the informative mode + shall be enabled when the validation is performed. + + + + + Gets the type of the validation. + + + + + Determines whether the specified object is identical to the current object. + + The object to be compared with the current object. + + ,if the specified object and the current object are the same, otherwise + . + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Repairs a missing or invalid SchemaVersion. + + + + + + Repairs a missing or invalid AutomationML version. + + + + + + Repairs the writer header. + + + + + Class ValidationKey. + + + + + Initializes a new instance of the class. + + The key. + Type of the validation. + + + + Gets the key. + + The key. + + + + Gets the type of the validation. + + The type of the validation. + + + + This class defines methods to assist the interpretation of validation results. + + + + + Gets the Alias reference validation results from the validation result list. + + The validation result. + + All validation results, which are related to CAEX objects which use an Alias to + reference CAEX objects in external sources. + + + + + Gets the File reference validation results from the validation result list. + + The validation result. + All validation results, which are related to External References with a not Locatable external reference + + + + Gets the CAEXPath validation results for CAEX classes from the validation result list. + + The validation result. + All validation results, which are related to the CAEXPath of a CAEX class. + + + + Gets the ID reference validation results from the validation result list. + + The validation result. + + All validation results, which are related to CAEX objects which use IDs to + reference other CAEX objects. + + + + + Gets the Path reference validation results from the validation result list. + + The validation result. + + All validation results, which are related to CAEX objects which use CAEX path to + reference other CAEX objects. + + + + + Gets the Name reference validation results from the validation result list. + + The validation result. + + Currently only name references from mapping objects are validated + + + All validation results, which are related to CAEX objects which use a Name to + reference other CAEX objects. + + + + + Gets the ID validation results from the validation result list. + + The validation result. + All validation results, which are related to the CAEX object ID attribute. + + + + Gets the MetaData validation results from the validation result list. + + The validation result. + All validation results, which are related to MetaData assigned to a CAEXFile. + + + + Gets the validation results for all MetaData which are related to the AutomationML Version + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to MetaData which are related to the AutomationML Version. + + + + Gets the validation results for all MetaData which are related to the CAEX Schema Version + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to MetaData which are related to the CAEX Schema Version. + + + + Gets the validation results for all MetaData which are related to missing source information in an AML file. + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to missing source information in an AML file. + + + + Gets the validation results for all elements with wrong formatted IDs. + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to wrong formatted CAEX object IDs. + + + + Gets the validation results for all elements which are not uniquely identifiable with a CAEX path + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to wrong named CAEX objects which are referable. + + + + Gets the validation results for all elements which are repairable + + The validation result. + All validation results, which are repairable. + + + + Gets the validation results for all elements which are not repairable + + The validation result. + All validation results, which are not repairable. + + + + Gets the validation results for all elements with ID references which are not resolvable. + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to ID references which are not resolvable. + + + + Gets the validation results for all elements with CAEX path references which are not resolvable. + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to path references which are not resolvable. + + + + Gets the validation results for all elements with CAEX path references which are not resolvable. + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to path references which are not resolvable. + + + + Gets the validation results for all elements with ID references which are empty. + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to ID references which are empty. + + + + Gets the validation results for all elements with missing IDs. + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to missing CAEX object IDs. + + + + Gets the validation results for all elements with IDs which are not unique in the document. + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to CAEX object IDs which are not unique. + + + + Gets the validation results for all elements with references to an Alias, but no ExternalReference with that Alias + is defined. + + + The validation result. Use the + as a parameter for this method. + + All validation results, which are related to CAEX objects which use an undefined ExternalReference alias. + + + + Gets the validation results for all elements with references to an Alias, where the ExternalReference has been + merged into the + document already. + + + The validation result. Use the + as a parameter for this method. + + + All validation results, which are related to CAEX objects which reference an external source which is already + merged. + + + + + Enumeration ValidationTypeEnum + + + + + The identifier validation indicates ID related issues. like a double or missing ID or a wrong formatted ID. + The issues are repairable, if the ID is not referenced. + + + + + The class path validation indicates a double ClassPath or missing Path + + + + + The attribute path validation indicates a double AttributePath or missing Path + + + + + The path reference validation indicates a missing or unresolved reference to a class + + + + + The name validation indicates a missing or not allowed name + + + + + The ID reference validation indicates a missing or unresolved reference to an object + with an ID + + + + + The alias validation + + + + + The validation result has constituted an alias in an external reference which is not merged + + + + + The validation result has constituted a missing alias in an external reference + + + + + The file reference validation indicates a wrong FilePath in an external reference, which couldn't be resolved to an + existing file + + + + + The role attribute reference validation indicates a wrong reference to a role Attribute in a Mapping + + + + + The role Interface reference validation indicates a wrong reference to a role Interface in a Mapping + + + + + The SystemUnitClass attribute reference validation indicates a wrong reference to a SystemUnitClass Attribute in a + Mapping + + + + + The SystemUnitClass Interface reference validation indicates a wrong reference to a SystemUnitClass Interface in a + Mapping + + + + + This Flag indicates a cyclic dependency between classes + + + + + The automationML meta data validation indicates a couple of validation issues with metaData, as a missing schema + name or writerHeader + + + + + This service is defined for the validation of an AML document. Additionally the + service can also be used to repair specific invalid properties in a document. + + + + + + + Normalizes a file path and resolves relative paths + + a string with a relative path + The CAEX file. + + a normalized file path string + + + + + The invalid schema key + + + + + The no AML version key + + + + + The no name key + + + + + The no schema key + + + + + Registers a new validator service. + + The registered validator service. + + + + Unregisters the validator service. + + + + + Validates the ID of a CAEX object. IDs of CAEX objects shall be unique. + + The CAEX object. + + The ID, which should be assigned to the object. If no ID is defined, the uniqueness of the already + assigned ID is evaluated. + + A value tuple, returning the validation result and a message + + + + Validates a name of a CAEX object. Names of CAEX classes or types (RoleClasses, InterfaceClasses, + SystemUnitClasses and AttributeTypes), Attributes, + Libraries and CAEX InstanceHierarchies shall be unique across its siblings or across all child elements of the same + CAEX parent element over its life time. + This shall assure that referencing a library, a class, a type or an attribute by its path delivers a unique result. + + The CAEX object. + The name, which should be assigned to the object. + A value tuple, returning the validation result and a message + + + + Repairs the specified validated element. + + The validated element. + + true if the element has been repaired, false otherwise. + + + + + + Get Validation Information for all elements in the specified document, which have validation issues. The + provides detailed information about available Repair + Options and an additional Information Text. + + The CAEX document. + if set to true [generate long description]. + + An enumeration of validation information for CAEX objects. One CAEX object may have multiple + occurrences with different validation issues in this collection. + + + + + Get Validation Information for all elements in the specified document, which have validation issues. The + provides detailed information about available Repair + Options and an additional Information Text. This method should be used, if the Document is loaded from an + AutomationML container. The Validation service will check validity of external references which are packed + parts of the container. + + The CAEX document. + The AutomationML container, containing the document source. + if set to true generate long description for each validation issue. + + A collection of validation information for CAEX objects. One CAEX object may have multiple + occurrences with different validation issues in this collection. + + + + + Get Validation Information for all elements in the specified document, which have validation issues. The + provides detailed information about available Repair + Options and an additional Information Text. + + The CAEX document. + + If set, the associated parts, defined in the AutomationML container are used to validate + external references. + + if set to true [generate long description]. + + An enumeration of validation information for CAEX objects. One CAEX object may have multiple + occurrences with different validation issues in this collection. + + + + + Validates the alias references and returns the validation result describing possible repair options. The + provides detailed information about available Repair + Options and an additional Information Text. + + The CAEX document. + if set to true [generate long description]. + + + + + Gets the alias reference validation issues for the specified document. + + The document. + set, if a validation long description should be added to the result + + + + + Gets all validation issues for the specified document. + + The document + + if set to true [generate long description]. + + + + + + Gets the AutomationML version validation issues. + + The document. + if set to true [generate long description]. + + + + + Gets the CAEX schema validation issues. + + The document. + if set to true [generate long description]. + + + + + Gets the external reference validation issues. + + The document. + + if set to true [generate long description]. + + + + + Gets the identifier reference validation issues. + + The document. + if set to true [generate long description]. + + + + + Gets all ID validation issues for the provided document + + The document. + + + if set to false [only warning will be issued during troubleshooting of ID of + InternalElement in SUCLIB. + + + + + + + + + Determine if IE is under SystemUnitClassLib + + + + + + + Gets the meta data validation issues for the specified document. + + The document. + if set to true [generate long description]. + + + + + Gets the validation issues for elements which reference another element using a CAEXPath. + + The document. + if set to true [generate long description]. + + + + + Gets the validation issues for elements which should be identifiable with a CAEXPath. + + the document + set, if a validation long description should be added to the result + + a collection of validated elements. + + + + + + + Gets validation issues for source document or writer header information + + The document. + + a collection of validated elements. + + + + + Validates the alias reference of the specified document and the provided path and item. + + The document. + The path which contains an alias. + The alias reference item. + set, if a validation long description should be added to the result + + a collection of validated elements. + + + + + Validates the external reference. + + The CAEX file. + + The alias. + if set to true [generate long description]. + + a collection of validated elements. + + + + + Validates the identifier reference of the specified document and the provide ID reference and the reference item. + + The document. + The ID reference. + The reference item. + if set to true [generate long description]. + + + + + Validates the path reference of the specified document for the provided path and reference item. + + The document. + The path. + The reference item. + if set to true [generate long description]. + + + + diff --git a/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.dll b/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.dll new file mode 100644 index 0000000..d3f8ecd Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.xml b/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.xml new file mode 100644 index 0000000..b0a5227 --- /dev/null +++ b/SOURCE/Application/Plugins/ModellingWizard/AML.Engine.xml @@ -0,0 +1,18986 @@ + + + + AML.Engine + + + + + This class provides methods, which exists in the old AMLEngine_v3.x.x and are no longer supported. These methods are + provided to support the migration of legacy code. + + + + + Getting an enumerable of all Elements with InternalLinks of all + InstanceHierarchies and SystemUnitClassLibraries in the CAEXFile. The + enumeration may return InternalElements or SystemUnitClass elements. + + An IEnumerable with SystemUnitClasses is returned. + + + + Getting an enumerable of InternalElements with InternalLinks of all + InstanceHierarchies and SystemUnitClassLibraries in the CAEXFile. + + An IEnumerable with InternalElements is returned. + + + + Returns all SystemUnit Classes which are ancestors of this. This SystemUnit Class is + included in the enumeration as the first Element, The farthest is the last Element in + the enumeration. + + IEnumerable<SystemUnitClassType>. + + + + Assigns new GUIDs to this InternalElement and all of its child InternalElements + + + + + Assigns the new GUIds and redirect existing internal links. + + + If you want an assignment of new GUIDs with updated references, make a copy of the SystemUnitClass and replace the + old + class with the new class. + + The system unit class. + if set to true [include system unit classes]. + + + + This Method assigns new GUIds to the SystemUnitClass and its subordinate Children, which have an ID. The References + to the + old IDs in Mirrors and InternalLinks are redirected to the new ID. If a Reference is not found in any of the + subordinate + Elements, the Reference will not be changed. + + + If you want an assignment of new GUIDs with updated references, make a copy of the SystemUnitClass and replace the + old + class with the new class. + + The system unit class. + if set to true [include system unit classes]. + + + + Enumeration Method for direct Children of Type + + IEnumerable<AttributeType>. + + + + + + A clone copy of this object + + + + Clones the node. + + The CAEX object. + if set to true [deep clone]. + if set to true [assign new GUIDs to IEs]. + + The cloned node CAEXWrapper. + + + + + Check if the given classPath is a valid path to an existent class in the AML file. + + The CAEX object. + The class path to check for validity. + + True if a class at the given path exists, else false. + + + + + Creates a copy with a unique ID. + + The internal element. + if set to true [deep clone]. + + InternalElementType. + + + + + Enumeration Method for direct Children of Type + + IEnumerable<InterfaceClassType>. + + + + Enumeration Method for all ExternalReferences of the CAEXFile. + + IEnumerable<ExternalReferenceType>. + + + + Searches for an ExternalInterface in this InternalElement + + The system unit class. + Name of the ExternalInterface to search for + + An ExternalInterface of the given element with name attribute equal to interfaceName + + + + + Resolve a reference to an InternalElement and return the referenced element if found. + + The CAEX object. + The GUID of the InternalElement + + The InternalElement with the specified GUID + + + + + Getting a List of all Elements with InternalLinks of all + InstanceHierarchies and SystemUnitClassLibraries in the CAEXFile. The List + may contain InternalElements and SystemUnitClass elements. + + A List with InternalElements is returned. + + + + Get the whole attribute field containing a collection of all attributes of this object. + + The object with attributes. + + CAEX_ClassModel.MemberElement_Attribute. + + + + + Gets the name of the referenced SystemUnit class. + + The InternalElement. + + + + + Gets the name of the referenced InterfaceClass. + + The InterfaceClass. + + + + + Gets the external interfaces. + + IEnumerable<InterfaceClassType>. + + + + Getting a List of LinkedObjects object of this SystemUnitClass containing references to the concrete referenced + InternalElements via an InternalLink. + + The system unit class. + + A list of linkedObjects for this SystemUnitClass. This list is empty if no InternalLink exists + + + + + Get the Name of the specified object. + + + The CAEX object. + + + If the caexObject is of type CAEXObject, the name is returned; otherwise string.Empty. + + + + + This method returns the parent CAEXBasicObject of the current CAEXBasicObject. + + The CAEX file. + the CAEX Basic Object + + the parent CAEXBasicObject + + + + + Getting the XML Node for a class path. + + The CAEX object. + The full path to the referenced class. Hierarchies are separated via slash "/" + + The XML Node of the desired class, or null if none found. Use FindFastByID for speed optimizations. + + + + + Parsing a string of form GUID:Interface and returning the GUID + + The CAEX object. + A reference in form GUID:InterfaceClass + + The GUID + + + + + Returns an attribute value of a given attribute name. + + + Object with attributes + + + name of attribute + + + attribute value, "" if attribute does not exist + + + + + Getting a referenced InterfaceClass. Use FindFastByPath for speed optimizations. + + The CAEX object. + Full path to an InterfaceClass + + The referenced InterfaceClass. + + + + + Getting the name of the referenced Interface. + + The CAEX object. + A reference to a interface class in form GUID:InterfaceClass + + The name of the referenced interface class or string.empty if separator char not found in string + + + + + Gets the referenced SystemUnitClass using the . + + + + + Inserting an element of base type TypeBase to this object. The Element is inserted at the first Element + of any existing Elements of the same Type if nothing else is explicit defined. + + The CAEX object. + The element to insert. + Inserted at first element (true) or appended as last (false), + + true if inserted, false otherwise. + + + + + Adding a MappingObject element to this InternalElement. It is only allowed to add one + MappingObject node. + + The internal element. + The mapping object. + + + + Adding a MappingObject element to this Supported Role. + + The supported role element. + The mapping object. + + + + Inserting a new class instance to this object. This method can be overridden in derived classes. + The Instance is inserted as the first instance of any other element with the same type if nothing + else is explicit defined. + + The CAEX object. + The instance of a class to be inserted at this object. The instance can be of type + if true, inserted as first (default), otherwise at last + + , + + + True if insertion was successful, else false. + + + + + Inserting a RoleRequirement to this InternalElement. An exception is thrown if a + RoleRequirements is already existent. + + The internal element. + The RoleRequirement to insert + + A RoleRequirements node is already existent. It is not allowed to add more + than one RoleRequirements node to current element according to CAEX Schema + + + + + Appending the object into this object. + + The system unit class. + The inserted system unit family. + + + + + + The CAEX object. + an object to be inserted + if true, the element is inserted as the first of it's type, otherwise as the last. + + true if successfully inserted, false otherwise. + + + + + Enumeration Method for all InstanceHierarchies of the CAEXFile. + + IEnumerable<InstanceHierarchyType>. + + + + Enumeration Method for all InterfaceClass Libraries of the CAEXFile. + + IEnumerable<InterfaceClassLibType>. + + + + Enumeration Method for direct Children of Type + + IEnumerable<InternalElementType>. + + + + Determines whether the InternalElement instance is an AMLFacet. + + The internal element. + + true if the specified internal element is an AMLFacet; otherwise, false. + + + + + Determines whether the InternalElement instance is an AMLGroup. + + The internal element. + + true if the specified internal element is an AMLGroup; otherwise, false. + + + + + Determines whether the InternalElement instance is an AMLPort. + + The internal element. + + true if the specified internal element is an AMLPort; otherwise, false. + + + + + Adding a new RoleRequirements element to this InternalElement. It is only allowed to add + one RoleRequirements node in CAEX 2.15. + + The new RoleRequirements element + + + + Adding a new RoleRequirements element to this InternalElement using the defined roleClassPath. + It is only allowed to add + one RoleRequirements node in CAEX 2.15. + + The internal element. + The role class path. + + RoleRequirementsType. + + + + + Adds a new required value to the NominalScaledType Constraint. + + Type of the nominal scaled. + The value. + + + + Adding a new RequiredMaxValue to this ordinal scaled constraint + + Type of the ordinal scaled. + The value. + + + + Adding a new RequiredMinValue to this ordinal scaled constraint + + Type of the ordinal scaled. + The value. + + + + Adding a new OldVersion node to this revision. + + The revision. + The value. + + + + Adding a new NewVersion node to this revision. + + The revision. + The value. + + + + Adding a new Comment node to this revision. + + The revision. + The value. + + + + Adding a new RequiredValue to this ordinal scaled constraint + + + + + Enumeration Method for all RoleClass Libraries of the CAEXFile. + + IEnumerable<RoleClassLibType>. + + + + Gets all Children Objects of this SystemUnitClass. + + IEnumerable<SystemUnitFamilyType>. + + + + Enumeration Method for all SystemUnitClass Libraries of the CAEXFile. + + IEnumerable<SystemUnitClassLibType>. + + + + This class can be used to access InternalLink data. + + + + + Initializes a new instance of the class. + + The internal link. + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Gets or sets the Internal Link. + + The Internal Link. + + + + Gets the reference partner side A Internal Element. + + The reference partner side a element. + + + + Gets or sets the reference partner side A External Interface. + + The reference partner side a external interface. + + + + Gets or sets the reference partner side b Internal Element. + + The reference partner side b element. + + + + Gets or sets the reference partner side B External Interface. + + The reference partner side b external interface. + + + + Class AutomationMLContainer provides methods to save an AutomationML document and + related documents which are needed for the interpretation or representation of + AutomationML data into a single packed and zipped file. The various parts are + assembled into this AutomationMLContainer. The Class provides methods to retrieve + parts from a loaded container or for the assembly of parts into one single + container. A Utility, to build a self containing container from a loaded + CAEXDocument and the external referenced files, retrieved from the external + references and ExternalInterface classes is defined in a special service. + + + + + + The AutomationML MIME type + + + + + The disposed flag + + + + + Releases unmanaged and - optionally - managed resources. All streams, used to + save the packages, are closed. + + + true to release both managed and unmanaged resources; false to + release only unmanaged resources. + + + + + Class RelationshipType describes the distinguished package part relationship + types. This class cannot be inherited. + + + + + Initializes a new instance of the class + with the specified name and the specified mime type. + + + The name. + + + The mime type. + + + + + relationship type for package to part or root part to part relations to any content. + + + + + relationship type for package to part relation to the CAEX schema part. + + + + + relationship type for package to part or root part to part relations to a COLLADA part. + + + + + relationship type for package to part relation to the COLLADA schema. + + + + + relationship type for package to part or root part to part relations to a part, containing an AutomationML library. + + + + + relationship type for package to part or root part to part relations to a PLCopenXml part. + + + + + relationship type for package to part relation to the PLCopenXml schema. + + + + + relationship type for the package to part relation to the part containing the root document. + + + + + Gets the mime type of the relationship + + + The mime type. + + + + + Gets the name of the relationship. + + + The name. + + + + + Creates a RelationshipType for any content. If no mime type is defined, + the relationship type is used. + + + The mime type. + + + RelationshipType. + + + + + Compares the current instance's name to another object's name of the same type and + returns an integer indicating whether the current instance's name occurs + in the sort order before or after the other object or at the same position. + + An object to compare with this instance. + + A value indicating the relative order of the objects being compared. The return value has the following meaning: + Less than zero: This instance is in the sort order before . + Zero: This instance occurs in the sort order at the same position as . + Greater than zero: This instance follows in the sort order. + + + + + Returns the as the string representation of this instance. + + + A that represents this instance. + + + + + Initializes a new instance of the class + using the specified container file to load or save the package. + + + The file path of the container file. The file should have the extension .amlx. + + + + + Initializes a new instance of the class + using the specified container file to load or save the package. + + + The file path of the container file. + + + The file mode for the package file. + + + + + Initializes a new instance of the class + using the specified container file to load or save the package. + + + The file path of the container file. + + + The file mode for the package file. + + + The file access mode for the package file. + + + + + Initializes a new instance of the class + using the specified container file to load or save the package. + + + The file path of the container file. + + + The file mode for the package file. + + + The file access mode for the package file. + + + The file share access mode for the package file, which controls access of + other file streams to the same file. + + + + + Initializes a new instance of the class + using the specified stream resource. + + + The stream resource for the package. + + + + + Initializes a new instance of the class + using the specified stream resource. + + + The stream resource for the package. + + + The package mode. + + + + + Initializes a new instance of the class + using the specified stream resource. + + + The stream resource for the package. + + + The package mode. + + + The package access. + + + + + Gets or sets the compression mode which is + + by default. + + + The compression mode. + + + + + Gets the full path of the used container file. + + + The filename. + + + + + Gets the full path of the directory, used for extraction. + + + + + Gets the underlying package of this instance. + + + The package. + + + + + Adds any content to the package creating relationships to the package and to + the part, containing the root document using the relationship type . + + + package part, containing the parent root document + + + full name of the file which should be added + + + package internal name of the part + + + optional mime type, the default mime type for the relationship is used if empty + + + PackagePart. + + + + + Adds any content from the specified stream resource to the package creating + relationships to the package and to the part, containing the root document + using the relationship type . + + + package part, containing the parent root document + + + any content stream + + + package internal name of the part + + + optional mime type, the default mime type for the relationship is used if empty + + + PackagePart. + + + + + Adds a CAEX schema file to the package and creates a package - part + relationship to the package using the relationship type + + + full name of the file which should be added + + + package internal name of the part + + + added part + + + + + Adds a CAEX schema part retrieved from a stream resource to the package and + creates a package - part relationship to the package using the relationship + type . + + + collard stream + + + package internal name of the part + + + added part + + + + + Adds a COLLADA file to the package and creates relationships to the package + and to the root document using the . + + + package part, containing the parent root document + + + full name of the file which should be added + + + package internal name of the part + + + added part + + + + + Adds a COLLADA part read from the specified stream resource to the package and + creates relationships to the package and to the root document using the . + + + package part, containing the parent root document + + + COLLADA file stream + + + package internal name of the part + + + added part + + + + + Adds a COLLADA schema file to the package and creates a package - part + relationship to the package using . + + + full name of the file which should be added + + + package internal name of the part + + + added part + + + + + Adds a COLLADA schema part from the stream resource to the package and creates + a package - part relationship to the package using . + + + COLLADA stream + + + package internal name of the part + + + added part + + + + + Adds a library file to the package and creates relationships to the package + and to the package containing the root document using the . + + + package part, containing the parent root document + + + full name of the file which should be added + + + package internal name of the part + + + added part + + + + + Adds a library file to the package and creates a package - part relationship + of type . + + + full name of the file which should be added + + + package internal name of the part + + + added part + + + + + Adds a library stream to the package and creates a package - part relationship + of type . + + + library stream + + + package internal name of the part + + + added part + + + + + Adds a library from a stream resource to the package and creates relationships + to the package and to the part containing the root document using the + relationship type . + + + package part, containing the parent root document + + + library stream + + + package internal name of the part + + + added part + + + + + Adds a PLCopenXml file to the package and creates relationships to the package + and to the package part containing the root document using the relationship + type . + + + package part, containing the parent root document + + + full name of the file which should be added + + + package internal name of the part + + + added part + + + + + Adds a PLCopenXml part read from a stream resource to the package and creates + relationships to the package and to the package part containing the root + document using the relationship type . + + + package part, containing the parent root document + + + PLCopenXml stream + + + package internal name of the part + + + added part + + + + + Adds a PLCopenXml schema file to the package and creates a package - part + relationship of type to the package. + + + full name of the file which should be added + + + package internal name of the part + + + added part + + + + + Adds a PLCopenXml schema part from a stream resource to the package and + creates a package - part relationship of type . + + + COLLADA file stream + + + package internal name of the part + + + added part + + + + + Adds a root AML file to the package and creates a package - part relationship + of type . + + + full name of the file which should be added + + + package internal name of the part + + + added part + + + + + Adds a root AML file from a stream resource to the package and creates a + package - part relationship of type . + + + root document stream + + + package internal name of the part + + + added part + + + + + Saves and closes the package and all part streams. + + + + + Performs application-defined tasks associated with the release, return or + resetting of unmanaged resources. + + + + + Extracts all parts in the package to the specified directory + + + directory info defining the target directory for extraction + + + + + Extracts the specified part in the package to the specified directory. + + + directory info defining the target directory for extraction. + + + The part to extract to the specified folder. + + + + + Extracts all parts in the package to the specified directory + + + Full path to the target directory. + + + + + Saves the contents of all parts and relationships, contained in the package. + + + + + Returns the part with the given URI. + + + The part URI. + + + PackagePart. + + + + + Returns an enumeration of all parts inside the package. + + + IEnumerable<PackagePart>. + + + + + Returns an enumeration of all parts with the given relationship type from the package. + + + The relationship type. + + + IEnumerable<PackagePart>. + + + + + Gets the related part by URI. + + + The reference URI. + + + The relationship type. + + + PackagePart. + + + + + Returns an enumeration of all related parts for the given part. + + + The part. + + + IEnumerable<PackagePart>. + + + + + Returns an enumeration of the related parts for the specified part and + relationship type. + + + The part. + + + The relationship type. + + + IEnumerable<PackagePart>. + + + + + Returns an enumeration of the related parts for the specified part and + relationship type. + + + The part. + + + The relationship type. + + + IEnumerable<PackagePart>. + + + + + Returns an enumeration of all contained relationships of this instance. + + + IEnumerable<PackageRelationship>. + + + + + Returns an enumeration of all relationships with the given relationship type. + + + Type of the relation. + + + IEnumerable<PackageRelationship>. + + + + + Determines, if a part with the specified part URI exists. + + + The part URI. + + + true if the part exists, false otherwise. + + + + + Determines, if the specified relationship type exists. + + + Type of the relation. + + + true if relationship type exists, false otherwise. + + + + + Gets the file path to the first root AML document when the container is already + extracted. If the container is created + from a stream source or no root document is found, the return value is string.Empty. + + + The directory which was used for extraction. + + + System.String. + + + + + Gets the stream of the first root AML document. If no root document is found, the return value is null. + + + System.String. + + + + + Saves the package and all part streams, the package is still open. + + + + + To get the file path from a relative Uri, the unescaped data string without + the start '/' is needed + + + The URI. + + + System.String. + + + + + Adds the package part. + + + The full path. + + + The part URI. + + + Type of the relation ship. + + + if set to true [create package relation]. + + + The part. + + + PackagePart. + + + + + Adds the package part. + + + The stream. + + + The part URI. + + + Type of the relation ship. + + + if set to true [create package relation]. + + + The part. + + + PackagePart. + + + Part with Uri + partUri + not found + + + + + Changes the uri of a package part. The part is removed and readded with the provided + . All relationships of the part are updated. + + + + true if a part with the provided exists; otherwise false + + + + An AMLFile is a CAEXFile, containing information about the AutomationML version and the WriterHeader (if CAEX 2.15 + is used) or + the SourceDocumentInformation (CAEX 3.0 and later versions). + + + + + + Initializes a new instance of the class. + + The node. + + + + Gets or sets the AutomationML version. It is not allowed to set an AMLVersion which is higher than the + . If this is tried, the maximal known version is used for this document. + + + + + Gets the collection of defined document version information of the AMLFile + + + The collection of document version information. + + + + + Gets the AdditionalInformation values contained in this instance which are neither DocumentVersion or WriterHeader. + DocumentVersion and WriterHeader objects are realized using AdditionalInformation objects, too. But these elements + define a specific syntax to be recognized as specific AdditionalInformation objects. + + + + + Determines whether the specified XML element represents an AdditionalInformation object, using the specific + DocumentVersion syntax. + + The element. + + true if the specified element is a DocumentVersion element; otherwise, false. + + + + + Determines whether the specified XML element represents an AdditionalInformation object, representing the + AutomationMLVersion. + + The element. + + true if the specified element is the AutomationML version element; otherwise, false. + + + + + Determines whether the specified XML element represents an AdditionalInformation object, using the specific + WriterHeader syntax. + + The element. + + true if the specified element is a WriterHeader element; otherwise, false. + + + + + Determines whether the specified XML element represents an AdditionalInformation object, not using any specific + syntax as the + or elements. + + The element. + + true if the specified element is a generic AdditionalInformation element; otherwise, false. + + + + + Gets the maximal AutomationML version, which can be associated with this AMLFile. The maximal AutomationML version + depends on the used CAEX version. For CAEX 2.15 the maximal AutomationML version is 2.0. For CAEX 3.0 the maximal + version is 2.10. + + + + + Gets the collection of defined writer headers of the AMLFile + + + The collection writer header. + + + valid only for AutomationML Version 2.0 using CAEX 2.15 + + + + + Removes all "Writer Header" specific meta information out of this CAEX file. + + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed to a . + + + + + This function deletes any existing meta information corresponding to the writerID. + + Writer ID + + true if delete succeeded, false if writerID has not been found + + writerID + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed to a . + + + + + This methods returns an Enumeration of all "WriterHeader" meta information out of an + existing AutomationML file. + + + Enumerable with element containing all meta information, or null if no meta information + is existing + + + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. + + + + + This function returns the MetaInformation corresponding to the writerID, otherwise null. + + the writerID + + This function returns the MetaInformation corresponding to the writerID, otherwise null. + + writerID + + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed from a . + + + + + Determines whether the specified AML version is a valid version string for this AMLFile + + The version string. + + true if specified AML version is a valid version string for this AMLFile; otherwise, false. + + + + + This function replaces any existing meta information corresponding to the identical + oldWriterID with the new meta information defined in the new Meta information + + writerID of the old meta information + substitute for the old version of meta information + + true if succeeded, false if meta information about the oldWriterID is not found + + oldWriterID + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed to a . + + + + + This function sets the meta information required from AutomationML standard. If meta + information about the same writerID already exists, this meta information is replaced. + These information comprise source information about the AutomationML file. + + the name of the writing tool + an ID of the writing tool + the tool vendors name + the tools vendors URL + the version of the writing tool + the release number of the writing tool + the date of the last writing time + the title of the written project + an ID of the written project + writerID + + Extension Method for AutomationML Versions based on CAEX 2.15. If this method is called for a CAEX 3.0 or later + Version, the call + is redirected to the . + + + + + This method is a short version of the setMetaInformation. Meta data with identical + WriterID is replaced. + + the structure MetaInformation + + metaInformation + + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed to a . + + + + + This method labels this CAEX file as a standard AutomationML library coming from the + AutomationML e.V. It removes all other meta information and should only be used from + authorized persons in agreement with the AutomationML e.V. + + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed to a . + + + + + This function sets the meta information required from AutomationML standard. If meta + information about the same writerID already exists, this meta information is replaced. + These information comprise source information about the AutomationML file. + + the name of the writing tool + an ID of the writing tool + the tool vendors name + the tools vendors URL + the version of the writing tool + the release number of the writing tool + the date of the last writing time + the title of the written project + an ID of the written project + originID + + Extension Method for AutomationML Versions based on CAEX 3.0. If this method is called for an CAEX 2.15 Version, + the call + is redirected to the + . + + + + + A Facet is an AML object providing a sub-view on attributes or interfaces of the parent AML object. + This concept serves for the storage of different configuration settings such as HMI or PLC related data + and allows the automation of several control engineering steps. + For this, this part of IEC 62714 defines the AML RoleClass “Facet” (see6.4.4).“ [IEC 62714-1:2014 8.3 (p.43)] + + + + + + The Facet name + + + + + Initializes a new instance of the class. + + An 'InternalElement' XML node. + + + + Gets the collection of Attribute objects for this instance. + + + + + Gets a collection of ExternalInterface objects contained in this instance. + + + + + Gets the collection of Attribute objects for this instance. + + + + + Gets a collection of ExternalInterface objects contained in this instance. + + + + + The collection of InternalElement objects for an AMLFacet is always null. + + + + + Gets a value indicating whether this instance is an AMLFacet + + + + + Creates an AMLFacet AML object with this name, using the provided document. + + The CAEX document. + The name of the new AMLFacet. + The created AMLFacet. + + + + Conversion to get access to specific AutomationML defined Attributes + + The 'AMLFacet' CAEX object. + + The AMLFacet object, converted to an type, which provides access to + specific AML defined attributes. + + attributeType + + + + Get the original parent attributes which are already assigned with the AMLFacet + + A collection of already assigned Attribute objects of the parent. + + + + Get the original parent interfaces which are already assigned with the AMLFacet + + A collection of already assigned ExternalInterface objects of the parent. + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Determines whether the AMLFacet contains this attribute of the parent AML object. + + An attribute of the parent. + true if this attribute of the parent is assigned to the AMLFacet; + otherwise, false. + + + In CAEX 3.0 the Attribute of the AMLFacet has to be a Mirror Attribute. + CAEX 2.15 identifies Attributes with identical names. + + + + + Determines whether the AMLFacet contains this interface of the parent AML object. + + The external interface. + true if this interface of the parent is assigned to the AMLFacet; + otherwise, false. + + In CAEX 3.0 the Interface of the AMLFacet has to be a Mirror Interface. + CAEX 2.15 identifies Interfaces with identical names. + + + + + Inserts the specified CAEX object in it's associated container. AMLFacet objects are not allowed + to contain child InternalElement objects. If an InternalElement is tried to insert, the result is false. + + The CAEX object. + if set to true the element is inserted at the first position in it's container. + + true, if the provided CAEX object is inserted; If a copy of the CAEX object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + caexObject + + + + Get the parent attributes which are yet not assigned with the AMLFacet + + A collection of not assigned Attribute objects. + + + + Get the parent interfaces which are yet not assigned with the AMLFacet + + A collection of not assigned ExternalInterface objects. + + + + Gets the original Attribute from the which is related to this Facet + Attribute. + + The facet attribute. + An Attribute from the parent with the same name. + + In CAEX 3.0 the Source Attribute is the Master Attribute of the . + CAEX 2.15 the Source Attribute is the first identified Attribute of the parent with an identical name. + + + + + Gets the original ExternalInterface from the which is related to this Facet + Interface. + + The facet ExternalInterface. + An ExternalInterface from the parent with the same name. + + In CAEX 3.0 the Source Interface is the Master Interface of the . + CAEX 2.15 the Source Interface is the first identified Interface of the parent with an identical name. + + + + + The AML Group concept allows separating structure information from instance information. + An informative overview about the Group concept including examples is + provided in A.2.4.” [IEC 62714-1:2014 8.4 (p.43)]. An AML Group object shall be described by a + CAEX InternalElement with an association to the RoleClass “Group” which is defined in 6.4.3. [IEC 62714-1:2014 8.4 + (p.43)] + + + + + + The Group name + + + + + Initializes a new instance of the class. + + An InternalElement node + + + + Gets a collection of InternalElement objects contained in this instance. + + + + + Gets or sets the associated facet for the AMLGroup object + + + + + Gets the collection of InternalElement objects for this instance. + + + + + Gets a value indicating whether the defining InternalElement instance is an AMLGroup + + + + + Creates an AMLGroup AML object with this name, using the provided document. + + The CAEX document. + The name of the new AMLGroup object. + The new AMLGroup object. + + + + Returns the names of the facets, defined in the master InternalElements of all mirrors in this group. + + Enumeration of distinct names of facets. + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Inserts the specified CAEX object in it's associated container. An AMLGroup object shall only contain + InternalElements which are + AMLMirrorObjects and/or further AMLGroup objects. If other InternalElements are tried to insert, the result is + false. + + The CAEX object. + if set to true the element is inserted at the first position in it's container. + + true, if the provided CAEX object is inserted; If a copy of the CAEX object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + caexObject + + + + This class is a generic type definition for CAEX libraries, which are defined by AutomationML and contain + standardized classes. + + Type of the library items. + + + + + Initializes a new instance of the class. + + A CAEX library XML node. + + + + Gets the AutomationML class from this library, which can be identified by the provided CAEX path. + + The CAEX path. + The CAEX class from this library, which was identified by the CAEX path. + + + + Loads an AutomationML library from an external source. + + The document. + Name of the resource. + The import library. + The imported library. + + The current document and the imported library use different + CAEX Versions; To do a schema transformation the service needs to be registered + + + + + An AML Port is an AML object that groups a number of interfaces. An informative overview about the Port + concept including examples is provided in A.2.2. [IEC 62714-1:2014 8.2 (p.42) + + The AML Port object has been replaced in AutomationML version 2.10 with an Interface only + + + + + The Port name + + + + + Initializes a new instance of the class. + + An InternalElement node + + + + The collection of InternalElement objects for an AMLPort is always null. + + + + + Gets a value indicating whether the defining InternalElement instance is an AMLGroup + + + + + Creates an AMLPort AML object with this name, using the provided document. + + The CAEX document. + The name of the new AMLPort object. + The created AMLPort object. + + + + Inserts the specified CAEX object in it's associated container. AMLPort objects are not allowed + to contain child InternalElement objects. If an InternalElement is tried to insert, the result is false. + + The CAEX object. + if set to true the element is inserted at the first position in it's container. + + true, if the provided CAEX object is inserted; If a copy of the CAEX object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + caexObject + + + + An AMLSystemUnitClass is a SystemUnitClass which can contain AML objects. + + + + + + + Initializes a new instance of the class. + + A SystemUnitClass node + + + + + Initializes a new instance of the class. + + The system unit class. + + + + Gets the Collection of AMLFacet objects. + + + + + Gets the Collection of AMLGroup objects. + + + + + Gets the Collection of AMLPort objects. + + + + + Adds an AMLFacet object to the AMLSystemUnitClass with the provided name. + + The name of the new AMLFacet. + The added new AMLFacet. + + + + Adds an AMLGroup object to the AMLSystemUnitClass with the provided name. + + The name of the new AMLGroup. + The added new AMLGroup. + + + + Adds an AMLPort object to the AMLSystemUnitClass with the provided name. + + The name of the new AMLPort. + The added new AMLPort- + + + + Contains definitions and access methods of standard base AttributeType objects. + + Not available for CAEX version 2.15 + + + + The 'AssociatedExternalValue' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'AssociatedFacet' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'AutomationMLBaseAttributeTypeLib' library name + + Not available for CAEX version 2.15 + + + + The 'Cardinality' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'Category' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'Direction' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'DocLang' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'Category' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'ListType' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'LocalizedAttribute' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'MIMEType' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'OrderedListType' AttributeType path + + Not available for CAEX version 2.15 + + + + The 'RefURI' AttributeType path + + Not available for CAEX version 2.15 + + + + Determines whether the specified attribute reference defines an inheritance relation from the + AssociatedExternalValue AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + AssociatedFacet AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + Cardinality AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + Category AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + Direction AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + DocLang AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + Frame AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + ListType AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + LocalizedAttribute AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + MIMEType AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + OrderedListType AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified attribute reference defines an inheritance relation from the + RefURI AttributeType + + The attribute. + true if an inheritance relation is resolved; otherwise, false. + + + + This Class is a wrapper for the AutomationML standard 'AutomationMLBaseAttributeTypeLib' which is the + container for a hierarchy of standard AttributeType definitions. + + + Not available for CAEX version 2.15 + + + + Initializes a new instance of the class. + + The attribute type library. + + + + Gets the AssociatedExternalValue Attribute Type. + + + + + Gets the AssociatedFacet. + + + + + Gets the Cardinality attribute type. + + + + + Gets the Category Attribute Type + + + + + Gets the Direction Attribute Type. + + + + + Gets the ListType Attribute type + + + + + Gets the LocalizedAttribute attribute type. + + + + + Gets the MIMEType attribute type. + + + + + Gets the OrderedListType attribute type. + + + + + Gets the RefURI attribute Type. + + + + + Gets the AutomationMLBaseAttributeTypeLib from the provided document. If the document doesn't contain + the required library it will be automatically imported from an external resource. + + The CAEX document. + The AutomationMLBaseAttributeTypeLib + Not available for CAEX version 2.15 + + + + Determines if the AutomationMLBaseAttributeTypeLib exists in the document. + + The document. + + true if the AutomationMLBaseAttributeTypeLib is loaded; otherwise, false. + + + + + Contains definitions and access methods of standard base InterfaceClass objects. + + + + + The AttachmentInterface class path (a Part 3 Interface) + + + + + The AutomationML base interface class path (a Part 1 Interface) + + + + + The AutomationML base interface class library name + + + + + The behaviour logic interface class path (a Part 4 Interface) + + + + + The COLLADA interface class path (a Part 1 Interface) + + + + + The communication interface class path (a Part 1 Interface) + + + + + The external data connector (a Part 1 Interface) + + + + + The interlocking connector interface class path (a Part 1 Interface) + + + + + The interlocking logic interface class path (a Part 4 Interface) + + + + + The interlocking variable interface class path (a Part 4 Interface) + + + + + The logic element interface class path (a Part 4 Interface) + + + + + The logic interface class path (a Part 4 Interface) + + + + + The order interface class path (a Part 1 Interface) + + + + + The PLCopenXML interface class path (a Part 1 Interface) + + + + + The port connector interface class path (a Part 1 Interface) + + + + + The PPR connector interface class path (a Part 1 Interface) + + + + + The sequencing behaviour logic interface class path (a Part 4 Interface) + + + + + The sequencing logic interface class path (a Part 4 Interface) + + + + + The signal interface class path (a Part 1 Interface) + + + + + The variable interface class path (a Part 4 Interface) + + + + + Determines whether the specified interface class is derived from the + AutomationMLBase interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + BehaviourLogicInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + COLLADAInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + Communication interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + ExternalDataConnector interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + InterlockingConnector interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + InterlockingLogicInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + InterlockingVariableInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + LogicElementInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + LogicInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + Order interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + PLCopenXMLInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + PortConnector interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + PPRConnector interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + SequencingBehaviourLogicInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + SequencingLogicInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + SignalInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Determines whether the specified interface class is derived from the + VariableInterface interface class. The method can resolve alias references anywhere + in the inheritance hierarchy. + + The interface class. + + true if an inheritance relation could be resolved; + otherwise, false. + + + + + Makes the AutomationML base interface. + + The interface class. + + + + Makes the COLLADA interface. + + The interface class. + + + + Makes the communication interface. + + The interface class. + + + + Makes the external data connector. + + The interface class. + + + + Makes the interlocking connector. + + The interface class. + + + + Makes the order interface. + + The interface class. + + + + Makes the PLCopen XML interface. + + The interface class. + + + + Makes the port connector. + + The interface class. + + + + Makes the PPR connector. + + The interface class. + + + + Makes the signal interface. + + The interface class. + + + + This Class is a wrapper for the AutomationML standard 'AutomationMLInterfaceClassLib' which is the + container for a hierarchy of standard InterfaceClass definitions. + + + + + + Initializes a new instance of the class. + + The role class library. + + + + Gets the standard AutomationMLInterfaceClassLib from the provided document. If the document doesn't contain + the required library it will be automatically imported from an external resource. + + The CAEX document. + The AutomationMLBaseRoleClassLib + + + + Determines if the AutomationMLInterfaceClassLib exists in the document. + + The document. + + true if the AutomationMLInterfaceClassLib is loaded; otherwise, false. + + + + + This Class is a wrapper for the AutomationML standard 'AutomationMLBaseRoleClassLib' which is the + container for a hierarchy of standard RoleClass definitions. + + + + + + Initializes a new instance of the class. + + The role class library. + + + + Gets the automation ml base role. + + + The automation ml base role. + + + + + Gets the facet. + + + The facet. + + + + + Gets the frame. + + + The frame. + + + + + Gets the group. + + + The group. + + + + + Gets the interlocking source group. + + + The interlocking source group. + + + + + Gets the interlocking target group. + + + The interlocking target group. + + + + + Gets the logic object. + + + The logic object. + + + + + Gets the port. + + + The port. + + + + + Gets the process. + + + The process. + + + + + Gets the process structure. + + + The process structure. + + + + + Gets the product. + + + The product. + + + + + Gets the product structure. + + + The product structure. + + + + + Gets the property set. + + + The property set. + + + + + Gets the resource. + + + The resource. + + + + + Gets the resource structure. + + + The resource structure. + + + + + Gets the structure. + + + The structure. + + + + + Determines if the AutomationMLBaseRoleClassLib exists in the document. + + The document. + + true if the AutomationMLBaseRoleClassLib is loaded; otherwise, false. + + + + + Gets the AutomationMLBaseRoleClassLib from the provided document. If the document doesn't contain + the required library it will be automatically imported from an external resource. + + The CAEX document. + The AutomationMLBaseRoleClassLib + + + + Contains definitions and access methods of standard base RoleClass objects. + + + + + The 'AutomationMLBaseRole' RoleClass path + + + + + The 'AutomationMLBaseRoleClassLib' library name + + + + + The 'Facet' RoleClass path + + + + + The 'Frame' RoleClass path + + + + + The 'Group' RoleClass path + + + + + The 'InterlockingSourceGroup' RoleClass path + + + + + The 'InterlockingTargetGroup' RoleClass path + + + + + The 'LogicObject' RoleClass path + + + + + The 'Port' RoleClass path + + + + + The 'Process' RoleClass path + + + + + The 'ProcessStructure' RoleClass path + + + + + The 'Product' RoleClass path + + + + + The 'ProductStructure' RoleClass path + + + + + The 'PropertySet' RoleClass path + + + + + The 'Resource' RoleClass path + + + + + The 'ResourceStructure' RoleClass path + + + + + The 'Structure' RoleClass path + + + + + Determines whether the specified role reference defines an inheritance relation from the + AutomationMLBaseRole RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + Facet RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + Frame RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + Group RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + InterlockingSourceGroup RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + InterlockingTargetGroup RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + LogicObject RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + Port RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + Process RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + ProcessStructure RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + Product RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + ProductStructure RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + PropertySet RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + Resource RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + ResourceStructure RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the + Structure RoleClass + + The role. + true if an inheritance relation is resolved; otherwise, false. + + + + Makes the AutomationML base role. + + The used role. + + + + Makes the facet. + + The used role. + + + + Makes the group. + + The used role. + + + + Makes the port. + + The used role. + + + + Makes the process. + + The used role. + + + + Makes the process structure. + + The used role. + + + + Makes the Product. + + The used role. + + + + Makes the product structure. + + The used role. + + + + Makes the property set. + + The used role. + + + + Makes the resource. + + The used role. + + + + Makes the resource structure. + + The used role. + + + + Makes the structure. + + The used role. + + + + The Class DocumentVersions defines extension methods for the to retrieve + and manipulate document versions attached to a CAEXFile. The DocumentVersion feature is + described in the AutomationML BPR 06 "Naming of related documents and their versions" + . + + + + + The document element name + + + + + The document identifier attribute name used in the Document element + + + + + The document versions attribute name + + + + + The document versions attribute value + + + + + The version attribute name used in the document element + + + + + This function sets the DocumentVersion information for a referenced document. + If DocumentVersion information about the same document Identifier already + exists, this DocumentVersion information is replaced. + + + the CAEXFile of the AutomationML document + + + The "DocumentIdentifier" shall define the name of the referenced document. + + + The "Version" shall define the version range of the referenced document. The + version number shall have three numbers separated by ".". + + + Out parameter with error information if provided values are not valid or null. + Possibles errors are: + + + No Document Identifier defined + + + DocumentVersion to be parsed is null + + + Negative value in version string + + + Bad number of components in version string + + + Non-integer value in version string + + + Number out of range in version string + + + + + true, if information is added, false otherwise. + + + + + Appends the provided document version information to the AutomationML document + + + The CAEX file of the AutomationML document. + + + The version information. + + + Out parameter containing error information if the method returns false. + Possibles errors are: + + + No Document Identifier defined + + + DocumentVersion to be parsed is null + + + Negative value in version string + + + Bad number of components in version string + + + Non-integer value in version string + + + Number out of range in version string + + + + + true if the version information could be added, false otherwise. + + + + + Creates the additional information representing a document versions header and + appends it to the AutomationML document. + + + The CAEX file of the AutomationML document. + + + XElement. + + + + + This function deletes all existing DocumentVersion information from the + AutomationML document corresponding to the documentID. + + + this CAEX file of the AutomationML document + + + Document Identifier of the document version information, which should be deleted + + + true if delete succeeded, false if documentID has not been found + + + + + Get the Additional Information XML-Node from the CAEXFile, which represents + the Document Versions node. + + + The CAEX file. + + + If the Document Version Node exists, the XElement is returned, otherwise null. + + + + + This methods returns an Enumeration of all Information related to document + versions defined in the "DocumentVersions" information of an AutomationML document. + + + the CAEX file of the AutomationML document. + + + Enumerable containing all Documents in the DocumentVersion information, or + null if no DocumentVersion information exists. + + + + + This function returns the DocumentVersion Information from the AutomationML + document with the specified document Identifier, otherwise null. + + + this CAEX file of the AutomationML document. + + + the Document Identifier + + + This function returns the DocumentVersion - Information corresponding to the + document Identifier, otherwise null. + + + + + This function replaces any existing DocumentVersion information corresponding + to the identical oldDocumentID with the provided new DocumentVersion information. + + + The CAEX file of the AutomationML document. + + + Document identifier of the old DocumentVersion information + + + substitute for the old version of DocumentVersion information + + + error information if provided values are invalid + + + true if succeeded, false if DocumentVersion information corresponding to the + oldDocumentID is not found + + + + + This Class is defined for the modeling of document version information as defined in the AutomationML BPR + 06 "Naming of related documents and their versions". are stored + as attached to the CAEXFile Node of the AMLDocument. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + using the provided XML node (this should be an + ), containing document content. + + The element. + + + + The document attribute "DocumentIdentifier" shall define the name of the + referenced document. + + + The "DocumentIdentifier" of the document should not be changed. + + + + + The document attribute "Version" shall define the version range of the + referenced document. + + + The version number shall have three numbers separated by ".". The three + numbers define "main version", "minor version" and "revision". + + + + + This class provides extensions methods for the identification of properties of AML objects, using CAEX objects. + + + + + Conversion of any object which has an attribute collection to get access + to specific AutomationML defined attributes. + + The CAEX object, providing the attribute collection. + The ObjectWithAMLAttributes which provides accessors for AutomationML defined attributes. + caexObject + + + + Converts an InternalElementType to an AMLFacet. + + The InternalElement object. + An AMLFacet object. + + The conversion doesn't create the AMLFacet. + Use method to create a Facet. + + + + + Converts a CAEX file to an AML file. + + The CAEX file object. + An AMLFile object. + + + + Converts an InternalElementType to an AMLGroup. + + The InternalElement object. + An AMLGroup object. + + The conversion doesn't create the AMLGroup if the internalElement is not an AMLGroup + Use method to create a Group. + + + + + Converts an InternalElementType to an AMLPort. + + The InternalElement object. + An AMLPort object. + + The conversion doesn't create the AMLPort. + Use method to create a Port. + + + + + Converts an SystemUnitClassType to an AMLSystemUnitClass. + + The SystemUnitClass object. + An AMLSystemUnitClass object. + + + + Gets the AutomationML version for this CAEXFile object. + + The CAEX file. + The AutomationML version assigned to the CAEXFile. + caexFile + + + + Removes all "Writer Header" specific meta information out of this CAEX file. + + the CAEXFile + caexFile + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed to a . + + + + + This function deletes any existing meta information corresponding to the writerID. + + this CAEX file + Writer ID + + true if delete succeeded, false if writerID has not been found + + caexFile + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed to a . + + + + + Gets a defined FrameAttribute from the + collection of the . + If no such attribute exists, null is returned. + + The CAEX object. + The FrameAttribute. + caexObject + + + + This methods returns an Enumeration of all "WriterHeader" meta information out of an + existing AutomationML file. + + the CAEX file + + Enumerable with element containing all meta information, or null if no meta information + is existing + + caexFile + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed from a . + + + + + This function returns the MetaInformation corresponding to the writerID, otherwise null. + + this CAEX file + the writerID + + This function returns the MetaInformation corresponding to the writerID, otherwise null. + + caexFile + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed from a . + + + + + Determines whether the InternalElement instance is an AMLFacet. + + The internal element. + + true if the specified internal element is an AMLFacet; otherwise, false. + + + + + Determines whether the InternalElement instance is an AMLGroup. + + The internal element. + + true if the specified internal element is an AMLGroup; otherwise, false. + + + + + Determines whether the CAEX object is an AutomationML object. If the CAEX object is a SystemUnitClass or + InternalElement, + it is checked, if there exists a role reference to the AutomationMLBaseRole. If the CAEX object is an + ExternalInterface, + it is checked, if there exists an InterfaceClass reference to an AutomationMLBase Interface. + + The CAEX object. + + true if the CAEX object is an AutomationML object; otherwise, false. + + + + + Determines whether the InternalElement instance is an AMLPort. + + The internal element. + + true if the specified internal element is an AMLPort; otherwise, false. + + + + + Determines, if the attribute is an attribute of an AMLFacet. + + The facet attribute. + + true, if the Attribute belongs to an AMLFacet. + + facetAttribute + + + + Determines, if the ExternalInterface object is an ExternalInterface of an AMLFacet. + + The facet Interface. + + true, if the ExternalInterface belongs to an AMLFacet. + + facetInterface + + + + Gets a value indicating whether this instance is a RefType attribute. + + + true if this instance is a RefType attribute; otherwise, false. + + + + + Gets a value indicating whether this instance is a RefURI attribute. + + + true if this instance is a RefURI attribute; otherwise, false. + + + + + Creates a new Frame attribute for the if no Frame + attribute exists. + The provided values are used to initialize the Frame attribute values. + + The CAEX object. + The frame values. + + the new FrameAttributeType. + + caexObject + caexObject + + + + Gets the RefTypeAttribute from the if one exists. + + The object with attributes. + + + + + Gets the RefURIAttribute from the if one exists. + + The object with attributes. + + + + + This function replaces any existing meta information corresponding to the identical + oldWriterID with the new meta information defined in the newMetainformation + + My CAEX file. + writerID of the old meta information + substitute for the old version of meta information + + true if succeeded, false if meta information about the oldWriterID is not found + + caexFile + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed to a . + + + + + Sets the properties for the specified SourceDocumentInformation object using the provided MetaInformation + + The source document information. + The meta information. + + sourceDocumentInformation + or + metaInformation + + + + + This function sets the meta information required from AutomationML standard. If meta + information about the same writerID already exists, this meta information is replaced. + These information comprise source information about the AutomationML file. + + the CAEXFile + the name of the writing tool + an ID of the writing tool + the tool vendors name + the tools vendors URL + the version of the writing tool + the release number of the writing tool + the date of the last writing time + the title of the written project + an ID of the written project + caexFile + + Extension Method for AutomationML Versions based on CAEX 2.15. If this method is called for a CAEX 3.0 or later + Version, the call + is redirected to the . + + + + + This method is a short version of the setMetaInformation. Meta data with identical + WriterID is replaced. + + the CAEXFile + the structure MetaInformation + caexFile + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed to a . + + + + + This method labels this CAEX file as a standard AutomationML library coming from the + AutomationML e.V. It removes all other meta information and should only be used from + authorized persons in agreement with the AutomationML e.V. + + the CAEXFile + caexFile + + Extension Method originally designed for AutomationML Versions based on CAEX 2.15. If this method is applied to + a CAEX 3.0 document, the information is transformed to a . + + + + + This function sets the meta information required from AutomationML standard. If meta + information about the same writerID already exists, this meta information is replaced. + These information comprise source information about the AutomationML file. + + the CAEXFile + the name of the writing tool + an ID of the writing tool + the tool vendors name + the tools vendors URL + the version of the writing tool + the release number of the writing tool + the date of the last writing time + the title of the written project + an ID of the written project + caexFile + + Extension Method for AutomationML Versions based on CAEX 3.0. If this method is called for an CAEX 2.15 Version, + the call + is redirected to the + + . + + + + + Converts an AttributeType to a RefTypeAttribute. + + The AttributeType object. + An RefTypeAttributeType object. + + The conversion doesn't create the RefTypeAttributeType. + Use method to create a RefTypeAttributeType. + + + + + Converts an AttributeType to a RefUriAttribute. + + The AttributeType object. + An RefURIAttributeType object. + + The conversion doesn't create the RefURIAttributeType. + Use method to create a RefURIAttributeType. + + + + + This class provides methods to create and retrieve external data references as it is defined in the BPR document + "ExternalDataReference" Version 1.0.0 from July 2016. + + + + + The name of the library containing interface classes specified in BPR documents + + + + + The name of the library containing role classes specified in BPR documents + + + + + The name for the ExternalDataReference interface class + + + + + The class path for the ExternalDataReference interface class + + + + + The name for the ExternalData role class + + + + + The class path for the ExternalData role class + + + + + The language attribute name + + + + + Adds the AutomationMLBPRInterfaceClassLib containing all interface classes + used to model external document references to the AMLDocument. + + The CAEX file of the AMLDocument. + + Different CAEX Versions used; + register the SchemaTransform service to import the AutomationMLBPRInterfaceClassLib in your current document. + + + + + Adds the AutomationMLBPRRoleClassLib containing all role classes used to model + external document references to the AMLDocument. + + The CAEX file of the AMLDocument. + caexFile + + Different CAEX Version used; + register the SchemaTransform service to import the AutomationMLBPRRoleClassLib in your current document. + + + + + Adds a document element to the defined internalElement. A Document Element is semantically described + with an attached role defined with the base role class or a + derived role class. If no role class path is given as a parameter the default is used. If the specified + role class path can not be identified as a derived role from the + no document element is added (returns null). + + + The internalElement. + + + The name of the document element. + + + The Role class path to a role class, derived from the ExternalData Role Class + + + + created InternalElementType document element or null if the role class is invalid + + + + + Add a role reference to a external data role class or derived role class defined with the + given role class path as a supported role class to the internal element. If the specified + role class path can not be identified as a derived role from the + no role reference is added (returns false). + + The internalElement. + path to the role class + + true, if a supported role class with the defined path is added false if the role class is invalid + + InternalElement not contained in CAEXDocument + + + + Adds a document with the specified external reference interface to the document element. If the given internal + element + is not a document element or the defined class path to the external reference interface is not derived from + the standard base class no interface is added. + + The document element. + The name for the referencing interface. + The external data reference interface class path. + + The InterfaceClass which is created as a reference to the external data. + + Element is not contained in a CAEXDocument + + + + Adds the external data reference libraries used to model external document + references. It is checked, if the needed role- and interface libraries are + contained in the AMLDocument. If this libs are missing, they are imported from + an embedded resource stream. The current Version of the embedded libs is + version 1.0.0. + + The CAEX file of the AMLDocument. + caexFile + + + + Adds a language attribute to the internal element. If this is the first language attribute, a simple attribute is + added. + If this is not the first, a language attribute list is used. A former created simple attribute is transferred to a + list item. + + The internal element. + The language specification. + internalElement + + + + Gets the AutomationMLBPRInterfaceClassLib containing all interface classes + used to model external document references to the AMLDocument. + + The CAEX file of the AMLDocument. + The AutomationMLBPRInterfaceClassLib + caexFile + + + + Gets the AutomationMLBPRRoleClassLib containing all role classes used to model + external document references to the AMLDocument. + + The CAEX file of the AMLDocument. + The AutomationMLBPRRoleClassLib. + caexFile + + + + Gets all Internal Element Children from the specified internal element which + are document elements. + + The internal element. + + Enumeration of InternalElement objects, which are document elements. + + internalElement + + + + Gets the ExternalDataReference InterfaceClass from the AutomationMLBPRInterfaceClassLib. + + The AutomationMLBPRInterfaceClassLib. + The 'ExternalDataReference' InterfaceClass. + automationMLBPRInterfaceClassLib + + Couldn't locate the ExternalDataReference InterfaceClass + or Couldn't locate the CAEX file of the InterfaceClass. + + + + + Gets the 'ExternalDataReference' InterfaceClass from the AML document. + + The CAEX file of the AML document. + The 'ExternalDataReference' InterfaceClass. + + + + Gets the 'ExternalData' RoleClass from the AutomationMLBPRRoleClassLib. + + The AutomationMLBPRRoleClassLib. + The ExternalData RoleClass. + Couldn't locate the ExternalData role class + + + + Gets the ExternalData RoleClass from the AML document. + + The CAEX file of the AML document. + The ExternalData RoleClass + caexFile + + + + Gets the languages, defined for the document element. If the given internal element is not + a document element, the collection is empty. + + The document element. + + IEnumerable<System.String>. + + documentElement + + + + Determines whether the specified internal element is a document element. + + The internal element. + true if [is document element] [the specified internal element]; otherwise, false. + + + + This class defines a sequence of Attributes which belong to an . A Facet attribute shall be + related + to an existing attribute of the parent AML object, the identifier is the same name. Facet attributes which are not + part of + the parent object are not permitted. [IEC 62714-1:2014 8.3 (p.43)] + + + + + + Initializes a new instance of the class. + + The owner. + The constructor function to create an Attribute wrapper. + + + + This method is not applicable if the owner is an . + + + The created and appended CAEX object if the owner is not an . + + + + + Appends a new Attribute with the provided name to the sequence of Attributes, if the conditions for Facet + Attributes are fulfilled. + Facet Attributes are a subset of Attributes which are defined for the Parent object of an . + An Attribute + with the specified name can only be added as a Facet Attribute, if the Facets parent has an identical Attribute + with that name and the Attribute has not been associated to the Facet before. + + The name of the Attribute. + The created and appended Attribute, if the conditions were fulfilled; otherwise null. + + + + Inserts the specified attribute into this sequence. Before the attribute is inserted, it is checked, + if it is a valid Facet attribute. + + The Attribute. + + optional parameter, if set to true (default) the element is prepended to already existing ones, + otherwise it is appended. + + + + + This method is not applicable for Facet attributes. + + The created and prepended Attribute, if the owner is not an . + + + + This class defines a sequence of ExternalInterfaces which belong to an . A Facet interface + shall be related + to an existing interface of the parent object, the identifier is the same name. + Facet interfaces which are not part of the parent object are not permitted. [IEC 62714-1:2014 8.3 (p.43)] + + + + + + Initializes a new instance of the class. + + The owner. + The constructor function to create an ExternalInterface object. + + + + This method is not applicable for ExternalInterfaces, if the owner is an AMLFacet. + + + The created ExternalInterface object, if the method is applied. + + + + + Appends a new element with the provided name to this sequence. Before the ExternalInterface is appended, it is + checked, + if the ExternalInterface name is already used for any ExternalInterface of the AMLFacet parent. + + The name of the new ExternalInterface object. + The appended ExternalInterface. + + + + Inserts the specified ExternalInterface into this sequence. Before the ExternalInterface is inserted, it is + checked, + if it is a valid Facet-ExternalInterface. + + The ExternalInterface. + + optional parameter, if set to true (default) the element is prepended to already existing ones, + otherwise it is appended. + + + + + This method is not applicable for ExternalInterfaces, if the owner is an AMLFacet. + + The prepended ExternalInterface. + + + + This class is a wrapper for the AutomationML Attribute 'Frame'. To get access + to instances of this type, use the implicit + type conversion operator, defined for all CAEX objects which are allowed to + contain Attribute objects. + + + + + + The frame name + + + + + The rx name + + + + + The ry name + + + + + The rz name + + + + + The x name + + + + + The y name + + + + + The z name + + + + + The format information for the Frame attribute + (don't use this, because all frame values have to be saved as xs:double with standard format) + If you want to save values with specific number format, do the string conversion + + + + + Creates a wrapper for the specified Frame Attribute. It is not checked, if the provided attribute Node + represents a valid Frame attribute. + + An 'Attribute' XML node. + + + + Initializes a new instance of the class. It is not checked, if the provided + attribute Node + represents a valid Frame attribute. If Frame attributes exist, they are initialized using the specified frame + values. + + The initialize. + The frame values. + + + + Gets and sets the frame values for this FrameAttribute + + The frame. + + + + The Rx-attribute + + + + + The Ry-attribute + + + + + The Rz-attribute + + + + + The X-attribute + + + + + The Y-attribute + + + + + The Z-attribute + + + + + Creates a new FrameAttribute using the specified document. + + The document. + The Frame attribute + + + + Determines whether the specified node models an AutomationML Frame-Attribute. + + The node. + true if the specified node is frame; otherwise, false. + + + + Gets a value indicating whether the attribute is a Frame attribute. + + + true if the attribute is a frame attribute; otherwise, false. + + + + + Validates and repairs the frame data types if the data type is not defined or not of type 'xs:double' + + The node. + true if XXXX, false otherwise. + + + + Creates a new (sub-)attribute for each frame value if not already existing + + + + + Event handler for the PropertyChanged event when an attribute value of the frame has been updated + + The FrameValues object + The name of the property that changed + + + + A frame holds position information of an object. The object position is defined by values for x, y and z axis as + well as rotation values rx,ry and rz in degree, for + the x, y and z axis. + + + + + occurs, when a property changed + + + + + Notifies the property changed. + + The information. + + + + Rotation around x-axis + + + + + Rotation around y-axis + + + + + Rotation around z-axis + + + + + X position + + + + + Y position + + + + + Z position + + + + + Creating a new FrameValues object with initially all values set to 0.0 + + + + + Creating a new FrameValues object with the given frame values + + The x value + The y value + The z value + The rx value + The ry value + The rz value + + + + Gets or sets the rx. + + The rx. + + + + Gets or sets the ry. + + The ry. + + + + Gets or sets the rz. + + The rz. + + + + Gets or sets the x. + + The x. + + + + Gets or sets the y. + + The y. + + + + Gets or sets the z. + + The z. + + + + Class ListAttribute supports List Attributes as it is defined in the + BPR 'Modelling of List Attributes in AutomationML' from January 2016 Version 1.0.0 + + + + + The list type name used as a semantic ref type for unordered list attributes + + + + + The list type name used as a semantic ref type for ordered list attributes + + + + + Adds an additional list item attribute to the list attribute. If the List attribute already contains some items, + the new item will have the same item type as the already existing items. If this is the first item, the + specified itemType is used as the attribute data type. If no itemType is defined, the default data type for + the list item is "xs:string". The Item name is automatically set to the Index if the List attribute is an ordered + list, otherwise the defined itemName is used. + + The List attribute. + Type of the new item (ignored for a list attribute containing items) + Name of the item (ignored for an ordered list attribute). + the added list item Attribute. + + + + Changes the semantic of the specified attribute and converts to a list attribute. A first item is + added to the List attribute which is initialized with valued from the converted attribute. If the Attribute + is already a list attribute or the attribute contains child attributes it will not be converted. + + The attribute. + The name of the converted item + true, if the conversion was done, otherwise false. + + + + Creates a new list attribute for an element which can have attributes. + + The element. + Name of the new list attribute. + The items count for initialization of the containing attribute items. + Type of the item (unique for all items). + + Name of the item (ignored if an ordered list is created). When an item attribute + is created, the item Name gets the item index added to this name. + + if set to true the list is an ordered list. + The list AttributeType. + + + + Determines whether the specified attribute is a list attribute. This can be ordered or unordered. + + The attribute. + true if [is list attribute] [the specified attribute]; otherwise, false. + + + + Determines whether the specified attribute is an ordered list attribute. + + The attribute. + true if [is list attribute] [the specified attribute]; otherwise, false. + + + + Determines whether the specified attribute is an unordered list attribute. + + The attribute. + true if [is list attribute] [the specified attribute]; otherwise, false. + + + + Gets the values of all items in the list attribute + + The attribute. + Enumeration of the list items. + + + + Gets the values of all items in the list attribute + + The attribute. + Enumeration of the values of the list items. + + + + Changes the semantic of the specified attribute and converts it to a list attribute. If the Attribute + is already a list attribute or the attribute contains child attributes it will not be converted. + + The attribute. + If set to true the attribute is converted to an ordered list attribute + true, if the conversion was done, otherwise false. + + + + Class for modelling meta information as defined in the AutomationML standard. This class was originally designed + for AML Versions based on CAEX 2.15. For later versions you can switch to the + . + It is possible to set SourceDocumentInformation in a CAEX 3.0 document using this class. If this is applied, the + MetaInformation + is automatically transformed to SourceDocumentInformation. The transformation works in both directions. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class, using a WriterHeader node + to populate the properties. + + The writer header. + + + + Initializes a new instance of the class using the information + provided from the specified SourceDocumentInformation + + The SourceDocumentInformation object. + + + + time stamp of the AutomationML export + + + The last writing date time. + + + + + the ID of the writer tool, maybe identical to the tools name if it is not subject of change + + + The writer identifier. + + + + + the name of the writer tool (e.g. CoDeSys) + + + The name of the writer. + + + + + ID of the project that contains the source engineering data + + + The writer project identifier. + + + + + name of the project that contains the source engineering data + + + The writer project title. + + + + + release information about the writer tool, e.g. "beta12" + + + The writer release. + + + + + the vendor of the writer tool, e.g. "3S" + + + The writer vendor. + + + + + the web URL of the vendor - helps to get in contact to the vendor + + + The writer vendor URL. + + + + + version of the writer tool, e.g. "3.4" + + + The writer version. + + + + + This class is used to support the AMLGroup concept. An AMLGroup object shall only contain InternalElements which + are + AMLMirrorObjects and/or further AMLGroup objects. + + + + + + Initializes a new instance of the class. + + The owner. + Function to create an . + + + + Inserts the specified InternalElement into this sequence. Before the InternalElement is inserted, it is checked, + if it is a valid Group-InternalElement. + + The InternalElement. + + optional parameter, if set to true (default) the element is prepended to already existing ones, + otherwise it is appended. + + + + + Gets the MIME. + + The file extension. + List<System.String>Mime List. + + + + Gets the extension. + + Type of the MIME. + List<System.String>file extension. + + + + Gets the known extensions. + + Type of the MIME. + IEnumerable<System.String> All known file extensions. + + + + The Aml.Engine.AmlObjects Namespace contains classes that support the generation and analysis of AutomationML + features which are + specified in the AutomationML standard, white-papers, best practice recommendation or application recommendations. + These + features are not covered with the classes in the Aml.Engine.CAEX namespace, which only supports the CAEX standard. + Classes in + the Aml.Engine.AmlObjects namespace may be derived from the CAEX classes. + + + + + This class defines specific AutomationML defined attributes to be associated to any AutomationML object, + which is allowed to contain attributes. Instances of this class can be constructed with an + implicit type conversion operator, defined in the wrapper classes, which implement the + interface. + + + + + + + Creates a wrapper to access specific AML Attributes for the provides object with attributes + + The CAEX object. + + + + Get the collection of all attributes of this object. Inherited Attributes are not included. + + + + + The CAEXWrapper of the base CAEXObject which contains the here defined AML attributes + + + + + Gets the attributes and all nested attributes. + + + + + Gets a defined FrameAttribute from the collection of the + . + If no such attribute exists, null is returned. + + + The frame attribute. + + + + + Gets a defined RefTypeAttribute from the collection of the + . + If no such attribute exists, null is returned. + + + + + Gets a defined RefURIAttribute from the collection of the + . + If no such attribute exists, null is returned. + + + + + Creates a new Frame attribute for the if no Frame + attribute exists. + The provided values are used to initialize the Frame attribute values. + + The frame values for initialization. + the new FrameAttributeType. + + AutomationML defines, that only one Frame attribute can be assigned to an object. If a + Frame attribute exists, the frame values are set to the existing attribute. + + + + + Creates a new RefURI attribute for the object if none exists. + The RefURI attribute value is set to the provided Uri. + + The Uri string. + the RefURIAttributeType. + + AutomationML defines, that only one RefUri attribute can be assigned to an object. If a + RefUri attribute exists, the provided Uri is set to the existing attribute. + + + + + + RefType attribute is an Attribute of a ColladaInterface + + + + + The ref type attribute + + + + + Initializes a new instance of the class. + + The initialize. + + + + Gets a value indicating whether this instance is a RefURI attribute. + + + true if this instance is a RefURI attribute; otherwise, false. + + + + + The explicit ref type + + + + + The implicit ref type + + + + + Creates a new RefURIAttribute using the specified document. + + The document. + The RefTypeAttributeType attribute + + + + Determines whether this is an 'explicit' RefType + + true if this instance is explicit; otherwise, false. + + + + Determines whether this is an 'implicit' RefType + + true if this instance is implicit; otherwise, false. + + + + This class is a wrapper for the AutomationML defined Attribute 'RefURI'. To get access + to instances of this type, use the implicit + type conversion operator, defined for all CAEX objects which are allowed to + contain Attribute objects. + + + + + + The ref Uri attribute + + + + + Initializes a new instance of the class. + + An 'Attribute' XML node + + + + Gets the pure file path of this external reference attribute without the identifier. + + The file path. + + + + Determines, ob the refUri is equal to the attributes value + + + + + + + Gets a value indicating whether this instance is a RefURI attribute. + + + true if this instance is a RefURI attribute; otherwise, false. + + + + + Gets the referenced node. + + The referenced node. + + + + Gets or sets the URI. + + The URI. + + + + Creates a new RefURIAttribute using the specified document. + + The document. + The RefURIAttribute attribute + + + + Determines whether [is absolute URI]. + + true if [is absolute URI]; otherwise, false. + + + + Determines whether this instance is file. + + true if this instance is file; otherwise, false. + + + + The CAEX exception class. + + + + + + Initializes a new instance of the class. + + + The , which contains the serialized + object data for the thrown exception. + + + The , containing context + information about the source or destination. + + + + + Initializes a new instance of the class. + + The message describing the error. + + + + Initializes a new instance of the class. + + The error message explaining the cause of the exception. + + The exception that caused the current exception, or a null reference ( + in Visual Basic) if no inner exception is specified. + + + + + This class implements methods to work with a sequence of CAEX objects. The class will wrap all + elements with the same CAEX element name of an owner element to + the denoted wrapper type which is given as the type-argument. + + this is any CAEX object type + + + + + + Creates a new XML node and assigns the provided name to the CAEX 'Name' attribute. + + The owner. + The created XML node. + owner + + + + Initializes a new instance of the class. + + The owner. + The CAEX element name. + The constructor function to create a wrapper. + + + + Initializes a new instance of the class with condition. + + + + + + + + + Gets the first CAEX object with this name from the sequence of elements. + + the name of the CAEX object. + + a CAEX object + + + + + Gets the CAEX object which can be identified with a CAEX path, where the path parts are defined + in the provided array of names. + + The names extracted from a CAEX path. + + + + + Creates a new CAEX object with the specified name and appends it to the sequence. + + the name of the CAEX object. If a + service + is registered, the name may be altered to be unique in this sequence. + the created CAEX object. + + + + Inserts the specified element into this sequence. If nothing is specified the element is added. + If the asFirst is set to true, the element is prepended to already existing ones. If a UniqueNameService + can be located, the name of the inserted element is changed to be unique. + + The CAEX object. + + optional parameter, if set to true (default) the element is prepended to already existing ones, + otherwise it is appended. + + + The inserted CAEX object. If the provided CAEX object already belongs to a sequence, a copy of the CAEX object is + inserted and + returned as the result. + + + If the provided CAEX object already has an associated parent, a deep + copy of the CAEX object and not the original provided CAEX Object is inserted. Please keep in mind, that the copied + object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + caexObject + + + + Creates a new CAEX object with the specified name and prepends it to the sequence. + + the name of the CAEX object. If a + service + is registered, the name may be altered to be unique in this sequence. + the created CAEX object. + + + + This class can be used for a type based access to the value attributes of a CAEX element. It is required, that the + is set according to the XSD Schema types. + If the AttributeDataType is not defined, the type xs:string is assumed and the value is not encoded/decoded. + CAEX Elements, which use this feature are , + + and and their derivations. + The interface is implemented by these classes. The type based conversion is + implemented, using XML specific decoding and encoding methods, + defined in the .NET class . The decoded/encoded value for an attribute can be accessed via + the property. + + + + + prevents public instantiation + + + + + Gets a default decoded value according to the defined AttributeDataType + + + + + Gets a friendly string of the Attribute value. This string is not in any case equal to the attribute value string, + which is always an encoded string, according to the AttributeDataType. The conversion format used to convert the + value + to its string representation is fix and cannot be changed. + + + The friendly string. + + + + + Gets the Attribute, which defines the AttributeDataType. + + + + + Gets the .NET Type code which is converted from the XSD Schema attribute defined in the + . + + + + + Gets and sets the value attribute using the type specific XML conversion method. If no AttributeDataType is + defined, + the value is encoded / decoded as it is. + + + + + Gets the Element, which contains the Attribute value. + + + + + Gets the Name of the defining value attribute. + + + + + Translates an XSd schema type to an XmlTypeCode. + + + + + + + Type based comparison of attribute values. + + + + + + + Determines whether the specified , is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines if the type code derived from the Attribute datatype is a date time type. + The following type codes are recognized as date time types: + + + + + + + + + + + + + + + + + + + + The AttributeDataType 'duration' is not marked as a DateTime Type, because it should be transformed into + a CLR type. + + true, if the type code is a date time type; false otherwise. + + + + Determines if the type code derived from the Attribute datatype is a numeric or boolean type. + For a lit of numeric types . + + true, if the type code is a numeric or boolean type; false otherwise. + + + + Determines if the type code derived from the Attribute datatype is a numeric type. + The following type codes are recognized as numeric types: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true, if the type code is a numeric type; false otherwise. + + + + Determines if the type code derived from the Attribute datatype defined a part of a date. + The datatype ushort is used for a date part. + The following type codes are recognized as date parts: + + + + + + + + + + + + + true, if the type code is a date part; false otherwise. + + + + Determines if the type code derived from the Attribute datatype is a string type. + The following type codes are recognized as string types: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true, if the type code is a string type; false otherwise. + + + + Determines if the type code derived from the Attribute datatype is a binary type. + + + + + + Checks for all string data types, if the provided string is valid according to the defined data type + . + The supported types are : + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the Decoded Value of the Attribute. This may be null, if no attribute value is defined. + + + + + + Gets the encoded value which can be used to set the attribute value in an XML encoded way. + + the type based value + + + + Writes the encoded value into the CAEX document. If no AttributeDataType is set, the value is encoded as a string. + + the type based value + + + + Extension methods for class . + + + + + Appends a new RefSemantic object with the defined semantics to the specified CAEX object. + + The CAEX object + A string, defining some external defined semantic source. + The new RefSemantic object + + + + Determines whether the specified Attribute is referenced by other Attribute + objects called 'Mirrors'. + + The element. + + true if the specified element is a 'Master'-Attribute; otherwise, false. + + + + + This class provides extension methods for all types of CAEX objects. + + + + + Gets the associated CAEX schema manager of the CAEX object. + + The CAEX object. + + The SchemaManager associated to the CAEX object. + + caexObject + + + + Finds the ancestors of the provided CAEX object which have the given type. + + CAEX element type of the ancestors. + The CAEX object. + + + The ancestors of the CAEX object which are of the given type. + + caexObject + + + + Gets the CAEX document which contains this CAEX object. + + The CAEX object. + + The CAEX document, containing the CAEX object. + + caexObject + + + + Gets the CAEX file which contains this CAEX object. + + The CAEX object. + + The CAEX file, containing the CAEX object. + + caexObject + + + + Gets the associated CAEX schema of the CAEX object. + + The CAEX object. + + The Schema associated to the CAEX object. + + caexObject + + + + Creates a CAEX object of the given type from the specified XML element. + + CAEX element type. + The XML node. + CAEX object in the given type. + + + + Finds the descendants of the provided CAEX object which are of the given type. + + CAEX element type of the descendants. + The CAEX object. + + The descendants of the CAEX object which are of the given type. + + caexObject + + + + Finds the descendants of the provided CAEX object which are of the given type. + . + The CAEX object. + CAEX element type of the descendants. + + The descendants of the CAEX object which are of the given type. + + caexObject + + + + Finds the descendants of the provided CAEX object which are of the given type. + + CAEX element type of the descendants. + The CAEX object. + if true, the provided caex object is included in the enumeration. + + The descendants of the CAEX object which are of the given type. + + caexObject + + + + Finds the CAEX object with the specified id and the specified Type. + + CAEX element type of the searched CAEX object. + CAEX object, used to identify the document for the search. + Id of the CAEX object. + + CAEX object with the given id or null, if not found. + + caexObject + + + + Finds the CAEX object with the specified CAEX path and the specified Type. + + CAEX element type of the searched CAEX object. + CAEX object, used to identify the document for the search. + The CAEX path of the searched CAEX object. + + CAEX object with the given path or null, if not found. + + caexObject + + + + Finds the first ancestor of the specified CAEX object in the given Type. + + CAEX element type of the ancestor. + The CAEX object. + + First ancestor of the specified CAEX object or null, if no ancestor + with this Type exists. + + caexObject + + + + Finds the first ancestor of the specified CAEX object with the given Tag name + + The CAEX object. + Name of the tag. + + First ancestor of the specified CAEX object or null, if no ancestor + with this Tag name exists. + + caexObject + + + + Finds the first ancestor of the specified CAEX object which fulfils the specified predicate + + The CAEX object. + The condition for the ancestor object. + + First ancestor of the specified CAEX object or null, if no ancestor + meeting the condition exists. + + caexObject + + + + Tries to get a CAEX parent with the specified Type of the provided caexObject. If the parent is + not assignable to the provided type, the result is null. + + The expected type of the parent. + The CAEX object. + + The parent with the specified Type or null. + + caexObject + + + + Gets the Library which contains this CAEX object. + + The CAEX object. + + The containing Library. + + caexObject + + + + Gets a names for the specified caex wrapper object. If the specified object is + a , the Name is returned; otherwise the TagName of the + CAEX item. + + The caex object. + + + + + Adds an new Copyright node to this object if it doesn't exists. + + The CAEX object. + + A new Copyright node + + + + + Adds an new Description node to this object if it doesn't exists. + + The CAEX object. + + A new Description node + + + + + Adds an new Version node to this object if it doesn't exists. + + The CAEX object. + + A new Version node + + + + + This class defines extension methods for the class. + + + + + Tries to locate a CAEX object from the specified ID. + If the ID uses an alias reference and an can be located, + it is tried to resolve the external reference and to get the object from the external source. + + The document. + The identifier. + + if set to true tries to resolve an alias reference with an ExternalReferenceResolver + service. + + + The CAEXObject if it is found; otherwise null. + + + + + Tries to locates a CAEX object from the specified CAEX path. + If the path uses an alias reference and an can be located, + it is tried to resolve the external reference and to get the object from the external source. + + The document. + The CAEX path. + + if set to true tries to resolve an alias reference with an ExternalReferenceResolver + service. + + The CAEXObject if it is found; otherwise null. + + + + Extension methods for the CAEX element "ExternalInterface" + + + + + Determines whether the specified ExternalInterface is referenced by other ExternalInterface + objects called 'Mirrors'. + + The ExternalInterface CAEX element. + + true if the specified element is a 'Master'-ExternalInterface; otherwise, false. + + + + + Determines whether the specified ExternalInterface is related to other ExternalInterfaces using InternalLinks. + + The external interface. + + true if the specified external interface is related; otherwise, false. + + + + + Gets all ExternalInterface objects from the specified , which are + derived from an + InterfaceClass, identified with the given . + + The object with external interface. + The interface class path. + An enumeration of selected ExternalInterfaces of the given object. + + + + Gets the related external interfaces of the specified ExternalInterface connected with InternalLinks. + Either the or the of the + InternalLink is equal to the specified ExternalInterface. + + The ExternalInterface CAEX element. + An enumeration of related ExternalInterface elements + + + + Gets the related instances (SystemUnitClass or InternalElement) of the specified ExternalInterface connected with + InternalLinks. + Either the or the of the + InternalLink is equal to the specified ExternalInterface. + + The ExternalInterface CAEX element. + An enumeration of related Instances + + + + Gets the related InternalElements of the specified ExternalInterface connected with InternalLinks, which have a + role reference to the provided + . Inheritance is considered here. + Either the or the of the + InternalLink is equal to the specified ExternalInterface. + + The ExternalInterface CAEX element. + The role class path. + + An enumeration of selected related InternalElements. + + + + + Extension methods for all objects with ExternalInterface collections. + + + + + Determines whether an object with ExternalInterfaces has an associated reference to + the specified InterfaceClass. If inheritance relations between InterfaceClasses should be regarded, the + optional parameter 'regardInheritance' should be set. In this case the specified InterfaceClass is either identical + to a referenced InterfaceClass or a referenced InterfaceClass is derived from the specified InterfaceClass. + + + The InterfaceClass object. + + if set to true inheritance relations + are regarded (default is false). + + + true if this CAEX Element object has an associated reference to + the specified InterfaceClass; otherwise, false. + + InterfaceClass + + This sample shows how to call the method using + a standard base InterfaceClass from the + + + var amlInterfaceClassLib = AutomationMLInterfaceClassLibType.InterfaceClassLib (myDocument); + InternalElementType internalElement; + ... + internalElement.HasInterfaceClassReference (amlInterfaceClassLib.COLLADAInterface); + + + + + + Determines whether this Object with ExternalInterfaces has an associated InterfaceClass reference + with the specified CAEX path interface reference. If inheritance relations between interface classes should be regarded, the + optional parameter 'regardInheritance' should be set. In this case the specified InterfaceClass is either identical + to a referenced InterfaceClass or a referenced InterfaceClass is derived from the specified InterfaceClass. + + + The interface reference. + + if set to true inheritance relations + are regarded (default is false). + + + true if this object has an associated InterfaceClass reference + with the specified CAEX path interface reference; otherwise, false. + + interfaceReference + + This sample shows how to call the method using + a standard base InterfaceClass path from the + + + InternalElementType internalElement; + ... + internalElement.HasInterfaceClassReference (AutomationMLInterfaceClassLib.COLLADA); + + + + + + All external Interfaces of this Object with ExternalInterfaces with an associated InterfaceClass reference + with the specified CAEX path interface reference. If inheritance relations between interface classes should be regarded, the + optional parameter 'regardInheritance' should be set. In this case the specified InterfaceClass is either identical + to a referenced InterfaceClass or a referenced InterfaceClass is derived from the specified InterfaceClass. + + + The interface reference. + + if set to true inheritance relations + are regarded (default is false). + + + All external interfaces with an associated InterfaceClass reference + with the specified CAEX path interface reference. + + interfaceReference + + + + Extension methods for the SystemUnitClass element and its defining class + + + + + Gets the supported Roles and the inherited roles from base classes. + + List<SupportedRoleClassType>. + + + + Inserts the provided SystemUnitClass object as a subordinate child into this SystemUnitClass + + The SystemUnitClass ancestor. + The SystemUnitClass + + + + Adding a new SystemUnitClass to this SystemUnitFamily. + + The SystemUnitFamily object + Name of the SystemUnitClass element. + A new SystemUnitClass + + + + Gets all descendant Objects in the SystemUnitClass. + SystemUnitClasses on all levels are returned. + + The SystemUnitClass. + + An enumeration of all descendant SystemUnitClass objects. + + + + + Extension methods for the SystemUnitClassLib element and its defining class + + + + + Inserts the provided SystemUnitClass into this SystemUnitClass library. + + The system unit class library. + The system unit class. + + + + Adding a new SystemUnitClass to this SystemUnitClassLib. + + The SystemUnitClassLib object + Name of the SystemUnitClass element. + A new SystemUnitClass + + + + Gets all descendant Objects in the SystemUnitClassLib. + SystemUnitClasss on all levels are returned. + + The SystemUnitClassLib. + + IEnumerable<SystemUnitFamilyType>. + + + + + Extension methods for the RoleClassLib element and its defining class + + + + + Inserts the provided RoleClass into this RoleClass library. + + The role class library. + The role class. + + + + Adding a new RoleClass to this RoleClassLib. + + The RoleClassLib object + Name of the RoleClass element. + A new RoleClass + + + + Gets all descendant Objects in the RoleClassLib. + RoleClasss on all levels are returned. + + The RoleClassLib. + + Enumeration of the RoleClass descendants. + + + + + Extension methods for an InterfaceClassLib element and its defining class . + + + + + Inserting an InterfaceClass element to the InterfaceClassLib object. + + The InterfaceClassLib object + The InterfaceClass object to insert + + + + Gets all descendant Objects in the InterfaceClass Library. + InterfaceClasses on all levels are returned. + + The InterfaceClassLib object + IEnumerable<InterfaceFamilyType>. + + + + A new InterfaceClass is added to the specified InterfaceClassLib object. + + The InterfaceClassLib object + The name of the InterfaceClass to add + The new InterfaceClass element + + + + Extension methods for an InterfaceClass element and its defining class . + + + + + Create an InterfaceClass from this interface (e.g. ExternalInterface). An + InterfaceClass is of type InterfaceFamilyType and may contain + InterfaceFamilyTypes as child elements. + + InterfaceFamilyType. + + + + Inserting the new InterfaceClass element to the provided InterfaceClass object. + + The InterfaceClass object + The InterfaceClass object to insert + + + + Gets all descendant Objects of the InterfaceClass. + InterfaceClasses on all levels are returned. + + The InterfaceClass object + IEnumerable<InterfaceFamilyType>. + + + + A new InterfaceClass is added to the specified InterfaceClass object. + + The InterfaceClass object + The name of the InterfaceClass to add + The new InterfaceClass element + + + + Extension methods for an Mapping element and its defining class . + + + + + Appends the AttributeNameMapping object to the defined Mapping object + + The Mapping object + The AttributeNameMapping. + + + + Appends the InterfaceNameMapping object to the defined Mapping object + + The Mapping object + The interface name mapping. + Use of this method is restricted to CAEX Version 2.15. + + + + Adding a new AttributeNameMapping to the defined Mapping object. + An AttributeNameMapping allows the definition of the mapping between attribute names of corresponding RoleClasses + and SystemUnitClasses. + + The Mapping object + The attribute name of the SystemUnitClass + The attribute name of the RoleClass + The new AttributeNameMapping element + + + + Adding a new InterfaceIDMapping to the defined Mapping object. + An InterfaceIDMapping allows the definition of the mapping between Interfaces of corresponding RoleClasses and + SystemUnitClasses. + + The Mapping object + The ID of the interface in the SystemUnitClass + The ID of the interface in the RoleClass + The new InterfaceIDMapping element + Use of this method is restricted to CAEX Version 3.0 and above. + + + + Adding a new InterfaceIDMapping to the defined Mapping object. + An InterfaceIDMapping allows the definition of the mapping between Interfaces of corresponding RoleClasses and + SystemUnitClasses. + + The Mapping object + The interface in the SystemUnitClass + The interface in the RoleClass + The new InterfaceIDMapping element + Use of this method is restricted to CAEX Version 3.0 and above. + + + + Adding a new InterfaceNameMapping to the defined Mapping object. + An InterfaceNameMapping allows the definition of the mapping between Interface names of corresponding RoleClasses + and SystemUnitClasses. + + The Mapping object + The name of the interface in the SystemUnitClass + The name of the interface in the RoleClass + The new InterfaceNameMapping element + Use of this method is restricted to CAEX Version 2.15. + + + + Extension methods for the RoleClass element and its defining class . + + + + + Inserts the provided RoleClass as a subordinate child to this RoleClass. + + The role class ancestor. + The role class to be inserted. + + + + Adding a new RoleClass to this RoleClassFamily. + + The RoleClass object + Name of the RoleClass. + A new RoleClass + + + + Gets all descendant Objects in the RoleClass. + RoleClasses on all levels are returned. + + The RoleClass object. + + Enumeration of all descendant RoleClass objects. + + + + + The Aml.Engine.CAEX.Extensions Namespace contains extension methods for most of the + specific CAEXObject classes. The most of these extension methods are methods which + are obsolete and only kept to be downward compatible to AMLEngine the versions prior to + v5.0.0. For most of these methods, better alternatives are provided either via a specific + service or are available in the + namespace. + + + + + Extension methods for all objects with Attribute collections. + + + + + Copies all attribute of the source object with attributes to the target object including + children + + the target object + the source object + + true if the copy process should include the attribute values, + not recommended for classes + + nothing + + + + Gets the first attribute with the specified name from the attribute collection of the CAEX object. + + The CAEX object. + The attribute name. + Gets the Attribute with the provided name. + + + + Appends a new Attribute object with the defined name to the specified CAEX object. + + The CAEX object + the name of the new Attribute object + The new Attribute + + + + Sets the value for the attribute with the specified name from the attribute collection of the CAEX object. + If no attribute with that name exists, it is created. + + the CAEX object with an Attribute collection. + The attribute name + The attribute value + The modified attribute. + + + + Modifies the attribute with the specified name from the attribute collection of the CAEX object, using + the provided values. If no attribute with that name exists, it is created. + + parent object + attribute name + attribute value + attribute unit + attribute data type + The modified attribute. + + + + Modifies the attribute with the specified name from the attribute collection of the CAEX object, using + the provided values. If no attribute with that name exists, it is created. + + parent object + attribute name + attribute value + attribute defaultValue + attribute description + attribute unit + attribute data type + The modified attribute + + + + Modifies the attribute with the specified name from the attribute collection of the CAEX object, using + the provided values. If no attribute with that name exists, it is created. + Sets the AttributeDataType to xs:double + + parent object + attribute name + attribute value of type double + The modified attribute + + + + Modifies the attribute with the specified name from the attribute collection of the CAEX object, using + the provided values. If no attribute with that name exists, it is created. Sets the AttributeDataType to xs:double + + parent object + attribute name + attribute value of type double + attribute defaultValue + attribute description + attribute unit + The modified attribute + + + + Extensions for all classes which implement the interface. + + + + + Deletes the inherited element. According to CAEX [DIN EN 62424:2008-08 A.2.4.1 (pp.48-49)], + deleting of inherited properties is possible by redefinition of the corresponding data again in the child object + with the ChangeMode attribute set to "deleted". + + The class with base class. + Name of the element which should be deleted. + Type of the element which should be deleted. + true, if an inherited property was found and could be deleted; otherwise false. + + + + Gets a list of Attribute objects that are inherited from base classes. + The List will also contain the elements own Attribute objects, if the parameter is set (default). + If an Attribute is overwritten, only the last defined is contained. + + The class with a possible base class reference for inheritance. + if set to true includes the elements own ExternalInterface objects; otherwise not + + A list of Attribute objects + + + + + Gets a list of Attribute objects that are inherited from base classes. + The List will also contain the elements own Attribute objects, if the parameter is set (default). + If an Attribute is overwritten, only the last defined is contained. + + The class with a possible base class reference for inheritance. + if set to true includes the elements own ExternalInterface objects; otherwise not + + A list of Attribute objects + + + + + Gets a list of ExternalInterface objects that are inherited from base classes. + The List will also contain the elements own ExternalInterface objects, if the parameter is set (default). + If an ExternalInterface is overwritten, only the last defined is contained. + + The class with a possible base class reference for inheritance. + if set to true includes the elements own ExternalInterface objects; otherwise not + + A list of ExternalInterface objects + + + + + Gets a list of ExternalInterface objects that are inherited from base classes. + The List will also contain the elements own ExternalInterface objects, if the parameter is set (default). + If an ExternalInterface is overridden, only the last defined is contained. The result also contains the nested + interface descendants of an external interface. + + The class with a possible base class reference for inheritance. + if set to true includes the elements own ExternalInterface objects; otherwise not + + A list of ExternalInterface objects + + + + + Gets a collection of Attribute objects that are inherited from base classes. The own attributes are included in the + enumeration. + + The class with a possible base class reference for inheritance. + if set to true includes the own attributes. + + A collection of Attribute objects + + + + + Gets a collection of InternalElement objects that are inherited from base classes. + As default, the own InternalElements are included in the enumeration. + + The class with a possible base class reference for inheritance. + if set to true includes the own Internal Elements. + + A collection of InternalElement objects + + + + + Gets a collection of ExternalInterface objects that are inherited from base classes. + + The class with a possible base class reference for inheritance. + if set to true includes the own interfaces. + + A collection of ExternalInterface objects + + + + + Gets a collection of objects of the defined InheritedElement-Type that are inherited from base classes. + + The type of the inherited element. + the base class containing the element + if set to true the own elements are included. + + An enumeration of all inherited elements. + + + + + Determines, if the specified element is an inherited element. To be an inherited element, it has to be an + AttributeType, ExternalInterfaceType or InternalElementType element. + + the class providing the inheritance relation + the element to test + true, if a base class contains the element + + + + Determines, if an element of a class with an inheritance relation to a base class is an overridden element, what + means + a base class contains an element which is considered as equal to the provided element. In most cases, equality is + defined by equality of the element names. + + the base class containing the element + the element to test + true, if an element of a class with an inheritance relation to a base class is an overridden element + + true if the specified element is overridden; otherwise, false. + + + + + Determines, if an element of a class with an inheritance relation to a base class has an overridden element with + the specified name and type, what means a base class contains an element which name is equal to the provided + elementName. + + the base class containing the element + Name of the element. + Type of the element. + The overridden element if it exists; otherwise null. + + + + Name of the referenced Class without path information. + + Any object with a class reference. + Name of the referenced Class, if exists; otherwise string.Empty + + + + Name of the referenced SystemUnitClass without path information. + + The internal element. + Name of the referenced Class, if exists; otherwise string.Empty + + + + Name of the referenced InterfaceClass without path information. + + The interface Class. + Name of the referenced Class, if exists; otherwise string.Empty + + + + Deletes the inherited element. According to CAEX [DIN EN 62424:2008-08 A.2.4.1 (pp.48-49)], + deleting of inherited properties is possible by redefinition of the corresponding data again in the child object + with the ChangeMode attribute set to "deleted". + + + The class with base class. + Name of the element which should be deleted. + Type of the element which should be deleted. + true, if an inherited property was found and could be deleted; otherwise false. + + + + Gets a list of Attribute objects that are inherited from base classes. + The List will also contain the elements own Attribute objects, if the parameter is set (default). + If an Attribute is overwritten, only the last defined is contained. + + The type of the CAEX class. + The class with a possible base class reference for inheritance. + if set to true includes the elements own ExternalInterface objects; otherwise not + + A list of Attribute objects + + + + + Gets a list of ExternalInterface objects that are inherited from base classes. + The List will also contain the elements own ExternalInterface objects, if the parameter is set (default). + If an ExternalInterface is overwritten, only the last defined is contained. + + The type of the CAEX class. + The class with a possible base class reference for inheritance. + if set to true includes the elements own ExternalInterface objects; otherwise not + + A list of ExternalInterface objects + + + + + Gets a collection of Attribute objects that are inherited from base classes. The own attributes are included in the + enumeration. + + The type of the CAEX class. + The class with a possible base class reference for inheritance. + if set to true [include own]. + + A collection of Attribute objects + + + + + Gets a collection of InternalElement objects that are inherited from a base class. The own InternalElements are included in the + enumeration. + + The type of the CAEX class. + The class with a possible base class reference for inheritance. + if set to true [include own]. + + A collection of InternalElement objects + + + + + Gets a collection of ExternalInterface objects that are inherited from base classes. + + Type of the CAEX class. + The class with a possible base class reference for inheritance. + if set to true the interfaces of the provided class are included. + + A collection of ExternalInterface objects + + + + + Gets a collection of objects of the defined InheritedElement-Type that are inherited from base classes. + + The type of the inherited element. + The type of the class. + the base class containing the element + if set to true own elements are included. + + An enumeration of all inherited elements. + + + + + Determines, if an element of a class with an inheritance relation to a base class is an overridden element, what + means + a base class contains an element which is considered as equal to the provided element. In most cases, equality is + defined by equality of the element names. + + + the base class containing the element + the element to test + true, if an element of a class with an inheritance relation to a base class is an overridden element + + + + Determines, if an element of a class with an inheritance relation to a base class has an overridden element with + the specified name and type, what means a base class contains an element which name is equal to the provided + elementName. + + + the base class containing the element + Name of the element. + Type of the element. + The overridden element if it exists; otherwise null. + + + + Factory to create CAEX-Elements according to a provided Type. + + + + + Factory method to create a new CAEX object in the provided CAEX document. + The CAEX element is derived from the specified CAEX object Type. To insert + the new CAEX object into the document an appropriate insertion method has + to be used. + + The CAEX object Type. + The CAEX document. + The created CAEX object. + + document + + + + Factory method to create a new CAEX object in the provided CAEX document. + The CAEX element is derived from the specified CAEX object Type. To insert + the new CAEX object into the document an appropriate insertion method has + to be used. + + The CAEX document. + Name of the CAEX tag. + + The created CAEX object. + + + document + + + + This class defines extension methods for the CAEXFile Element + + + + + Imports the provided library as a new library to this caexFile. If the library contains external references which + are not + resolvable in the target document, the needed external references are copied from the source document also. + + + the CAEXFile + the library which should be imported + the imported library. + Importing elements with different schema's is not supported + + + + Performs a document wide fast search and returns a CAEXObject given by its + ID. + + the CAEXFile + the ID ob the object which is subject of the search + + Optional parameter to enable this methods (default=false), + to search in referenced documents also. + Referenced Documents can only be considered, if they are loaded via the ExternalReference. + + the found CAEXObject or null if not found + + External references are resolved in the search if a service + is registered. + + + + + Performs a document wide fast search and returns an object of type 'T' given by its + ID. + + Type of the expected CAEX object. + the CAEX file + the ID ob the object which is subject of the search + + Optional parameter to enable this methods (default=false), + to search in referenced documents also. + Referenced Documents can only be considered, if they are loaded via the ExternalReference. + + + the found CAEXObject or null if not found + + + External references are resolved in the search if a service + is registered. + + + + + Performs a document wide fast search and returns a CAEXObject given by its + Path, e.g. "plant/unit" or -in case the document is based on CAEX 2.15 - + "GUID:Interface". + + the CAEXFile + the path of the object which is subject of the search + + new optional parameter to enable this method (default=false), + to search in referenced documents also. + + + the found CAEXObject or null if not found + + + External references are resolved in the search if a service + is registered. + + + + + Performs a document wide fast search and returns an object of type 'T' given by its + Path, e.g. "plant/unit" or -in case the document is based on CAEX 2.15 - + "GUID:Interface". + + Type of the expected CAEX object. + the CAEX file + the path of the object which is subject of the search + + new optional parameter to enable this method (default=false), + to search in referenced documents also. + + + the found CAEXObject or null if not found + + + External references are resolved in the search if a service + is registered. + + + + + Imports the provided library into the AttributeTypeLib collection of this CAEX file. + + the CAEX file. + The source AttributeTypeLib object. + + The imported AttributeTypeLib. + + + + + Imports the provided source instance hierarchy into the InstanceHierarchy collection of this CAEX file. + + the CAEX file. + The source InstanceHierarchy object. + + The imported InstanceHierarchy. + + + + + Imports the provided library into the InterfaceClassLib collection of this CAEX file. + + the CAEX file. + The source InterfaceClassLib. + The imported InterfaceClassLib. + + + + Imports the provided library into the RoleClassLib collection of this CAEX file. + + the CAEX file. + The source RoleClassLib. + The imported RoleClassLib. + + + + Imports the provided library into the SystemUnitClassLib collection of this CAEX file. + + the CAEX file + The source SystemUnitClassLib. + The imported SystemUnitClassLib. + + + + Inserts the ExternalReference into the CAEX file. + + The CAEX file. + The ExternalReference object. + + + + Insert an existing InstanceHierarchy to this CAEX file as the last InstanceHierarchy. + + The InstanceHierarchy to insert. + The CAEX file. + + + + Insert an existing InterfaceClassLib to this CAEX file as the last InterfaceClassLib. + + The CAEX file. + The InterfaceClassLib to insert. + + + + Insert a RoleClassLib to this CAEX file as the last RoleClassLib. + + The CAEX file. + The RoleClassLib to insert. + + + + Append a SystemUnitClassLib to this CAEX file as the last SystemUnitClassLib. + + The CAEX file. + The SystemUnitClassLib to insert. + + + + A new ExternalReference node is added to the CAEX file. + + the CAEX file. + The path value of this external reference. + The alias value of this external reference. + A new ExternalReference + + + + Adding a new InstanceHierarchy with the given name to this CAEX file. + The Instance Hierarchy is always added as the + last Instance Hierarchy. + + the CAEX file. + The name of the new InstanceHierarchy. + A new InstanceHierarchy + + + + Adding a new InterfaceClassLib to this CAEX file. + + the CAEX file + The name of the new InterfaceClassLib. + A new InterfaceClassLib + + + + Adding a new RoleClassLib to this CAEX file. + + the CAEX file. + The name of the RoleClassLib. + A new RoleClassLib + + + + Adding a new SystemUnitClassLib to this CAEX file. + + the CAEX file + The name of the new SystemUnitClassLib. + The new SystemUnitClassLib. + + + + Traversal method for a hierarchical tree, with identical childSelector for + all tree nodes. The method uses a pre-order algorithm without recursion for + the deep traversal of the complete tree. + + the CAEXFile + The source. + The child selector. + IEnumerable. + + + + This class defines extension methods for the CAEXObject Element + + + + + This method sets a description. If no description exists, it is created. + + the CAEX object + the description + + + + Gets the full node path of the provided CAEX object, which includes the object names of all + ancestor hierarchy levels and the name of the object itself. + + The CAEX object. + + Please note that this method returns a different result than the method, which + returns + the CAEX path used for referencing objects. + + The path to the XML node. + + + + Method to add a new element 'AdditionalInformation' to a CAEXObject + + The CAEX Object + Insertion position + the new element + + + + Generic method to add a new element with the provided name of a specific Type to a CAEXSequence. + + The type of the added object + The CAEX Sequence + The name of the new element + Insertion position + the wrapper of type T containing the new element + + + + Static class supporting the generation and analysis of CAEXPath's + + + + + The alias separator used after Alias + + + + + The attribute separator used before attribute hierarchies. + + + CAEX 3.0 doesn't define a special attribute separator character any more + + + + + The interface separator used before an interface + + + CAEX 3.0 doesn't define a special interface separator character any more + + + + + The object separator used between object hierarchies + + + + + The begin of a path part, used if the object name contains a Path Separator + + + + + The escaped , used in an object name, if it + contains this character + + + + + The end of a path part, used if the object name contains a Path Separator + + + + + The escaped , used in an object name, if it contains + this character + + + + + The end of a path part, used if the object name contains a Path Separator + + + + + Gets the alias name from a reference. If the reference is not a reference with + an alias, the return value is string.Empty. + + The class reference. + The CAEX schema version. + + The Alias Name without the Ending AliasSeparator or string.empty + + + + + Builds the Reference-Path which includes all Names of CAEXObjects in the given list of CAEX objects. + + The CAEX objects. + + The CAEX Path, build from the object list. + + + + + Builds the Reference-Path which includes all Names of CAEXObjects in the given list of elements. + + The XML nodes of the CAEX objects. + + The CAEX Path, build from the element XML nodes. + + + + + Builds the Reference-Path which includes all names of CAEX objects in the given name array. + + The names, which build the path parts. + The CAEX schema version. + + The CAEX path created from the names array. + + + + + Determines whether the specified path can be normalized because it contains path part delimiters + + The path. + + true if this instance can normalize the specified path; otherwise, false. + + + + + Determines whether the specified name contains path separator chars. + + The name. + The document. + + true if the specified name contains path separator chars; otherwise, false. + + + + + Gets the ID of the master parent instance from a reference defined in an Attribute mirror object in the specified + CAEX document. + + The reference from the Attribute mirror object. + The document. + if set to true, if the reference is an Attribute reference in a mirror. + + The master parent ID + + + Only valid since CAEX Version 3.0 + + + + + Gets the InternalElement ID from a reference defined in an InternalLink object. + + The reference from the InternalLink object. + if set to true [is interface reference]. + + The InternalElement ID + + + Only valid for CAEX Version 2.15 + + + + + Check, if the provided reference is a reference to an attribute of an ExternalInterface, using the ID of an + ExternalInterface. + + The reference. + The CAEX document. + if set to true a valid ID is used to reference an ExternalInterface. + This method only recognizes GUIDs in a reference. + the normalized ID if the reference contains an ID + + + + Builds the reference Path for an Interface-Reference in an InternalLink + + + The system unit class. + + + The interface class. + + + System.String. + + + + + gets the reference path for an Interface-Reference in an InternalLink + + + The interface Parent (SystemUnitClass or InternalElement) + + + The external Interface. + + + System.String. + + + + + Determines whether the specified part of a path is an alias. + + The path part. + + true if the specified path part is an alias; otherwise, false. + + + + + Determines, if the path is an Attribute reference. This method is able to distinguish + if an UUID is combined with a CAEX path + + The document, where the reference is tested. + The attribute reference. + + true, if the provided reference is an attribute reference. + + + This method should only be used for CAEXDocuments based at least on CAEX Version 3.0 + + + + + Determines whether the specified object reference is an alias reference to an ID in the specified document + + The object reference. + The document. + + Optional parameter to specify the type of the reference. If not set, all possible types are + checked + + + true if the specified object reference is an alias reference to an ID; otherwise, false. + + + + + enumeration type specifying possible ID Reference types + + + + + ID reference to an attribute + + + + + ID reference to an interface + + + + + ID reference to an internal element + + + + + all possible references + + + + + Determines, if the path is build using an interface separator. This method is able to distinguish + if an interface separator char is used in an interface name and is escaped + + + This method should only be used for CAEXDocuments based on CAEX Version 2.15 + + The class reference. + true, if the provided class reference is an interface reference. + + + + Determines whether the specified classReference is an alias reference to the provided AutomationML class path. + + The class reference. + The automation ml class path. + The CAEX schema version. + + true if [is object reference with alias] [the specified class + reference]; otherwise, false. + + + + + Determines whether the specified reference is defined with an alias separator. + + The class reference string. + The CAEX schema version. + + true if the reference is a reference with an alias; otherwise, false. + + + + + Determines whether the ID is valid to be used in an attribute mirror reference. + + The identifier string. + The document. + + true if the ID is valid to be used in an attribute mirror reference; otherwise, false. + + + + + Determines whether the specified string can represent an ID + + The identifier string. + + + true if the specified identifier string can be used as an identifier; otherwise, false. + + + This method should only be used for testing strings which are retrieved from an attribute where an ID is a valid + value. + It is not possible to distinguish a Name from an ID, because it exists neither a defined syntax for object names + nor + for object IDs. Only if the UUID format is used to represent an ID the ID format is recognized. + + + + + Normalization of a CAEXPath. A normalized path is freed of all path part delimiters '[' and ']' + in case that there is no path part name containing a path separator character like '/'. + + The path. + if set to true [is normalized]. + A CAEX schema version. + + the normalized path + + + Since CAEX Version 3.0 a '.' and ':' is no longer used as a path separator. Names, containing + such a character will be normalized in Version 3.0 also. + + + + + Returns the Path Part object names of a CAEX Path. If any object name contains + a path separator character the path part is enclosed in square brackets '[', + ']'. The square brackets are removed from the object name in the returned + result (default behaviour). If keepPathPartBrackets is set to true, square + brackets are not removed. + + The full CAEX path. + The CAEX schema version. + + false (default); if true, object names may be enclosed in square + brackets + + + Array of path part names + + + + + Returns the Path Part object names of a CAEX Path with the Separator Char at + the Names End as an array of strings. + + The full CAEX path. + The CAEX schema version. + optional parameter, specifying that only the alias char should be kept. + + Array of path part names. + + + + + Returns the Path Part object names of a CAEX Path with the Separator Char at + the Names End as an array of strings. + + The full CAEX path. + The CAEX schema version. + optional parameter, specifying that only the alias char should be kept. + + Array of path part names. + + + + + Builds the Path Part for any CAEXObject, which may be part of a CAEX Path. The + Path Part is build from the object Names and the Part - Syntax, according to + chapter 2.8 of the CAEX guide: If defined separators are potentially a valid + part of object names, the following syntax shall be + used: all path elements shall be separated by square brackets “[“ name “]”. + This allows for using the original names and the defined separators at + the same time. If the conflict case arises that the described brackets + are part of object names, the brackets in the object name shall be + escaped by means of common XML escape-sequences. If a name contains any + Path part - Separator like '[' or ]' this character will be escaped with '\'. + + + The CAEX element which should be part of the Path. + + + if true, the path part is build with the ID-Attribute + + + The Element Representation in the CAEX Path + + + + + transforms the name of the defined element to a path Part (special characters + are escaped). + + + The element. + + + if set to true use the Elements ID, otherwise use its name. + + + System.String. + + + + + Transforms a name to a path Part (special characters are escaped). + + + Since CAEX Version 3.0 the Path separator characters '.' and ':' are eliminated. + + + The name. + + This method has different implementations according to the used CAEX Version + + The transformed name that can be used as a path part. + + + + + Returns the Path Part object names of a CAEX Path. If any object name contains + a path separator character the path part is enclosed in square brackets '[', + ']'. The square brackets are removed from the object name in the returned + result (default behaviour). If keepPathPartBrackets is set to true, square + brackets are not removed. + + The full CAEX path. + The CAEX schema version. + + false (default); if true, object names may be enclosed in square + brackets + + + IEnumerable<System.String>. + + + + + Returns the Path Part object names of a CAEX Path with the Separator Char at + the Names End + + The full CAEX path. + The CAEX schema version. + optional parameter, specifying that only the alias char should be kept. + + IEnumerable<System.String>. + + + + + Returns the Path part separator for an element, which should be put before that + element in a Path + + + Since CAEX Version 3.0 the PathPartSeparator is element independent and always the . + + + The CAEX-Element. + + + The Path Separation character for the given element + + + + + Returns the Path part separator for an element, which should be put before that + element in a Path + + + The Xml-Node of the CAEX-Element. + + + The Path Separation character for the given element + + + + + Removes the alias from the provided path if the path is + . + + The path. + + The path without the alias part. + + + + + Gets the defined Separator characters according to the provided schema version. + + The schema. + The defined separator characters, which can be used in a CAEX path. + + + + Gets the Attribute Path from a reference defined in an mirror Attribute object in the specified CAEX document. + + The reference from the Attribute object. + The document. + if set to true if the reference is an Attribute reference in a mirror. + + Attribute Path + + + Only valid since CAEX Version 3.0 + + + + + Gets the ExternalInterface Name from a reference defined in an InternalLink object. + + The reference from the InternalLink object. + if set to true [is interface reference]. + + ExternalInterface Name + + + Only valid for CAEX Version 2.15 + + + + + Determines whether the specified part character is separator. + + + The part character. + + + true if the specified part character is separator; otherwise, false. + + + + + Determines whether the specified part character is separator. + + + The part character. + + + true if the specified part character is separator; otherwise, false. + + + + + returns all path - parts build from the element names of the specified + elements in the collection. + + + The elements. + + + List<System.String>. + + + + + returns all path - parts build from the element names of the specified + elements in the collection. + + + The elements. + + + List<System.String>. + + + + + Extension class for collections to be used in LINQ-Expressions + + + + + Wraps this object instance into an IEnumerable<T> + consisting of a single item. + + Type of the object. + The instance that will be wrapped. + An IEnumerable<T> consisting of a single item. + + + + Extension methods to navigate the inheritance relations + + + + + Gets the dictionary of derived classes. The dictionary has to be filled manually + . + + + + + This class can be used to improve the performance of the + + method. If your class library in the AML document is stable, it is possible to add the base classes, which are of + interest, + into the dictionary. After a class is registered, all derived classes of this class are fast accessible. If not + longer + needed or if the class library needs an update, the dictionary entries should be updated or removed. + + + + + Adds the class derivations for the specified class path to the dictionary. + + The document. + The class path. + Element name of the class. + + + + Determines, if the specified class is directly or indirectly (across multiple generations) + a descendant of the class or identical to it, which is uniquely identified with the specified baseClass path. + The base class path or the referenced class path may contain alias identifiers. If alias + identifiers are present, the method tries to load the external referenced document. + + The type of the CAEX class. + The class with reference. + The base class path. + + true if the class is derived, false if it is not. If no value is + returned, some references could not be resolved to get the answer. + + + + + Determines, if the class, specified with the given class path is directly or indirectly (across multiple + generations) + a descendant of the class or identical to it, which is uniquely identified with the specified baseClass path. + The base class path or the referenced class path may contain alias identifiers. If alias + identifiers are present, the method tries to load the externally referenced document. + + The type of the CAEX class. + The document where the classes are searched + The class path of the tested class. + The base class path. + + true if the class is derived, false if it is not. If no value is + returned, some references could not be resolved to get the answer. + + + + + Determines, if the specified class is directly or indirectly (across multiple generations) + a descendant of the specified base class or identical to it. This method can be used, if the classes are + distributed over different CAEX documents, the documents should be referenced by external + references and alias references. + + The type of the CAEX class. + The class with reference. + The base class. + + true if the class is derived, false if it is not. If no value is + returned, some references could not be resolved to get the answer. + + + + + Determines whether the specified attribute defines an inheritance relation from the attribute, + uniquely identifiable by the given attribute type path. The attribute type path may contain an alias. + + The attribute, containing a reference - this is either an Attribute or an AttributeType. + + A class path of a base attribute type, which is tested for a possible inheritance relation to + the specified attribute. + + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified interface class has an inheritance relation from the interface class, + uniquely identifiable by the given interface class path. The interface class path may contain an alias. + + The interface class. + + Class path of a base interface class which is tested for a + inheritance relation to the specified interface class, which is the more specific class + in this relation. + + true if an inheritance relation is resolved; otherwise, false. + + + + Determines whether the specified role reference defines an inheritance relation from the role, + uniquely identifiable by the given role class path. The role class path may contain an alias. + + The role reference - this is a supported role class or a role requirement. + + A class path of a base role, which is tested for a possible inheritance relation to + the specified role reference. + + true if an inheritance relation is resolved; otherwise, false. + + + + Extension methods for an InstanceHierarchy element + + + + + Gets all descendant Objects in the InstanceHierarchy. + InternalElements on all levels are returned. + + The InstanceHierarchy. + + Enumeration of the InternalElement objects. + + + + + Extension methods for the CAEX element "InternalElement" + + + + + Determines whether the specified InternalElement is referenced by other InternalElement + objects called 'Mirrors'. + + The element. + + true if the specified element is a 'Master'-InternalElement; otherwise, false. + + + + + Extension methods for string type CAEX attributes (i.e. GUID, Path, etc.) + + + + + string extension method to check if it as GUID + + The stringGuid. + true if the specified expression is unique identifier; otherwise, false. + + + + String extension method to normalize a GUID. If the string cannot be identified as a GUID the original string is + returned + + The stringGuid. + The normalized GUID if the provided string is a GUID; otherwise the original string is returned. + + + + Determines whether the specified path is an interface path. + + + can only be used in a context with CAEX 2.15 + + The path. + true if [is interface path] [the specified path]; otherwise, false. + + + + Determines whether the specified attribute is an attribute, containing a class reference. + + The name of the attribute. + true if the specified attribute name is a class reference; otherwise, false. + + + + Determines whether the specified path is an interface path containing an ID + + + Since CAEX Version 3.0 IDs cannot be part of a CAEXPath anymore + + The path. + The identifier. + The CAEX Version + true if the specified path is an interface path with identifier; otherwise, false. + + + + Determines whether the specified path is an interface path with this interface name. + + The path. + Name of the interface. + A CAEX schema version. + + true if the specified path is an interface path with this interface name; otherwise, false. + + + Since CAEX Version 3.0 Names cannot be part of an interface path anymore. + + + + + Extension methods for the . + + + + + Inserts a new class instance to the InternalElement collection of the parentInternalElement. If there are existing + instances of the same Type, the Element is inserted after the last Element of that Type. + Before Insertion, the Uniqueness of the Name among the siblings of that Type is checked. + + + The Parent-InternalElement + + + The instance of a class to be inserted at the parentInternalElement. The instance can be + of type InternalElementType or InterfaceClassType + + + True if insertion was successful, otherwise false (name is not unique or wrong type of newInstanceObject) + + + + + Creates a new InternalElement and inserts it after the last InternalElement of the + parent if the elementName is unique among the child's. The ChangeMode is set to the Value 'Create' + + + Parent of the new InternalElement + + + Name of the new InternalElement + + + the new InternalElement or null, if the elementName is not unique + + + + + Returns all SystemUnit Classes which are ancestors of this. This SystemUnit Class is + included in the enumeration as the first Element, The farthest is the last Element in + the enumeration. + + The SystemUnitClass. + + Enumeration of all SystemUnitClass ancestors. + + + + + Inserts the InternalElement object after the defined Predecessor in the InternalElement + collection of the SystemUnitClass. If the Predecessor is null, + the InternalElement object is inserted at the first position of the InternalElement collection. + + The SystemUnitClass object + The internal element. + The internal element predecessor. + + + + Inserts an Attribute object in the Attribute collection of the . + + Any object with an Attribute collection. + The Attribute object to insert + + + + Inserting an ExternalInterface to the ExternalInterface-Collection of the + . + The Element is inserted at the first Element + of any existing ExternalInterfaces if no other position is defined. + + Any object with an ExternalInterface collection. + The ExternalInterface object. + Explicit definition of the position asFirst (true) or asLast (false) + + + + Inserting an InternalElement to the InternalElement-Collection of the + . + + Any object with an InternalElement collection. + The InternalElement to insert. + Insert as first if set to true (default), otherwise append as last + + + + + + + Inserts the specified InternalLink as the first InternalLink if nothing else if explicit defined. + + The SystemUnitClass object + The internal link element. + Inserted at first position if set to true, otherwise appended at last position + + + + Inserts the SupportedRoleClass as the first SupportedRoleClass if nothing else if explicit defined. + + The SystemUnitClass object + The supported role class element. + Inserted at first position if set to true, otherwise appended at last position + + + + Adding a new ExternalInterface instance to the ExternalInterface-Collection of the + . + The New ExternalInterface is inserted as the + first ExternalInterface of any existing Interfaces if nothing else is explicit defined. + + Any object with an ExternalInterface collection. + The name of the new ExternalInterface + If set to true, the interface is insert at first, otherwise at last Interface. + The new ExternalInterface + + + + Adding a new ExternalInterface instance to the ExternalInterface-Collection of the + referencing a specific InterfaceClass. + The New ExternalInterface is inserted as the + first ExternalInterface of any existing Interfaces if nothing else is explicit defined. + The provided is set as the RefBaseClassPath value. + + Any object with an ExternalInterface collection. + The name of the new ExternalInterface + The CAEX Path of the InterfaceClass which should be referenced. + If set to true, the interface is insert at first, otherwise at last Interface. + The new ExternalInterface + + + + Adding a new InternalElement instance to the InternalElement-Collection of the + . + The New InternalElement is inserted as the + first InternalElement of any existing InternalElement objects if nothing else is explicit defined. + + Any object with an InternalElement collection. + Name of the InternalElement + If set to true, the InternalElement is insert at first, otherwise at last. + The new InternalElement + + + + Inserts a new InternalLink as the first InternalLink if nothing else if explicit defined. + + The SystemUnitClass object + The name of the InternalLink + if true insert at first InternalLink, otherwise at last InternalLink + The new InternalLink element + + + + Inserts a new SupportedRoleClass as the first SupportedRoleClass if nothing else if explicit defined. + + The SystemUnitClass object + The path to the role class that is referenced + Inserted at first position if set to true, otherwise appended at last position + The new SupportedRoleClass + + + + This enum defines possible changes of a CAEX object. The changes are notified in a or + a . + + + + + empty mode + + + + + A CAEX object has been added. + + + + + A CAEX object will be deleted. + + + + + A CAEX object has got a changed ID attribute. + + + + + A CAEX object will get a changed ID. + + + + + A CAEX object has got a changed ID reference. + + + + + A CAEX object will get a changed ID reference. + + + + + A CAEX object has been renamed. + + + + + A CAEX object will be renamed. + + + + + A CAEX object has got a changed name reference. + + + + + A CAEX object will get a changed name reference. + + + + + A CAEX object has got a changed path reference. + + + + + A CAEX object will get a changed path reference. + + + + + A CAEX object has been deleted, the element in the change notification is the former parent of the deleted element. + . + + + + + A CAEX object's value has been changed. + + + + + A CAEX object's value will change. + + + + + A CAEX object is moving to a new position in its collection. + + + + + A CAEX object has been moved to a new position in its collection. + + + + + Combination of all defined changed mode events + + + + + Combination of all defined modes for changing events + + + + + Event arguments for a and + a + + + + + Constructs arguments for an element changing event + + The CAEX element. + The CAEX parent. + The document. + The change mode. + + + + Constructs arguments for an element's attribute changing event + + The CAEX element. + The CAEX parent. + The document. + The attribute. + Name of the attribute. + The old value. + The new value. + The change mode. + + + + The changed CAEXAttribute + + + + + Gets the name of the CAEX attribute. + + + + + Gets the CAEX document. + + + + + The changed CAEXElement + + + + + The changed CAEXElement's parent. This Property should be used, to detect a former parent of a CAEXElement, + when the CAEXElement has been deleted and has no associated parent. + + + + + The change mode + + + + + The new value + + + + + The old value + + + + + Initializes a new instance of the class. + + The moved element. + The sibling. + if set to true [after sibling]. + + + + Moves the element before the specified sibling. + + the moved element + the new sibling of the element + if set to true the element is moved after the sibling. + + + + Command Execution method + + + + + Command reverse execution method + + + + + The Aml.Engine.CAEX.Commands Namespace contains different commands that are provided to + add, delete or change elements in a CAEX document. The classes support the implementation + of Undo Redo using the command pattern with methods for command execution and reverse execution. + If an Undo Redo service is registered, it will be located by the commands and used to push + commands on the Undo Redo stack. + + + + + + Command to change the content nodes of an XElement which enables undo and redo of the changes + + + + + Create a new instance of the command + + The Element, which value should change + The new content element + + + + Change the value of an element using a command, if the UndoRedoService is registered. + If the service is null, the changes are made without using a command. + + + + + + + The changed element + + + + + The new value which is set when the command is executed + + + + + The old value of the element before the change was made + + + + + Command Execution Method (enables redo) + + + + + Command reverse execution Method (enables undo) + + + + + This Class defines a WeakEventSource, used to define Events, raised in the AML Engine. + + The type of the event arguments. + + + + Initializes a new instance of the class. + + + + + Raises an event, defined with this instance + + The sender. + The event argument instance containing the event data. + + + + Subscribes the specified handler with this event source. + + The handler. + + + + Unsubscribes the specified handler with this event source. + + The handler. + + + + This is the abstract base class for all CAEX commands, applicable to CAEX elements + + + + + This event is raised after a CAEXElement has been changed. + + + + + This event is raised before a CAEXElement will be changed. + + + + + Gets the CAEX document processing the command + + + + + Gets the display name of the command + + + + + Gets the XML document processing the command + + + + + Raises the for the provided document. + + The document. + The instance containing the event data. + + + + Raises the for the provided document. + + The document. + The instance containing the event data. + + + + Command Execution method + + + + + Command reverse execution method + + + + + Command to add a new Element to an existing sibling which enables undo and redo of the changes + + + + + Create a new instance of the command + + The sibling of the element + The element + Determines the position + + + + Adds a Sibling to the specified sibling using a command. + + the sibling + the added element + if true element is added after the sibling; otherwise before + + + + + The added Element + + + + + Command execution method (enables redo) + + + + + Command reverse execution Method (enables undo) + + + + + Command to insert a new Element to an existing parent which enables undo and redo of the changes + + + + + Create a new instance of the command + + The designated owner of the element + The element + + + + Inserts the Element using a command, if the UndoRedoService is registered. + If no service is registered, the changes are made without using a command. + + + + + + + The New added Element + + + + + The Owner of the Element + + + + + Command execution method (enables redo) + + + + + Command reverse execution Method (enables undo) + + + + + Command to insert a new Element to an existing parent which enables undo and redo of the changes + + + + + Create a new instance of the command + + The designated owner of the new element + The XName of the new element + + + + Inserts a new Element using a command, if the UndoRedoService is registered. + If the service is null, the changes are made without using a command. + + + + + + + + The New added Element + + + + + The XName of the Element + + + + + The Owner of the Element + + + + + Command execution method (enables redo) + + + + + Command reverse execution Method (enables undo) + + + + + Command to remove an Element which enables undo and redo of the changes + + + + + Create a new instance of the command + + The element + + + + Removes the Element using a command, if the UndoRedoService is registered. + If the service is null, the changes are made without using a command. + + the removed element + + + + + The New added Element + + + + + The Owner of the Element + + + + + Command execution method (enables redo) + + + + + Command reverse execution Method (enables undo) + + + + + Command to add a new Element to an existing parent which enables undo and redo of the changes + + + + + Create a new instance of the command + + The designated owner of the new element or sibling + The XName of the new element + The content for the new element + If set to true the provided element is the sibling, otherwise the parent + + + + Command execution method (enables redo) + + + + + Adds a new Element using a command. + + The designated owner or the sibling of the new element + The XName of the new element + The content for the new element + If set to true the provided element is the sibling, otherwise the parent + + + + + The content of the Element + + + + + The XName of the Element + + + + + The Owner of the Element + + + + + Command to change the value of an Attribute of an XElement which enables undo and redo of the changes + + + + + Create a new instance of the command + + The Element, which owns the attribute. + The name of the attribute. + The new value. + + + + Change the value of an attribute using a command, if the UndoRedoService is registered. + If the service is null, the changes are made without using a command. + + The Element + Name of the attribute + Attribute value + + + + The Name of the Attribute + + + + + The New value for the attribute + + + + + The Old Value of the attribute or null if no attribute existed before + + + + + The Owner of the attribute + + + + + Command Execution Method (enables redo) + + + + + Command reverse execution Method (enables undo) + + + + + Command to change the value of an XElement which enables undo and redo of the changes + + + + + Create a new instance of the command + + The Element, which value should change + The new value + + + + Change the value of an element using a command, if the UndoRedoService is registered. + If the service is null, the changes are made without using a command. + + + + + + + The changed element + + + + + The new value which is set when the command is executed + + + + + The old value of the element before the change was made + + + + + Command Execution Method (enables redo) + + + + + Command reverse execution Method (enables undo) + + + + + Interface for CAEXCommands. If Commands implement this interface, they can use + a to enable undo and redo. + + + + + Gets the CAEX document. + + + + + Gets the display name. + + + + + Command Execution Method (enables redo) + + + + + Command reverse execution Method (enables undo) + + + + + This class is a wrapper for the CAEX element 'Copyright'. + + + + + Initializes a new instance of the class. + + The XML node. + + + + This class is a wrapper for the CAEX element 'Description'. + + + + + Initializes a new instance of the class. + + The XML node. + + + + This Interface is implemented by CAEX elements which contain Value properties. With the specified properties + and methods it is possible to convert attribute values according to an existing attribute data type into a type + based object. + The type conversion is supported by a new class . + + + + + + Gets all the CAEXValue objects for the defined value attributes of this instance. + + + + + Gets and sets the attribute value for the named attribute using the decoding and encoding methods of + . + + + + + + Gets the Attribute datatype which is valid for all attribute values of this element + + + + + Gets the attribute, which specifies the attribute data type for the attribute values. + + + + + Gets the CAEXValue for the named value attribute which + allows type-coded access to the value property using appropriate encoding and decoding methods. + + + + + + Interface class implemented by which comprises a basic set of attributes and header + information which exist for all CAEX elements. + + + + + + Gets the collection of AdditionalInformation values contained in this instance. + + + + + Gets and sets the change mode for a CAEX element (Optional in CAEX). + + + + + Gets and sets the Copyright for this object. + + + For CAEX 2.15 documents the content of the Copyright object is transformed to a string. + + + + + Gets the wrapper for the Copyright element. + + + + + Gets and sets the Description for this object. + + + For CAEX 2.15 documents the content of the Description object is transformed to a string. + + + + + Gets the wrapper for the Description element. + + + + + Gets the collection of Revision objects contained in this instance. + + + + + Gets the collection of SourceObjectInformation objects contained in this instance. + + + + + Gets and sets the Version for this object. + + + For CAEX 2.15 documents the content of the Version object is transformed to a string. + + + + + Gets the wrapper for the Version element. + + + + + Gets the CAEXSequence owned by this instance, which contains the specified CAEX object. + For example, if the specified object is a revision object, + the sequence of the revision objects is returned. + + The CAEX object, contained in a sequence, owned by this CAEX object. + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + Gets the CAEXSequence for elements of type T, which is owned by this CAEX object. + + + The CAEX container + + + + Inserts the specified CAEX object in it's associated sequence. The CAEXBasicObject + defines the and sequences. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the CAEX object + has been inserted into this sequence. + + + + + Inserts the specified CAEX object in it's associated sequence at the defined position. The CAEXBasicObject + defines the and sequences. + + The position + The CAEX object. + + true, if a sequence could be identified and the CAEX object + has been inserted into this sequence. + + + + + Creates a new Revision object and inserts it to the collection of Revision objects + either at the beginning or at the end of the sequence, according to the specified optional value. The Revision + object is initialized with the provided values. + + The date. + The author. + if set to true the created Revision is prepended, otherwise appended. + A Revision object. + + + + This interface class is implemented by all CAEXObject classes and defines accessors for the attributes of a CAEX + object. + + + + + Gets or sets the identifier. + + + + + Gets or sets the name. + + + + + Gets the CAEX path for this object. A path can be used to uniquely reference an object, + for example in inheritances and instances. The path syntax for an object is defined + differently in CAEX 2.15 and CAEX 3.0. The engine uses the to generate + the CAEX path of an object according to the documents CAEX version. + + + Paths require the definition of separators between different path elements. CAEX 2.15 distinguishes + between 4 separator types: + Alias separator, object separator, interface separator and attribute separator. + In CAEX 3.0 only the separator types Alias separator and object separator are used. + + Please note that this method returns a different result than the + method, which always returns + the path including the object names of all ancestor hierarchy levels. + + + + The CAEX path. + + + + + This interface defines a sequence of CAEX elements. + + + + + Gets a wrapper for the first CAEX element in this sequence, if the sequence contains no elements null is + returned. + + + + + Gets a wrapper for the last CAEX element in this sequence, if the sequence contains no elements null is + returned. + + + + + Gets the first CAEX object with a specific attribute value from the sequence of elements + + Pair of attribute name and attribute value + the first CAEX object, which matches this condition. + + + + Gets a wrapper for the CAEX element in this sequence at the given position + + index position of the element + The created CAEX wrapper. + + + + Creates a new CAEX object and appends it to already existing elements in this sequence. + + the created CAEX object + raised, when this parent child relation violates the CAEX schema. + + + + Creates a new CAEX object and appends it to already existing elements. The content of the + new element can be optionally defined using an array of tuples defining attribute names and their values. + + The attribute value tuples. + + the created CAEX object. + + + This sample shows how to apply this method: + + var doc = CAEXDocument.New(); + var at = doc.CAEXFile.AttributeTypeLib.Append (new Tuple <string,object>[] { Tuple.Create<string,object>("Name", "ALIB") }); + + + + + + Gets the CAEX object at the specified index. + + The index. + the CAEX object from the given index, or null. + + + + Gets the enumerator for this sequence. + + The enumerator + + + + Gets the Index of the specified CAEX object in this sequence of elements. + + the CAEX object + the Index of the specified CAEX object. + + + + Inserts the specified CAEX object into this sequence. If no position is specified the element is appended. + If 'asFirst' is set to true, the element is prepended to already existing ones. + + the CAEX object + + optional parameter, if set to true (default) the object is prepended to already existing ones, + otherwise it is appended. + + + + + Inserts the specified CAEX object into this sequence at the defined index. + + The Position of the element + The CAEX object + + + + Moves the CAEX object at the specified index to a new location in the collection. + + The zero-based index specifying the location of the CAEX object to be moved. + The zero-based index specifying the new location of the CAEX object. + + + + Creates a new CAEX object and prepends it to already existing elements. + + The created CAEX object. + + + + Creates a new CAEX object and prepends it to already existing elements. The content of the + new element can be defined using an array of tuples defining attribute names and their values. + + The attribute value tuples. + The created CAEX object. + + + + Removes the provided CAEX object from this sequence. + + The CAEX object. + + + + This interface is defined for CAEXObjects, which may contain different types of CAEX objects like + the . The defined methods allow the selection of the associated + container for a specific type and the insertion of a CAEX object to its associated container. + + + + + + Inserts the specified CAEX object in its associated container. + + The CAEX object. + if set to true insert it at the first position. + true, if inserted; otherwise false. + + + + Since CAEX 3.0 a new definition has been added to model Interface mappings using the ID of the mapped ExternalInterface. This Interface has been designed, to + support InterfaceMapping access to the CAEX documents, defined using prior schema versions. + + + + + + Gets and sets the mapped ExternalInterface of the role reference + + + + + Gets and sets the mapped ExternalInterface of the SystemUnitClass + + + + + This interface is implemented by the CAEX elements, which are possible children of the . + + + + + + Gets the mapping object which contains this Mapping Element. + + + + + Interface class, implemented by any CAEX object, which can be mirrored + + + + + + Creates a mirror. + + + + + Gets a value indicating whether this instance is a master. + + + + + Gets a value indicating whether this instance is mirror. + + + + + Gets the master. + + + + + Gets the master identifier. + + + + + This interface class is used to define generic methods for CAEX objects which + can have multiple occurrences below its parent element. The methods defined in + this interface class affect the relation to the sibling elements of a CAEX object + with the same type. + + + + + + + Inserts the provided CAEX object as a new sibling after this CAEX object, if both are of the same type. + + The CAEX object to be inserted. + + + + Inserts the provided CAEX object as a new sibling before this CAEX object, if both are of the same type. + + The CAEX object to be inserted + + + + This Class is a wrapper for the CAEX element 'Attribute' which defines base structures for attribute definitions. + Attributes can be associated to each object which implements the interface. + An associated collection of Attributes is wrapped in an . + + + Since CAEX Version 3.0 an Attribute element can be instantiated from an AttributeType element + . + The Attribute element and the AttributeType element share the same base class . + + + + + + + Initializes a new instance of the class. + + An 'AttributeType' XML node + + + + The constructor function for the . + + + + + Gets and sets the AttributeType of an Attribute object, defining a new instance to class relation, using the CAEX + attribute + . + + + + + + Gets a value indicating whether this instance is a master attribute referenced by mirror attributes. + + + + + + Gets a value indicating whether this instance is a mirror of another Attribute object. + + + + + Gets the master Attribute object if this is a mirror and the master can be found in this CAEX document. + + + + + + Gets the owner of the Attribute Tree. This is the first ancestor, which is not an AttributeType object. + + + The TreeOwner + + + + + + Gets the master, if this is a mirror attribute + + + + + + Gets the identifier of the master Attribute if this is a Mirror. The identifier contains the ID of the attribute + owner followed by the Attribute path. + + + + + Gets the ID of the master attributes parent instance, if this is a mirror Attribute object. If it is not a mirror, + null is returned. + + + + + Creates an AttriuteType from this Attribute instance. + + + + + + Creates a new mirror element from this AttributeType + + + + + returns the attribute path, which is equal to the attribute name for any attribute, which is not a nested attribute + or a concatenation + of attribute names separated by the attribute path delimiter for nested attributes. + + + + + + Replaces the content of this Attribute object with the specified attribute type. + This Attribute object is changed to an instance of the provided Attribute Type. + + Type of the attribute. + + + + Equality comparer for values of Attributes of XML-Elements + + + + + + Creates a new instance of an AttributeValueComparer for the provided Attribute name + + The name of the attribute. + + + + Compares the values of the provided attributes + + The first object which should be compared. + The second object which should be compared. + + true, if values are equal + + + + + Returns a hash code for this instance. + + The object. + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + This class is a generic base class for CAEX elements with simple values. + This class is used by the CAEX adapter only. + + The type of the element data type. + + + + + Initializes a new instance of the class. + + The XML node. + + + + Optionally describes the change state of a CAEX object. If used, the ChangeMode shall have the following value + range: + state, create, delete and change. This information should be used for further change management applications. + + + + + Class CAEXTypeDictionary is a Dictionary of all CAEX - WrapperClass Types, defined in Aml.Engine.CAEX. + The TypeName is used as a key. This class is a singleton. + + + + + + The singleton instance of the CAEXType Dictionary + + + + + A dictionary, containing creation methods for CAEX elements, the type name is used as a dictionary key + + + + + Initialization of the Type Dictionary + + + + + Prevents a default instance of the class from being created. + + + + + Gets or sets the data type associated with the specified key. + + + The key. The caexTagName is concatenated + with the "Type" extension, to match a Type name of a CAEX wrapper class. + + Type. + + + + The Key for Dictionary access + + Name of the CAEX tag. + System.String. + + + + Determines whether this dictionary's key collection contains the specified CAEX Tag name as a key. + + The CAEX Tag name, which is used to construct the dictionary key. + true if the dictionary contains an element with the specified key; otherwise, false. + + + + Tries to get the constructor function which can be used to create a CAEX wrapper + for an CAEX element with the provided element name. + + The local name of the CAEX element. + The function to create the CAEX wrapper. + if a function exists. + + + + Tries to get the value. + + Name of the CAEX tag. + The type. + true if type is registered, false otherwise. + + + + This class is a wrapper for the CAEX element 'AttributeType' which defines base structures for attribute type + definitions. + The AttributeType allows the creation of AttributeType trees. AttributeTypes are organized in AttributeType + libraries, + which can be processed with the . This class supports direct enumeration of the + AttributeType's + children in the AttributeType tree. + + + + + + + + This class was introduced with CAEX Version 3.0 and can only be used with CAEX documents, based on Version + 3.0. + + + + + Creates a wrapper for the specified XElement which is an AttributeType + + An AttributeType XML node. + + + + The constructor function for the . + + + + + Gets and set the AttributeDataType. If the AttributeDataType is not defined + for this AttributeType but a exists, the + AttributeDataType of the BaseClass is returned. If this optional attribute is not defined, + the data type is assumed to be "xs:string", according to CAEX (DIN EN 62424:2008-08) + + + + + + Gets a collection of the subordinate AttributeTypes (the direct children) in the AttributeType tree of this + AttributeType. + + + + + Gets and sets the base class for this AttributeType. Setting a base class creates a class to class inheritance + relation. Base classes are defined using the CAEX-Attribute + which is set to the CAEX-path of the base class. According to CAEX, a class shall not inherit from itself or + from a derivative of itself, therefore any cyclic reference is denied. + + + + + Gets and set the DefaultValue. If the DefaultValue is not defined + for this AttributeType but a exists, the DefaultValue + of the BaseClass is returned. + + + + + + Gets all attributes, including the inherited attributes of the base classes in the inheritance tree. + + + + + + Gets all constraints, including the inherited constraints of the base classes in the inheritance tree. + + + + + + Gets and sets the RefAttributeType CAEX attribute of the Attribute object. + This property is used to create class to class relations between AttributeType objects (classes). + According to CAEX, a class shall not inherit from itself or + from a derivative of itself, therefore any cyclic reference is denied. + + + + + + + Gets the reference base class path. + + + The reference base class path. + + + + + Gets the name (not the full path) of the referenced base class. + + The name of the referenced class. + + + + Gets and set the Unit. If the Unit is not defined + for this AttributeType but a exists, + the Unit of the BaseClass is returned. + + + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + + + + Creates a class instance for this AttributeType object. All inherited base classes are resolved in the resulting + Attribute. + The Attribute collection of the new Attribute instance contains all inherited attributes from base classes."/> + + The created Attribute object. + + + + + Creates a class instance for this AttributeType object. All inherited base classes are resolved in the resulting + Attribute. + + A CAEXWrapper of the created Attribute object. + + + + + Gets the Enumerator for the enumeration of the field. + + + An enumerator that can be used to iterate through the collection. + + + + + Gets the Enumerator for the enumeration of the field. + + + An -object, that can be used to iterate through the collection.. + + + + + Gets the reference (inheritance) hierarchy. The reference hierarchy includes this instance and the reference + hierarchy of + an associated defining a class to class relation. + + Collection, containing this instance and the reference hierarchy of a base class. + + + + Gets the reference (inheritance) hierarchy. The reference hierarchy includes this instance and the reference + hierarchy of + an associated defining a class to class relation. + + Type of the CAEX class. + + Queue, containing this instance at the first element, followed by the reference hierarchy of a base class. + + + + + Inserts the specified CAEX object in it's associated sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the given index. + + + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + This class is a wrapper for the CAEX element 'AttributeNameMapping' which defines mappings + between attributes of an AML object and any associated role class. + + + + + + The constructor + + + + + Initializes the class. + + + + + Creates a wrapper for the specified XElement which is an AttributeNameMapping Element + + An AttributeNameMapping XML node. + + + + Gets the collection of possible mapping identifiers for this AttributeNameMappingType for elements of + the mapped SystemUnitClass. The Collection contains all attributes (including inherited attributes) of the + SystemUnitClass and also the attributes of the ExternalInterfaces (including inherited external interfaces) of + the SystemUnitClass. The Attribute Identifiers are the unique CAEXPath's of the attributes relative to the + SystemUnitClass. + + + The possible mapping identifiers to map Attributes of the SystemUnitClass and its ExternalInterface objects. + + + + + Gets the collection of possible mapping identifiers for this AttributeNameMappingType for elements of + the mapped RoleClass. The Collection contains all attributes (including inherited attributes) of the + RoleClass and also the attributes of the ExternalInterfaces (including inherited external interfaces) of + the RoleClass. The Attribute Identifiers are the unique CAEXPath's of the attributes relative to the + RoleClass. + + + The MultipleRole Concept in AutomationML 2.0 based on CAEX 2.15 allows the definition of Mappings to SupportedRoleClass + objects. These Elements are only included in this collection, if a qualified element has been already assigned to + the RoleRequirements object. To get the possible qualified RoleClass Attributes, which are not already + assigned to the RoleRequirements object, the method + can be used. + + If an instance supports multiple roles and the requirements to the different roles shall be stored at the instance, + this shall be done using the CAEX element "RoleRequirements" whereas the corresponding attributes or interfaces are + directly assigned including the role name, a separator string "." and the attribute or interface name. + + + + The possible mapping identifiers to map Attributes of the RoleClass and its ExternalInterface objects. + + + + + Gets the RoleClass element which can be identified with the or sets + the retrieved from the provided value. + + + If the identifies a RoleRequirements Attribute and a RoleClass Attribute + as well, the RoleClass Attribute is returned by the Getter. + + + The role attribute. + + + + + Gets and Sets the 'RoleAttributeName' for this instance + + + + + Gets or sets the system unit attribute which is defined using the CAEX attribute + . + + + The system unit attribute. + + + + + Gets and sets the identifier for the mapped RoleClass element. + + + The role class element identifier. + + + + + Gets or sets the identifier for the mapped SystemUnitClass element. + + + The system unit class element identifier. + + + + + Gets and Sets the 'SystemUnitAttributeName' for this instance + + + + + This Class is the generic base class for 'Attribute' and 'AttributeType' elements and defines base structures for + Attribute- + and AttributeType definitions. + + + + + + + + + Initializes a new instance of the class. + + An 'AttributeType' XML node. + + + + Gets the type-decoded value and sets the type-encoded value for the value attribute with the defined name. The + allowed Names as and + . + + + + + + + The XSD data types which are supported. + + + + + Gets a collection of Attributes contained in this instance. + + + + + Gets the attributes and all nested attributes. + + + + + Gets and sets the AttributeDataType attribute of this Attribute object. + If the referenced attribute type does not base on an XML standard base type, the AttributeDataType may remain empty + or not present. + + + + + Gets the Attribute datatype which is valid for values of all of this element. + For this class, it is the instance itself. + + + + + Gets the collection of AttributeValueRequirement objects contained in this instance. + + + + + Gets and sets the DefaultValue element of this Attribute object. Use the + property , to get or set the type encoded + default value according to the Attribute Data Type. + + + + + Gets and sets the RefAttributeType CAEX attribute of the Attribute object. + This property is used to create instance to class relations between Attributes (instances) + and AttributeType objects (classes). + + + + + + + Gets the collection of RefSemantic objects contained in this instance + + + + + Gets and sets the Unit attribute for this Attribute object. + + + + + Gets and sets the Value for this Attribute object. + The correct XML-String representation for the defined + has to be ensured by the caller. + + + It is possible to use the Indexer to set a type based value which + is correctly encoded/decoded according to the specified or use the + property , which provides the same value access. + + + This sample shows how to use this property: + + // setting a value if the AttributeDataType is defined as 'xs:Duration'. + TimeSpan processingTime = new TimeSpan(days: 0, hours: 0, minutes: 0, seconds: 5); + + AttributeType at = ReadMyAttribute (); + at["Value"] = processingTime; + at["DefaultValue"] = new TimeSpan(0); + + // checking the appropriate type setting: + if (at.ValueAttributes[0].TypeCodeOfAttribute == System.Xml.Schema.XmlTypeCode.Duration) + { + } + + + + + + Gets all the CAEXValue objects for the defined value attributes of this instance. Recognized value attributes are + and . + + + + + Gets and set the encoded/decoded attribute value according to the defined AttributeDataType. + + + + + Gets and set the encoded/decoded default attribute value according to the defined AttributeDataType. + + + + + Gets the xmlType type for the specified CLR type. The Mapping is done + according to + Mapping XML Data Types to CLR Types. + This reverse mapping is not unambiguous. If more than one mapping is possible, the most common used description is + generated. + If No mapping is defined the 'xs:string' is used. + + + You can use the encoding and decoding methods of the object, to receive a type conform + result for the + attribute value elements. + + .Net data Type. + + the name of the XML type + + clrType + + + + Conversion to get access to specific AutomationML defined Attributes + + The 'AttributeType' CAEX object. + + The AttributeType object, converted to an type, which provides access to + specific AML defined attributes. + + attributeType + + + + Gets the CLR type for the specified xmlType. The Mapping is done + according to + Mapping XML Data Types to CLR Types. + + The name of the XML type + + a .NET data Type + + xmlType + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + + + + Gets the for the value attribute with the defined attribute name. The allowed Names as + and + . + + + + + + + Parse the Attribute Value string as dateTime. If the string can not be parsed, a format exception is returned. + This method uses the XmlConvert + method. + + The date time option. + DateTime. + + + + + Parse the Attribute Value string as double. If the string can not be parsed, a format exception is returned. + This method uses the XmlConvert method and a fall back conversion, if the first + conversion + fails. + + Double. + + + + + Inserts the specified CAEX object in it's associated sequence. The AttributeType + defines additional sequences for , + + and . + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the defined position. The AttributeType + defines additional sequences for , + + and . + + the position + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the provided CAEX object as a new sibling after this CAEX object. + + The CAEX object to be inserted. + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + Inserts the provided CAEX object as a new sibling before this CAEX object. + + The CAEX object to be inserted + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + Sets the specified dateTime value as the attribute value. The AttributeDataType is set to xs:dateTime + + The value. + The serialization mode, use UTC + + + + Sets the specified double value as the attribute value. The AttributeDataType is set to xs:double + + The value. + + + + Tries to parse the Attribute Value string as dateTime. + This method uses the XmlConvert + method. + + The DateTime value. + The date time option. + true if success, false otherwise. + + + + Tries to parse the Attribute Value string as double. + This method uses the XmlConvert method and a fall back conversion, if the first + conversion + fails. + + The double value. + true if success, false otherwise. + + + + This Class is a wrapper for the CAEX element 'AttributeTypeLib' which is a container + for a hierarchy of AttributeType elements. CAEX supports multiple AttributeType libraries + associated to a CAEXFile (). + + + + This class was introduced with CAEX Version 3.0 and can only be used with CAEX documents, based on Version + 3.0. + + + + + Gets the collection of AttributeType objects contained in this AttributeTypeLib element. + + + + + Initializes the class. + + + + + Initializes a new instance of the class. + + An 'AttributeTypeLib' XML node + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Inserts the specified CAEX object in it's associated sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the given index. + + The insertion index + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + This class is a wrapper for the CAEX-Element 'AttributeValueRequirement' which allows the specification + of one value constraint for an attribute. There is a choice of different types defined for the type of the + condition. + + + + + + + + + + + + + + + + + The constructor + + + + + Initializes the class. + + + + + Initializes a new instance of the class. + + A 'Constraint' XML node. + + + + Gets and sets the name of the attribute value constraint. + + + + + Gets the 'NominalScaledType' constraint. + + + + + Gets the 'OrdinalScaledType' constraint. + + + + + Gets the 'UnknownType' constraint. + + + + + Inserts the specified CAEX object in it's associated sequence. The AttributeValueRequirementType + defines the , the and the + as possible child elements. Only one of these types + is allowed as a child. + + The CAEX object. + ignored for this type. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the defined position. The + AttributeValueRequirementType + defines the , the and the + as possible child elements. Only one of these types + is allowed as a child. + + The position. + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + A new 'NominalScaledType' constraint is defined if no constraint has been defined before. + + The new 'NominalScaledType' constraint. + + + + A new 'OrdinalScaledType' constraint is added if no constraint has been defined before. + + + The new 'OrdinalScaledType' constraint. + + + + + A new 'UnknownType' constraint is added if no constraint has been defined before. + + + The new 'UnknownType' constraint. + + + + + This class implements a specific enumeration type which wraps an XElement with a CAEXWrapper + during enumeration. The enumerator for this class is + + Type of the CAEX wrapper + + + + + Creates a new instance for a CAEXEnumerable with an associated CAEXSequence. + + + The CAEXSequence containing the Xml-Element collection. + If null, the specified Xml-Element collection is not associated with a + CAEXSequence. + + + The Xml-Element collection. If not associated to a CAEXSequence the + specified sequence should be set to null. + + + + + Creates a new instance for the CAEX enumerable without an associated CAEXSequence. + + The Xml-Element collection. + + + + Gets the CAEXSequenceEnumerator + + + An enumerator that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + A object that can be used to iterate through the collection. + + + + + Base class for all CAEX objects which may define a class to class relation referencing some base class. + + Type parameter, specifying the CAEX class type. + + + + + + Initializes a new instance of the class. + + Any CAEX class XML node. + Name of the CAEX attribute, used to store a class to class reference. + + + + Gets the Name of the attribute of the wrapped Xml-Element, which is used to define the reference to the base class. + + + + + Inserts the provided CAEX object as a new sibling after this CAEX object. + + The CAEX object to be inserted. + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + Inserts the provided CAEX object as a new sibling before this CAEX object. + + The CAEX object to be inserted + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + This class implements the CAEX sequence enumerator which creates a CAEXWrapper for each enumerated + XML-Element. + + + + + + + Initializes a new instance of the class. + + The CAEXSequence, defining the sequence of XML elements. + The collection of XML elements of the CAEX sequence. + + + + Gets the item in the collection at the current position of the enumerator. + + + + + Gets the item in the collection at the current position of the enumerator. + + + + + Dispose this instance. + + + + + Sets the enumerator to the next item in the collection. + + + , if the enumerator was successfully set to the next element, + , if the enumerator has exceeded the end of the collection. + + + + + Resets the enumerator. + + + + + User defined exception that is thrown when an error occurs during instantiation of a class. + + + + + + Initializes a new instance of the class with serialized data. + + object containing the serialize data. + context information about source or target. + + + + Standard constructor + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner Message. + + + + This interface class is implemented by all CAEX - object classes and defines accessors to the wrapped XML node. + + + + + Gets the CAEXParent of this CAEX object + + + + + Gets the first child of this CAEX object with the defined CAEX tag name. + + The CAEX tag name of the child. + The child, if it exists; otherwise null. + + + + Gets all children of this CAEX object with the defined CAEX tag name. + + The CAEX tag name of the child. + The children, if existing; otherwise Enumerable.Empty. + + + + Removes this object + + + + + Interface class that defines methods and properties that apply to all classes which can be part of a class to class + relation. + A class to class relation is also referred to as an inheritance relation. + + + + + + + Gets the reference (inheritance relations) hierarchy including the actual class as a queue. + + The type of the CAEX class. + A Queue of the base classes including the actual class. + + + + Gets the reference base class path. + + + The reference base class path. + + + + + Gets the name (not the full path) of the referenced base class. + + The name of the referenced class. + + + + This interface class is derived from and defines a generic + interface using a type parameter to specify the type of + the class to class relation. A class to class relation is also referred to as an inheritance relation. + + Type of the class with a base class relation. + + + + + Gets and sets the base class to define a class to class relation. + + + The base class. + + + + + Gets the reference hierarchy for all class to class relations, starting with this class. + + A collection, containing this class and the reference hierarchy of the base class, if existing. + + + + Interface IInstantiable is implemented by all CAEX classes. + + + + + + Creates the class instance. + + The CAEX object. + + + + Generic interface IInstantiable defining the instantiation method and the instance type. + + The type of the created instance. + + + + + Creates the class instance. + + an instance of this class, which is of the defined type. + + + + This class is a wrapper for the CAEXElement 'InterfaceNameMapping' which is used to map an Interface of a referenced role + to an interface of a SystemUnitClass which contains the role reference. The Name of the interfaces is used for identification. + + + + + + This class is defined for CAEX 2.15 only and is replaced since CAEX 3.0 with the . + + + + + Initializes a new instance of the class. + + An 'InterfaceNameMapping' XML node. + + + + Gets the collection of possible mapping identifiers for this InterfaceNameMappingType for elements of + the mapped SystemUnitClass. The Collection contains all ExternalInterfaces (including inherited) of the + SystemUnitClass. The ExternalInterface Name is used as the Mapping identifier. + + + The possible mapping identifiers to map ExternalInterfaces of the SystemUnitClass. + + + + + Gets the collection of possible mapping identifiers for this InterfaceNameMappingType for elements of + the mapped RoleClass. The Collection contains all ExternalInterfaces (including inherited) of the + RoleClass. The ExternalInterface Name is used as the Mapping identifier. + + + The MultipleRole Concept in AutomationML 2.0 based on CAEX 2.15 allows the definition of Mappings to SupportedRoleClass + objects. These Elements are only included in this collection, if a qualified element has been already assigned to + the RoleRequirements object. To get the possible qualified RoleClass ExternalInterfaces, which are not already + assigned to the RoleRequirements object, the method + can be used. + + If an instance supports multiple roles and the requirements to the different roles shall be stored at the instance, + this shall be done using the CAEX element "RoleRequirements" whereas the corresponding attributes or interfaces are + directly assigned including the role name, a separator string "." and the attribute or interface name. + + + + The possible mapping identifiers to map ExternalInterfaces of the RoleClass. + + + + + Gets and sets the mapped ExternalInterface of the role reference + + + + + Gets and sets the Name of the mapped ExternalInterface of the role reference + + + + + Gets and sets the mapped ExternalInterface of the SystemUnitClass + + + + + Gets and sets the identifier for the mapped RoleClass element. + + + The role class element identifier. + + + + + Gets or sets the identifier for the mapped SystemUnitClass element. + + + The system unit class element identifier. + + + + + Gets and sets the Name of the mapped ExternalInterface of the SystemUnitClass + + + + + This class is a wrapper for the CAEXElement 'InterfaceIDMapping' which is used to map an Interface of a referenced + role + to an interface of a SystemUnitClass which contains the role reference. The ID of the interfaces is used for + identification. + + + + + + This class is defined since CAEX 3.0 and is a replacement for the . + + + + + Initializes a new instance of the class. + + An 'InterfaceIDMapping' XML node. + + + + Gets and sets the mapped ExternalInterface of the role reference + + + + + Gets and sets the ID of the mapped ExternalInterface of the role reference + + + + + Gets the collection of possible mapping identifiers for this InterfaceIDMappingType for elements of + the mapped SystemUnitClass. The Collection contains all ExternalInterfaces (including inherited and descendants) of + the + SystemUnitClass. The ExternalInterface ID is used as the Mapping identifier. + + + The possible mapping identifiers to map ExternalInterfaces of the SystemUnitClass. + + + + + Gets the collection of possible mapping identifiers for this InterfaceIDMappingType for elements of + the mapped RoleClass. The Collection contains all ExternalInterfaces (including inherited and descendants) of the + RoleClass. The ExternalInterface ID is used as the Mapping identifier. + + + The possible mapping identifiers to map ExternalInterfaces of the RoleClass. + + + + + Gets and sets the mapped ExternalInterface of the SystemUnitClass + + + + + Gets and sets the ID of the mapped ExternalInterface of the SystemUnitClass + + + + + Gets and sets the identifier for the mapped RoleClass element. + + + The role class element identifier. + + + + + Gets or sets the identifier for the mapped SystemUnitClass element. + + + The system unit class element identifier. + + + + + This class defines a sequence of CAEX 'Attribute' elements. A sequence of Attribute's can be associated + with each class which implements the interface. + + + + + + Initializes a new instance of the class. + + The owner. + The constructor function to create an Attribute wrapper. + + + + Gets the CAEX attribute with the provided attribute path from the Attribute sequence. + This method can be used to direct access a nested attribute using the complete attribute path. + The Path root should be the top level attribute. + + The attribute path. + + + + + Gets the CAEX attribute with the provided attribute name array from the Attribute sequence. + This method can be used to direct access a nested attribute using the complete attribute path splittet + into a part name array. + The Path root should be the top level attribute. + + The part names. + + + + + Creates the 'AttributeType' CAEX wrapper for the XML node. + + The node. + The AttributeType + + + + Creates a new CAEX Attribute XML element. + + The owner. + The XML node. + + + + This class defines a sequence of CAEX 'ExternalInterface' elements. A sequence of ExternalInterfaces can be + associated + to each class, which implements the interface. + + + + + + Initializes a new instance of the class. + + The owner. + The constructor function to create an ExternalInterface object. + + + + Gets all external interfaces and the external interface descendants (The external interface tree). + + + an enumeration of all ExternalInterface object of this instance and their nested + ExternalInterface objects. + + available since CAEX Version 3.0. + + + + This class defines a sequence of CAEX 'InternalElement' elements. A sequence of InternalElements can be associated + with each class which implements the interface. + + + + + + Initializes a new instance of the class. + + The owner. + Function to create an . + + + + Adds a new mirror InternalElement to this sequence. + + The master internal element. + + The newly created Mirror + + masterInternalElement + + + + Gets all InternalElements and the InternalElement descendants (the InternalElement tree) + + + a collection of all InternalElement objects of this instance and their nested + InternalElement objects. + + + + + Function to create an + + The 'InternalElemen' XML node. + an InternalElementType + + + + Creates a new 'InternalElement' XML node. + + The owner. + The created XML node. + + + + Equality comparer for Xml-Elements that are InternalLink objects. + + + + + Determines if two InternalLink objects are equal. Equal InternalLink objects have reference + the same ExternalInterfaces. The order of the references doesn't matter. + + The first internal link. + The second internal link. + true, if both InternalLink objects are equal. + + + + Returns a hash code for this instance. + + The object. + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + This Class is a wrapper for the CAEXElement 'InternalLink' that defines instance to instance relations + using ExternalInterfaces to relate InternalElement- and SystemUnitClass-Objects. + + + + + + + Initializes a new instance of the class. + + An 'InternalLink' XML node. + + + + Constructs the path to an interface according to the used schema + + The ExternalInterface + + + + + Determines, if this InternalLink Instance has defined Interfaces. + + + + + definition of the separator used for qualifying an interface of an internal element via syntax GUID:Interface + + + Valid for CAEX 2.15 only. In CAEX 3.0 there exists no separator char in internal link attributes. + + + + + Gets and sets the AInterface of the InternalLink by reading or setting the + Attribute. A read access to this property updates the . + + + + + Gets the related objects for the InternalLink. This property allows to access the listed related objects without + recalculation. + + + + + + + + + + + + + + + A direct access to one of the listed properties results in a recalculation of the accessed property. + + + The related objects. + + + + + This class allows accessing the related objects of an InternalLink without recalculation which improves the + performance for consecutive + access of the related objects. + + + + + Gets the A-Interface of the InternalLink by interpretation of the + Attribute on first access. + Consecutive reads will return the at first calculated value. A Reinterpretation is performed, when the respective + InternalLink + property is read or set. + + + + + Gets the B-Interface of the InternalLink by interpretation of the + Attribute on first access. + Consecutive reads will return the at first calculated value. A Reinterpretation is performed, when the respective + InternalLink + property is read or set. + + + + + Gets the A-SystemUnitClass using the preserved value . If this value has not been + calculated, a recalculation is performed. + + + + + Gets the B-SystemUnitClass using the preserved value . If this value has not been + calculated, a recalculation is performed. + + + + + Gets the SystemUnitClass associated to the . + + + + + Gets and sets the BInterface of the InternalLink by reading or setting the + Attribute. A read access to this property updates the . + + + + + Gets the SystemUnitClass associated to the . + + + + + Gets and sets the Path to an ExternalInterface, defining the A-Side of the relation. + + + Please notice, that the Path-Syntax has changed with CAEX 3.0 + + + + + Gets and sets the Path to an ExternalInterface, defining the B-Side of the relation. + + + Please notice, that the Path-Syntax has changed with CAEX 3.0 + + + + + Creates a new InternalLink object and append it to the lowest common parent of the SystemUnitClass objects, + associated with the provided ExternalInterface objects. If no common parent exists, the InternalLink will be + associated with the owner of the . + + The ExternalInterface object, representing the A-Side of the relation. + The ExternalInterface object, representing the B-Side of the relation. + The name for the InternalLink + The newly created InternalLink object. + + If AInterface or BInterface is null + + + One of the provided ExternalInterface objects is not associated to a SystemUnitClass. + + + It is not allowed to link an ExternalInterface to itself. + + + + + Inserts the provided CAEX object as a new sibling after this CAEX object. + + The CAEX object to be inserted. + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + Inserts the provided CAEX object as a new sibling before this CAEX object. + + The CAEX object to be inserted + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + Gets the Interface from the provided InternalLink Attribute value, which is from or + from the attribute. + + The value of the InternalLink attribute, defining the Interface reference. + the external interface + + + + Interface that defines methods and properties that apply to all classes that are able to contain ExternalInterface + objects. + + + + + + This Interface is implemented by and . + + + + + + Gets and sets the referenced role class + + + + + Gets and sets the role reference attribute + + + + + Extensions defined for ExternalInterface Sequence and RoleRequirements sequence + + + + + Gets all ExternalInterfaces from the specified sequence, which are instances of a specific InterfaceClass + + The Sequence of External Interfaces + The required Interface Class + External Interfaces which are instances of the defined class. + + + + Gets all RoleRequirements from the specified sequence, which are instances of a specific RoleClass + + The Sequence of Role Requirements + The required Role Class + RoleRequirements which are instances of the defined class. + + + + Gets all SupportedRoleClasses from the specified sequence, which are instances of a specific RoleClass + + The Sequence of SupportedRoleClasses + The required Role Class + SupportedRoleClasses which are instances of the defined class. + + + + Interface implemented by Mapping elements , + , and . + + + + + + Gets and sets the identifier for the mapped RoleClass element. + + + + + Gets or sets the identifier for the mapped SystemUnitClass element. + + + + + Gets the SystemUnitClass, which is either an or a , which provides the mapping elements. + + + + + Gets the RoleClass, which provides the mapping elements. + + + + + This class is the base class for Mapping element types which are , + , and . + + + + + + + Initializes a new instance of the class. + + An 'MappingElementType' XML node. + + + + Gets and sets the identifier for the mapped RoleClass element. + + + The role class element identifier. + + + + + Gets or sets the identifier for the mapped SystemUnitClass element. + + + The system unit class element identifier. + + + + + Gets the mapping object which contains this Mapping Element. + + + + + This method is an extension to the setter in case of MultipleRole assignments in AutomationML 2.0 based on CAEX 2.15. + The method can assign a qualified RoleClassElement as a mapping element and will eventually create a missing RoleRequirement element for the qualified element. + For Documents, based on CAEX 3.0 the behaviour of this method is identical to the setter. + + The element. + + + + Gets the RoleClass element which can be identified with the or sets + the extracted from the provided CAEXObject which shall be an AttributeType for + an attribute mapping or an ExternalInterfaceType for an interface mapping. If the provided CAEXobject is not applicable for + the Mapping, the is not changed. + + + + + Gets the SystemUnitClass element which can be identified with the or sets + the defined by the provided value. + + + + + Gets the collection of all possible elements and their mapping + identifiers of the mapped SystemUnitClass and its ancestors in the inheritance tree + for this mapping element. + The mapping identifier uniquely identifies the mapped CAEX object. + The syntax of the identifier is defined by the derived mapping element types and + is build from the CAEX path of the object. + + + The possible mapping elements and their identifiers of the mapped SystemUnitClass. + + + + + Gets the collection of all possible elements and their mapping + identifiers of the mapped RoleClass and its ancestors in the inheritance tree + for this mapping element. + The mapping identifier uniquely identifies the mapped CAEX object. + The syntax of the identifier is defined by the derived mapping element types and + is build from the CAEX path of the object. + + + The possible mapping elements and their identifiers of the mapped RoleClass. + + + + + Gets the SystemUnitClass, which provides the . + + + + + Gets the RoleClass, which provides the . + + + + + Gets the Role reference, which can provide additional . + + + + + This class is a wrapper for the CAEX element 'Version'. + + + + + Initializes a new instance of the class. + + The XML node. + + + + The Aml.Engine.CAEX Namespace contains classes that support the generation, retrieval and analysis of CAEX + Documents according + to the CAEX standard. The classes currently support the CAEX Versions - CAEX 2.15 and CAEX 3.0. Classes and methods + are designed + to create schema conform documents. The basic XDocument is wrapped with the . Direct + access to the XDocument + and direct manipulations of XElements by an application are not monitored by the AMLEngine. Schema conformance is + only guaranteed if + the API methods are used. + + + + + This class is a wrapper for the CAEXElement 'NominalScaledType" which defined a list of + required values for an attribute constraint. + + + + + + Initializes a new instance of the class. + + A 'NominalScaledType' XML node. + + + + Gets the type-decoded value and sets the type-encoded value for the nominal value attribute with the defined value. + + + This indexer should only be used, if the list of nominal values contains distinct values only. + + + + + + + Gets the for the for the nominal value attribute with the defined value. + + + + + + + Gets the AttributeDataType of the defining attribute. The AttributeDataType can be used + to interpret the defined nominal values of this instance. + + + + + Gets the AttributeType object, defining this instance. + + + + + Gets the collection of the 'RequiredValue' elements for this nominal scaled attribute constraint. + + + + + Gets a list of corresponding to the associated nominal values of this instance. + + + + + This class is a wrapper for the CAEXElement 'OrdinalScaledType" which defined a value range + for an attribute constraint. + + + + + + + Initializes a new instance of the class. + + An 'OrdinalScaledType' XML node. + + + + Gets the type-decoded value and sets the type-encoded value for the value attribute with the defined name. The + allowed Names are and + and . + + + A type based object + + + + Gets the for the value attribute with the defined attribute name. are + and + and . + + + The CAEXValue for the named attribute. + + + + Gets the Attribute datatype which is valid for values of all of this element. + + + + + Gets the attribute, which specifies the attribute data type for the value elements of this instance. + + + + + Gets and sets the required maximal value for this ordinal scaled attribute constraint. + + + + + Gets and sets the required minimal value for this ordinal scaled attribute constraint. + + + + + Gets and sets the required value for this ordinal scaled attribute constraint. + + + + + Gets all the CAEXValue objects for the defined value attributes of this instance. Recognized value attributes are + and + and + . + + + + + This class is a CAEXWrapper for the CAEX-Element 'RoleRequirements'. + + + + + + + + + Initializes a new instance of the class. + + A 'RoleRequirements' XML node. + + + + Gets a collection of Attribute objects contained in this instance. + + + + + Gets the attributes and all nested attributes. + + + + + Gets the collection of ExternalInterface objects including all nested descendant interfaces + + + + + Gets a collection of ExternalInterface objects contained in this instance. + + + + + Gets the MappingObject of this RoleRequirements object. Please note, if no MappingObject exists, an empty Wrapper + is returned. + Use the method to create one. + + + This Property is only defined since CAEX 3.0. + + + + + Gets and sets the RefBaseRoleClassPath attribute of this RoleRequirements object. + The property is equivalent to this. For direct RoleClass assignments + use . + + + + + Gets and sets the referenced RoleClass using the + + + + + Gets or sets the role reference. The property is equivalent to this. + + The role reference. + + + + Gets the collection of CAEX attributes from the which are qualified with the name of a + SupportedRoleClass. + This method is valid for documents based on CAEX 2.15 only. The qualification of attributes is a feature to assign + multiple roles + to an InternalElement. + + + + + This property supports the Multiple Roles concept in AutomationML 2.0, based on CAEX 2.15. The property is not + applicable for documents, + based on CAEX 3.0 and later. It gets the role class interfaces of supported role class objects which are not + assigned to this RoleRequirements + instance. The returned ExternalInterfaces are created with a qualified Name, including the supported role class + name, a separator string "." and + the interface name. + + + + + This property supports the Multiple Roles concept in AutomationML 2.0, based on CAEX 2.15. The property is not + applicable for documents, + based on CAEX 3.0 and later. It gets the role class attributes of supported role class objects which are not + assigned to this RoleRequirements + instance. The returned Attributes are created with a qualified Name, including the supported role class name, a + separator string "." and + the attribute name. + + + + + This method supports the Multiple Roles concept in AutomationML 2.0, based on CAEX 2.15. The method is not + applicable for documents, + based on CAEX 3.0 and later. It tests, if the provided attribute is a role class attributes of a supported role + class object which can be used + in a Multiple role mapping and is assignable to this RoleRequirements instance + + The tested attribute. + + true if the attribute is an assignable role class attribute; otherwise, false. + + + + + This method supports the Multiple Roles concept in AutomationML 2.0, based on CAEX 2.15. The method is not + applicable for documents, + based on CAEX 3.0 and later. It tests, if the provided Attribute object is a role class attribute of a supported + role class object which can be used + in a Multiple role mapping and assigns it to this RoleRequirements instance. + + The tested attribute. + + the newly created and assigned Attribute, if the Attribute object is assigned to the role class interface; + otherwise, null. + + + + + This method supports the Multiple Roles concept in AutomationML 2.0, based on CAEX 2.15. The method is not + applicable for documents, + based on CAEX 3.0 and later. It tests, if the provided ExternalInterface object is a role class interface of a + supported role class object which can be used + in a Multiple role mapping and is assignable to this RoleRequirements instance + + The tested external interface. + + true if the ExternalInterface object is an assignable role class interface; otherwise, false. + + + + + This method supports the Multiple Roles concept in AutomationML 2.0, based on CAEX 2.15. The method is not + applicable for documents, + based on CAEX 3.0 and later. It tests, if the provided ExternalInterface object is a role class interface of a + supported role class object which can be used + in a Multiple role mapping and assigns it to this RoleRequirements instance. + + The tested external interface. + + the newly created and assigned ExternalInterface, if the ExternalInterface object is assigned to the role class + interface; otherwise, null. + + + + + Gets the collection of CAEX External Interfaces from the which are qualified with + the name of a SupportedRoleClass. + This method is valid for documents based on CAEX 2.15 only. The qualification of ExternalInterfaces is a feature to + assign multiple roles + to an InternalElement and apply a mapping to the Interface objects. + + + + + Retrieves the and gets the according original RoleClass Attribute of each + qualified Attribute. + This method is valid for documents based on CAEX 2.15 only. The qualification of attributes is a feature to assign + multiple roles + to an InternalElement. + + + + + Retrieves the and gets the according original RoleClass Interfaces of + each qualified ExternalInterface. + This method is valid for documents based on CAEX 2.15 only. The qualification of attributes is a feature to assign + multiple roles + to an InternalElement. + + + + + Conversion to get access to specific AutomationML defined Attributes from the RoleRequirements object. + + The RoleRequirements object + + The result of the conversion. + + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Inserts the specified CAEX object in it's associated sequence. The RoleRequirementsType + defines the and sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence. The RoleRequirementsType + defines the and sequence. + + + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Adding a new MappingObject element to this RoleRequirements object. + + + The new MappingObject element if not existing, otherwise the existing. + + A RoleRequirements object doesn't exist! + If the Document Schema Version is prior to Version 3.0. + + Applicable since CAEX Version 3.0 + + + + + Determines whether this RoleRequirements object has an associated reference to + the provided RoleClass. If inheritance relations between RoleClasses should be regarded, the + optional parameter 'regardInheritance' should be set. In this case the specified RoleClass is either identical + to the referenced RoleClass or the referenced RoleClass is derived from the provided RoleClass. + + The RoleClass object. + + if set to true inheritance relations + are regarded (default is false). + + + true if this RoleRequirement object has an associated reference to + the specified RoleClass; otherwise, false. + + roleClass + + + + Exception for violations of the CAEX Schema. An example for a violation is the insertion of more than one + RoleRequirement object into an InternalElement. + + + + + + Initializes a new instance of the class with serialized data. + + serialize object information. + context information. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the -class with the defined error message. + + message containing error information. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + This class is a wrapper for the CAEXElement 'SupportedRoleClass' assignable to + a SystemUnitClass. Associated supported roles of a SystemUnitClass are used to specify some + semantic meanings like features or functions for the associated object. + + + + + + + Initializes a new instance of the class. + + A 'SupportedRoleClass' XML node. + + + + Gets the MappingObject associated with a SupportedRoleClass. Mapping objects are used to + define mappings between properties of the associated object and the role class itself. + + + + + Gets and sets the Attribute of this SupportedRoleClass object. + + + + + Gets and sets the RoleClass, referenced from this SupportedRoleClass object using the + . + + + + + Gets or sets the role reference. This property is equivalent to . + + The role reference. + + + + Gets the associated SystemUnitClass for this SupportedRoleClass object. + + + + + Inserts the specified CAEX object in it's associated sequence. The SupportedRoleClassType + defines the + + The CAEX object + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence. The SupportedRoleClassType + defines the + + + The CAEX object + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Adding a new MappingObject element to this SupportedRoleClass. + + + The new MappingObject element if not existing, otherwise the existing. + + A SupportedRoleClass object doesn't exist! + + + + This class is a CAEXWrapper for the 'UnknownType' Element which is a choice for an + + + + + + + Gets and sets the value of the Requirements element + + + + + Initializes a new instance of the class. + + An 'UnknownType' XML node. + + + + A Sequence of XML elements related to a specific element name. + An XML element may contain different NamedElementSequences with different names. + + + + + The element selection condition used to select elements to create the sequence. + + + + + Gets or sets the value at the specified index. + + The index of the element in the collection. + + + + + Creates a new instance of the XElementSequence for the specified owner and the specified name which has to be a + valid name for + child elements, which can be filtered out from the owner by this name. + + The owner. + The name. + + + + Initializes a new instance of the class. + + The owner. + Name of the element. + The condition. + + + + Gets the CAEX owner of this sequence + + + + + Gets the number of elements in this sequence + + + + + Gets the name of the elements in this sequence + + + + + Gets a list of unwrapped CAEX elements (XElements) of this sequence + + + + + Determines, if the sequence contains any element + + + + + Gets the owner of this sequence + + + + + Gets the first element in this sequence. + + + + + Gets the last element in this sequence + + + + + Determines, if the local names are equal. + + + + + Determines, if the local names are equal. + + + + + Returns an enumerator that iterates through the collection. + + + An enumerator that can be used to iterate through the collection. + + + + + Removes all CAEX objects from this sequence. + + + + + Removes the element at the given index. + + The index. + + true, if element at index exists and is removed. + + + + + Gets the Index of the specified element in the sequence of elements with the same name + + The element. + The index of the element. + + + + Removes the XML node. + + The XML node. + + + + This class implements methods to work with a sequence of CAEX elements and indexed access to their values. + + The Value type + + + + + Gets the value of the CAEX object in this sequence at the given position + + index position of the element + The value. + + + + The value converter + + + + + Gets the Index of the specified element in the sequence of elements with the same name + + The element. + + The index of the element. + + + + + Creates a new instance of the ValueSequence for the specified owner and the specified name which has to be a valid + name for + child elements, which can be filtered out from the owner by this name. + + The owner. + The element name. + + + + Creates a new instance of the ValueSequence for the specified owner and the specified name which has to be a valid + name for + child elements, which can be filtered out from the owner by this name. The specified condition is used as an + additional + filter criteria. + + The owner. + The element name. + Filter criteria. + + + + Gets the collection of Xml-Elements and their associated Values in this ValueSequence. + + + + + Gets a collection of values of the CAEX elements of this sequence + + + + + Creates a new CAEX object and appends it to the value sequence. The value of the appended + object is set to the provided value. + + The value. + The created XML node. + The element could not be appended. + + + + Gets the value from the element at the specified index. + + The index. + The value. + + + + Gets the enumerator for this sequence which enumerates the . + + An enumerator that can be used to iterate through the collection. + + + + Creates a new CAEX object with the provided value and prepends it to already existing elements. + + The value. + The XML node of the created CAEX object. + Could not add + + + + class defining an Xml-Element and its associated Value + + + + + Creates the ElementValue structure for the defined Element and Value + + The element + The value + + + + The Xml-Element + + + + + The Value of the Xml-Element transformed to the DataType + + + + + + The type of the data type. + + + + Function to convert data from the XML-representation to the defined DataType + + + + + Function to convert data to an XML-representation + + + + + Initializes a new instance of the ElementValueConverter class. + + + + + Sets custom value converters to support conversion from objects to user defined types. + + The convert from. + The convert to. + + + + Sets the element value. + + The element. + The value. + + + + Gets the element value. + + The element. + + + + + This class implements methods to work with any sequence of CAEX elements. The class will wrap all elements + of a filtered sequence of an owner element to + the denoted wrapper type which is given as the type-argument. + + this is any CAEXWrapper type + + + + + Creates a new instance of the CAEXSequencce for the specified owner and the specified name which has to be a valid + name for + child elements, which can be filtered out from the owner by this name. + + The owner + CAEX-Name of the items in this sequence + The constructor function + + + + Gets a wrapper for the first CAEX element in this sequence, if the sequence contains no elements null is + returned. + + + + + Gets a wrapper for the last CAEX element in this sequence, if the sequence contains no elements null is + returned. + + + + + Gets a collection of all CAEX descendants of this sequence in document order + + + + + Gets a wrapper for the CAEX element in this sequence at the given position + + index position of the element + The created CAEX wrapper. + + + + Gets the first CAEX object with a specific attribute value from the sequence of elements + + Pair of attribute name and attribute value + the first CAEX object, which matches this condition. + + + + Moves the CAEX object at the specified index to a new location in the collection. + + The zero-based index specifying the location of the CAEX object to be moved. + The zero-based index specifying the new location of the CAEX object. + + + + Creates a new CAEX object and appends it to already existing elements in this sequence. + + the created CAEX object + raised, when this parent child relation violates the CAEX schema. + + + + Creates a new CAEX object and appends it to already existing elements. The content of the + new element can be optionally defined using an array of tuples defining attribute names and their values. + + The attribute value tuples. + + the created CAEX object. + + + This sample shows how to apply this method: + + var doc = CAEXDocument.New(); + var at = doc.CAEXFile.AttributeTypeLib.Append (new Tuple <string,object>[] { Tuple.Create<string,object>("Name", "ALIB") }); + + + + + + Gets the CAEX object at the specified index. + + The index. + the CAEX object from the given index, or null. + + + + Gets the enumerator for this sequence. + + The enumerator + + + + Gets the Index of the specified CAEX object in this sequence of elements. + + the CAEX object + the Index of the specified CAEX object. + + + + Inserts the specified CAEX object into this sequence. If no position is specified the element is appended. + If 'asFirst' is set to true, the element is prepended to already existing ones. + + the CAEX object + + optional parameter, if set to true (default) the object is prepended to already existing ones, + otherwise it is appended. + + + The inserted CAEX object. If the provided CAEX object already belongs to a sequence, a copy of the CAEX object is + inserted and + returned as the result. + + + If the provided CAEX object already has an associated parent, a deep + copy of the CAEX object and not the original provided CAEX Object is inserted. Please keep in mind, that the copied + object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object into this sequence at the defined index. + + The Position of the element + The CAEX object + + The inserted CAEX object. If the provided CAEX object already belongs to a sequence, a copy of the CAEX object is + inserted and + returned as the result. + + + If the provided CAEX object already has an associated parent, a deep + copy of the CAEX object and not the original provided CAEX Object is inserted. Please keep in mind, that the copied + object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Creates a new CAEX object and prepends it to already existing elements. + + The created CAEX object. + + + + Creates a new CAEX object and prepends it to already existing elements. The content of the + new element can be defined using an array of tuples defining attribute names and their values. + + The attribute value tuples. + The created CAEX object. + + + + Removes the provided CAEX object from this sequence. + + The CAEX object. + + + + This method creates a CAEXWrapper for the provided node by invoking the constructor delegate. + This method can be overridden if a direct constructor can be called which can be + faster. + + the wrapped XML node + The CAEXWrapper for the provided node. + + + + This method uses the Schema manager to create a new sequence member. This Method can be overridden if a faster + method is provided without using the schema manager (if the requirements to create a schema conform element + are known). + + The sequence owner. + The new XML element which can be added to this sequence. + + + + Generic base class for all library objects of CAEX, which are: + + + , + + + , + + + , + + + , + + + . + + + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + Any CAEX library XML node. + + + + Gets or sets the constructor function to create the element sequence. + + + + + Gets the collection of LibraryElements contained in this instance. + + + + + Gets the enumerator to iterate through the collection of library objects. + + + An enumerator that can be used to iterate through the collection of library objects. + + + + + Gets the enumerator to iterate through the collection of library objects. + + An enumerator that can be used to iterate through the collection of library objects. + + + + Inserts the provided CAEX object as a new sibling after this CAEX object. + + The CAEX object to be inserted. + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + Inserts the provided CAEX object as a new sibling before this CAEX object. + + The CAEX object to be inserted + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + This Class is a wrapper for the CAEXElement 'ExternalInterface' + + + + + + Initializes a new instance of the class. + + An 'ExternalInterface' XML node. + + + + The constructor function for the . + + + + + Determines, if this external interface is associated to a SystemUnitClass, InternalElement, + InterfaceClass, RoleClass or + RoleRequirement and returns the Wrapper for this associated object. + Also works for nested Interfaces. + + + The associated object. + + + + + Gets a value indicating whether this instance is a master. + + + + + Determines, if this instance is a Mirror + + + + + Gets and sets the Master. A Master is only defined, if this instance is a . Setting a master + will transform this + instance into a mirror. + + + The master. + + + + + Gets the master, if this is a mirror object. + + + + + Gets the master identifier, if this ExternalInterface is a mirror . + + + + + Conversion to get access to specific AutomationML defined Attributes, assigned to the specified External Interface + object. + + The CAEX External Interface object. + + The InterfaceClass object, converted to an type, which provides access to + specific AML defined attributes. + + interfaceClass + + + + Creates a new Mirror of this ExternalInterface, using this instance as the new master of the created mirror. + + The created mirror ExternalInterface. + + + + Removes this ExternalInterface. After that it is no longer assigned to a document and has no owner anymore. + If this ExternalInterfaces has InternalLink relations, the InternalLink relations are removed too. + + + + + Gets or sets the references interface class. + + + + + Determines whether this ExternalInterface object has an associated reference to + the specified InterfaceClass. If inheritance relations between InterfaceClasses should be regarded, the + optional parameter 'regardInheritance' should be set. In this case the specified InterfaceClass is either identical + to a referenced InterfaceClass or a referenced InterfaceClass is derived from the specified InterfaceClass. + + The InterfaceClass object. + + if set to true inheritance relations + are regarded (default is false). + + + true if this ExternalInterface object has an associated reference to + the specified InterfaceClass; otherwise, false. + + interfaceClass + + + + This Class is a wrapper for the CAEXElement 'ExternalReference' which is a container element + for the alias definition of external CAEX files. + + + + + + + Initializes a new instance of the class. + + The 'ExternalReference' XML node. + + + + Gets and sets the alias name of an external CAEX file to enable referencing elements of the external CAEX file from + other + elements + + + + + Gets and sets the path of the external CAEX file. According to CAEX absolute and relative paths are allowed. + + + + + Inserts the provided CAEX object as a new sibling after this CAEX object. + + The CAEX object to be inserted. + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + Inserts the provided CAEX object as a new sibling before this CAEX object. + + The CAEX object to be inserted. + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + Interface to define elements which contain a collection of internal elements + + + + + + + Gets the collection of InternalElement objects contained in this instance. + + + + + This Class is a wrapper for the CAEXElement 'InterfaceClassLib' + + + + + + Initializes a new instance of the class. + + An 'InterfaceClassLib' XML node. + + + + Gets a collection of the InterfaceClass objects contained in this InterfaceClass Library. + + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Inserts the specified CAEX object in it's associated sequence. The InterfaceClassLib + defines the sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the given position. The InterfaceClassLib + defines the sequence. + + The position + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Interface that defines methods and properties that apply to all classes that are able to contain attributes. + + + + + + Get the collection of all attributes of this object. Inherited Attributes are not included. + + + + + Gets the attributes and all nested attributes. + + + + + Interface that defines methods and properties that apply to all classes that are able to contain ExternalInterface + objects. + + + + + + Gets the collection of ExternalInterface objects + + + + + Gets the collection of ExternalInterface objects including all nested descendant interfaces + + + + + This class is a CAEXWrapper for the CAEX element 'RefSemantic' used in an . + + + + + + Initializes a new instance of the class. + + A 'RefSemantic' XML node. + + + + Gets and sets the Attribute 'CorrespondingAttributePath' of the RefSemantic object. + + + + + This Class is a wrapper for the CAEXElement 'RoleClassLib' which is a Container element + for a hierarchy of Role class definitions wrapped into . + CAEX supports multiple role class libraries. + + + + + + Initializes a new instance of the class. + + The 'RoleClassLib' XML node. + + + + Gets the collection of RoleClass objects contained in this library. + + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Inserts the specified CAEX object in it's associated sequence. The RoleClassLibType + defines the sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the given position. The RoleClassLibType + defines the sequence. + + The position + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + This Class is a wrapper for the CAEXElement 'SourceDocumentInformation' which a structure to + model information about the data source of the present CAEX document. + + + + + + Initializes a new instance of the class. + + A 'SourceDocumentInformation' XML node. + + + + gets and sets the Date and time of the creation of the CAEX document. + + + + + Gets and sets an identifier of the origin of the CAEX document, e.g. a unique identifier of a source engineering + tool or an exporter software. + The ID shall not change even if the origin gets renamed + + + + + Gets and sets the Name of the origin of the CAEX document, e.g. the source engineering tool or an exporter software + + + + + Gets and sets a unique identifier of the corresponding source project (optional in CAEX) + + + + + Gets and sets the title of the corresponding source project (optional in CAEX) + + + + + Gets and sets the release information of the origin of the CAEX document, e.g. the version + of the source engineering tool or the exporter software (optional in CAEX) + + + + + Gets and sets the vendor of the data source of the CAEX document (optional in CAEX) + + + + + Gets and sets the vendors URL of the data source of the CAEX document (optional in CAEX) + + + + + Gets and sets the Version of the origin of the CAEX document, e.g. the version of the source engineering tool or + the exporter software. + + + + + This class is a wrapper for the CAEX element 'SourceObjectInformation'. This element can be assigned to a + to store a mapping between the ID of a CAEXObject and the ID of the same object, as + it is defined in the object source. + + + + + + Initializes a new instance of the class. + + A 'SourceObjectInformation' XML node. + + + + Gets and sets a value for the OriginID attribute of a SourceObjectInformation object. + + + + + Gets and sets a value for the SourceObjID attribute of a SourceObjectInformation object. + + + + + This class is the base CAEXWrapper class, defined for all CAEX objects. The CAEXWrapper class supports + notifications of changes. + + + + + + + A new CAEXWrapper instance is constructed to wrap the provided XML element. + + The XML element. + + + + The Change event raised when any property is modified. + + + + + Gets the CAEX document of this CAEX object. If the CAEX object has not been inserted + into a document or has been removed from the document, the value is null. + + + + + Gets the CAEXParent of this instance if it exists. + + + + + Gets the CAEXSequence containing this CAEX object + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + Gets the XDocument of the wrapped XML-Element + + + + + Determines if this is a wrapper around an existing XML-Element + + + + + Gets the wrapped XML-Element + + + + + Gets the wrapped Xml-Element's parent + + + + + Gets the name of the CAEX tag for this CAEX object. + + + + + operator overload (compares the wrapped nodes) + + The obj1. + The obj2. + + The result of the operator. + + + + + operator overload (compares the wrapped nodes) + + The obj1. + The obj2. + + The result of the operator. + + + + + Gets the first child of this CAEX object with the defined CAEX tag name. + + The CAEX tag name of the child. + The child, if it exists; otherwise null. + + + + Gets all children of this CAEX object with the defined CAEX tag name. + + The CAEX tag name of the child. + The children, if existing; otherwise Enumerable.Empty. + + + + Creates a deep copy of this CAEX object + + + if set to true a deep copy is created; otherwise only the attributes are included in the + copy. + + + if set to true all IDs, defined in the Node and the descendants get new IDs. + + + if set to true sub classes of SystemUnitClasses, InterfacesClasses, RoleClasses and AttributeTypes + are included in the copy. The default value is false. + + + The copied CAEX object. + + + + + Equality of CAEX wrapper instances is defined on the equality of the wrapped XML elements. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Gets the Hash code for this instance, using the wrapped XML element. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the value of the Xml-Attribute with the specified attribute name of the wrapped Xml-Element. + + The name of the attribute. + The attribute value if the attribute is defined, otherwise null. + + + + This method can be used to create an XML node, if this CAEX wrapper was instantiated without an XML node. + This method can only be applied, if an is defined. The new created CAEX object is + inserted as a new child of the owner. + + + true, if the XML node could be created and inserted as a new child of the owner. + + + + + Removes this element. After that it is no longer assigned to a document and has no owner anymore. + + + + + Sets the value of an attribute, adds an attribute, or removes an attribute (if the value is null). + + The name of the attribute + The attribute value. + + + + This methods creates the delegate for the constructor of the wrapped items. + + + + + + + Gets the first child of the wrapped XML element with the defined element name. + + The element name (Tag name). + The child, if it exists; otherwise null. + + + + Gets the list of all child's of the wrapped XML element with the defined element name. + + The element name (Tag name). + An enumeration of all child's with the defined element name. + + + + Gets the XName for the provided tagName suitable to this Nodes Namespace + + + + + + + Raise the event for the property with the defined name. + + + + + + Tries to extract a class qualifier from a path + + Collection of available class names + The path. + + + + + A CAEXWrapper for any Element, which is defined as a simple type. The DataType of the simple type is used + as the generic type parameter. + + The type of the data type. + + + + + + Initializes a new instance of the class. + + The XML node. + XML node - Tried to create a Wrapper without an XML node. + + + + Gets the wrapped XML node. + + + + + Gets and sets the value of the wrapped XML node, according to the defined DataType. If the element doesn't exists, + it is created and inserted into the document as a child of the defined owner. + + + The value. + + + + + The class CAEXBasicObject comprises a basic set of attributes and header information which exist for all CAEX + elements. + + + + + + Initializes a new instance of the class. + + Any CAEX BasicObject XML node. + + + + Gets the collection of AdditionalInformation values contained in this instance. + + + + + Gets and sets the change mode for a CAEX element (Optional in CAEX). + + + + + Gets and sets the Copyright for this object. + + + For CAEX 2.15 documents the content of the Copyright object is transformed to a string. + + + + + Gets the wrapper for the Copyright element. + + + + + Gets and sets the Description for this object. + + + For CAEX 2.15 documents the content of the Description object is transformed to a string. + + + + + Gets the wrapper for the Description element. + + + + + Gets the collection of Revision objects contained in this instance. + + + + + Gets the collection of SourceObjectInformation objects contained in this instance. + + + + + Gets and sets the Version for this object. + + + For CAEX 2.15 documents the content of the Version object is transformed to a string. + + + + + Gets the wrapper for the Version element. + + + + + Gets the CAEXSequence owned by this instance, which contains the specified CAEX object. + For example, if the specified object is a revision object, + the sequence of the revision objects is returned. + + The CAEX object, contained in a sequence, owned by this CAEX object. + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + Gets the CAEX Container for elements of type T, which is owned by this CAEX object + + + The CAEX container + + + + Inserts the specified CAEX object in it's associated sequence. The CAEXBasicObject + defines the and sequences. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the CAEX object + has been inserted into this sequence. + + + + + Inserts the specified CAEX object in it's associated sequence at the defined position. The CAEXBasicObject + defines the and sequences. + + The position + The CAEX object. + + true, if a sequence could be identified and the CAEX object + has been inserted into this sequence. + + + + + Creates a new Revision object and inserts it to the collection of Revision objects + either at the beginning or at the end of the sequence, according to the specified optional value. The Revision + object is initialized with the provided values. + + The date. + The author. + if set to true the created Revision is prepended, otherwise appended. + A Revision object. + + + + This class is a wrapper for the XDocument defining a CAEXDocument. Each CAEXDocument is associated to a specific + CAEX-Schema. + The Default Schema for newly created documents is always the most recently defined + CAEX-Schema (currently Version 3.0). The Schema for existing documents loaded from files or other sources is set to + the schema version defined in the document source. + Transformations of CAEXDocuments from lower schema versions to higher schema versions is possible. + Transformations from higher to lower schema versions + can also be done but may result in documents containing not all the information. Schema transformations can be done + with + a registered schema transformation service which implements the interface. + Creation of new documents with lower schema versions + is possible, but in this case, the schema version has to be defined explicitly. + + + + + Enumeration type defining existing and supported CAEX Versions + + + + + CAEX Schema Version 2.15 + + + + + CAEX Schema Version 3.0 + + + + + This value is used, if the CAEX document couldn't be associated to a specific schema version + + + + + private constructor setting the schema + + The CAEX schema version. + + + + The Commanding class, which provides events for changes of CAEX objects + + + + + This event is raised after a CAEXElement has been changed. + + + + + This event is raised before a CAEXElement will be changed. + + + + + The Default schema for new CAEX documents + + + + + Gets the CAEXFile which is the wrapper for the root element in the CAEX document + + + + + Gets the command instance for this document, which enables registration of change events + + + + + Gets the Schema of the CAEXDocument + + + + + Gets the schema manager for this document + + + + + Gets the schema version string for the assigned schema + + + + + Gets a value indicating whether this instance has an active schema transformation. + + + true if this instance is transformation active; otherwise, false. + + + + + Gets the schema manager for the CAEX document which contains the provided XML node. + + The XML node. + The AML schema manager. + + + + Gets the schema manager for the CAEX document which contains the provided CAEX object. + + The CAEX object. + The AML schema manager. + + + + Gets the CAEX document which contains the specified CAEX object. If the CAEX object has not been inserted into a + CAEX document, + no CAEX document is returned. + + The CAEX object. + The CAEX document. + + + + Gets the CAEX document which contains the specified XML node. + + The CAEXDocument, containing the XML node. + + + + + Loading a CAEX file from the specified Byte-Array. + + The CAEX file to load + + A CAEXDocument containing the CAEX-Nodes + + + + + Create a CAEX document with content, loaded from a file. The schema version of the CAEX document is set accordingly + to the + SchemaVersion-Attribute of the CAEXFile object. + + The file path. + + The created CAEX document. + + filePath + + + + Create a CAEX document with content, loaded from a stream. The schema version of the CAEX document is set + accordingly to the SchemaVersion-Attribute of the CAEXFile object. + + The content stream. + + The CAEX document. + + inStream + + + + Creates a new empty CAEX document containing only the CAEXFile Element as the root element. The CAEX document is + created, + using the default schema version . + + The created CAEX document containing the CAEXFile root element. + + + + Creates a new empty CAEX document containing only the CAEXFile element as the root element. The CAEX document is + created using the + specified schema version. The specified schema version defines the applicable editing methods. + + The schema version which defines the CAEX document. + + The created CAEX document containing the CAEXFile root element. + + + + + Saves the CAEX document to the specified file path. + + The file path to save the document to. + Set to true, if pretty printing is desired. + filename + + + + Saves the CAEX document to the specified file path. + + Set to true, if pretty printing is desired + The stream, containing the CAEX document content. + + + + Checks if the document is schema compliant. + + Log of schema violations. + true, if the CAEX document is schema compliant; otherwise false. + + + + Gets the correct XName for the provided CAEX element name (Tag name).The XName contains a namespace, + if the assigned schema requires a namespace. If no namespace is defined for the assigned schema (as + in CAEX 2.15), no namespace is added to the XName. The XName has to be used for all Xml.Linq queries, + used to access objects with the CAEX element name. + + A CAEX Tag name which should be transformed to a XName. + The generated XName. + tag name + + + + This method is called when a transformation service notifies the end of a schema transformation. The finalization + performs a final scan and deletes elements and attributes which are not schema conform and adds required attributes + and elements which are missing. + + + + + This method is called when a transformation service notifies the start of a schema transformation. + The transformation is initialized with a new schema conform CAEX document, containing the content + of the source document. + + The target schema (needs to be different to the actual schema). + the prepared document, returned to the transformation service for further processing. + + + + This class is a wrapper for the CAEX element 'CAEXFile' which is the root-element of any CAEX document. + + + + + + Initializes the class. + + + + + Initializes a new CAEXWrapper of the 'CAEXFile' element. + + The CAEXFile XML node. + + + + Gets the collection of AttributeTypeLib objects contained in the CAEXFile. + + + + + Gets the collection of ExternalReference objects contained in the CAEXFile. + + + + + Gets and sets the FileName attribute of the CAEXFile + + + + + Gets the collection of InstanceHierarchy objects contained in the CAEXFile. + + + + + Gets the collection of InterfaceClassLib objects contained in the CAEXFile. + + + + + Gets a value indicating whether this instance is empty. + + + + + Gets the collection of RoleClassLib objects contained in the CAEXFile. + + + + + Gets and sets the SchemaLocation attribute of the CAEXFile. + + + + + Gets and sets the SchemaVersion attribute of the CAEXFile. + + + + + Gets the collection of SourceDocumentInformation objects contained in the CAEXFile. + + + + + Gets the collection of SuperiorStandardVersion objects contained in the CAEXFile. + The value of the SuperiorStandardVersion object is defined as a string. + + + + + Gets the collection of SystemUnitClassLib objects contained in the CAEXFile. + + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Gets an enumerator that enables enumeration of all libraries in the CAEX file. + + Libraries enumerator of the CAEX file + + + + Retrieves the file name including full path out of the CAEX document. + + the file name including full path of the CAEX document + copied from externalization extensions + + + + Inserts the specified CAEX object in it's associated sequence. The CAEXFile + defines the , , + , , + and sequences. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the given position. The CAEXFile + defines the , , + , , + and sequences. + + the position + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + The class CAEXObject is derived from CAEXBasicObject, augmented by the CAEX Attributes Name(required) and + ID(optional). + + + + + + Specifies the format used for GUIDs. Format "D" is NOT adding {} around the GUID + + + + + Initializes a new instance of the class. + + Any CAEX object XML node. + + + + Gets and sets a unique identifier of the CAEX object (optional in CAEX). AutomationML requires IDs for some + Elements. + These IDs are automatically set when such elements are created. + + + + + Gets and sets the name of the CAEX object (required in CAEX). + + + + + Assigns the new unique identifier as a new ID to this CAEX object. + + + + + Gets the CAEX path for this object. A path can be used to uniquely reference an object, + for example in inheritances and instances. The path syntax for an object is defined + differently in CAEX 2.15 and CAEX 3.0. The engine uses the to generate + the CAEX path of an object according to the documents CAEX version. + + + Paths require the definition of separators between different path elements. CAEX 2.15 distinguishes + between 4 separator types: + Alias separator, object separator, interface separator and attribute separator. + In CAEX 3.0 only the separator types Alias separator and object separator are used. + + Please note that this method returns a different result than the + method, which always returns + the path including the object names of all ancestor hierarchy levels. + + + + The CAEX path. + + + + + Gets a new unique identifier. + + + + + Creates a deep copy of this CAEX object, containing all child elements. + The created copy will have replaced unique IDs and updated references, if + the is set to true (default). + When a CAEX class is copied, the nested classes that can exist for AttributeType, + RoleClass, SystemUnitClass, and InterfaceClass are + not included in the created copy. + + + if set to true a deep copy is created; otherwise only the attributes are included in the + copy. The default value is true. + + + if set to true all elements with IDs get unique + IDs and the ID references will be updated. The default value is true. + + + if set to true sub classes of SystemUnitClasses, InterfacesClasses, RoleClasses and AttributeTypes + are included in the copy. The default value is false. + + + A copy of this CAEX object with unique IDs. + + + + + Returns the value of the 'Name' attribute of this CAEX object as the string representation of the object. + + A that represents this instance. + + + + Class CAEX_CLASSModel_TagNames. + + + + + gets the CAEX-Tag name for the CAEX-wrapper type. + + Type of the CAEX wrapper. + + System.String. + + caexWrapperType + + + + The Name of the CAEX-Element 'AdditionalInformation'. This Element has no special CAEX-Wrapper. + + + + + The Name of the CAEX-Attribute 'Alias'. This is a Property in the CAEX-Wrapper + + + + + The Name of the CAEX-Element 'NominalScaledType'. CAEX-Wrapper is + + + + + The Name of the CAEX-Attribute 'RequiredValue'. This is a Property in the CAEX-Wrapper + + + + + + The Name of the CAEX-Attribute 'RequiredMaxValue'. This is a Property in the CAEX-Wrapper + + + + + + The Name of the CAEX-Attribute 'RequiredMinValue'. This is a Property in the CAEX-Wrapper + + + + + + The Name of the CAEX-Element 'OrdinalScaledType'. CAEX-Wrapper is + + + + + The Name of the CAEX-Attribute 'RequiredValue'. This is a Property in the CAEX-Wrapper + + + + + + The Name of the CAEX-Element 'Constraint'. The CAEX-Wrapper is + + + + + The Name of the CAEX-Element 'Requirements'. This is a Child of the CAEX-Wrapper + + + + + The Name of the CAEX-Element 'UnknownType'. The CAEX-Wrapper is + + + + + The Name of the CAEX-Element 'AttributeDataType' contained in the + + + + + The Name of the CAEX-Attribute 'DefaultValue'. This is a Property in the CAEX-Wrapper + + + + + + The Name of the Attribute 'CorrespondingAttributePath' of the CAEX-Element + + + + + The Name of the Attribute 'FileName' of the CAEX-Element + + + + + The Name of the CAEX-Attribute 'RefPartnerSideA'. This is a Property in the CAEX-Wrapper + + + + + + The Name of the CAEX-Attribute 'RefPartnerSideB'. This is a Property in the CAEX-Wrapper + + + + + + The Name of the CAEX-Attribute 'RefAttributeType'. This is a Property in the CAEX-Wrapper + + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Attribute 'RefBaseClassPath'. This is a Property in all Classes that implement + + + + + + The Name of the CAEX-Attribute 'RefBaseRoleClassPath'. This is a Property in + + + + + The Name of the CAEX-Attribute 'RefBaseSystemUnitPath'. This is a Property in + + + + + The Name of the CAEX-Attribute 'RefRoleClassPath'. This is a Property in + + + + + The Name of the Xml-Schema Location Attribute 'xsi:noNamespaceSchemaLocation' + + + + + The Name of the Xml-Schema Version Attribute 'SchemaVersion' of the CAEX-Element + + + + + The Name of the CAEX-Attribute 'RefSemantic'. A Property in . + + + + + The Name of the CAEX-Attribute 'RoleAttributeName' in an AttributeNameMapping. The CAEX-Wrapper is + . + + + + + The Name of the CAEX-Attribute 'RoleInterfaceID' in an InterfaceIDMapping. The CAEX-Wrapper is + . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Attribute 'RoleInterfaceName' in an InterfaceNameMapping. The CAEX-Wrapper is + . + + + Changed to in CAEX 3.0 + + + + + The Name of the CAEX-Element 'Attribute'. The CAEX-Wrapper is . + + + + + The Name of the CAEX-Attribute 'SystemUnitAttributeName' in an AttributeNameMapping. The CAEX-Wrapper is + . + + + + + The Name of the CAEX-Attribute 'SystemUnitInterfaceID' in an InterfaceIDMapping. The CAEX-Wrapper is + . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Attribute 'SystemUnitInterfaceName' in an InterfaceNameMapping. The CAEX-Wrapper is + . + + + Changed to in CAEX 3.0 + + + + + The Name of the CAEX-Attribute 'Unit' of the CAEX-Element + + + + + The Name of the CAEX-Element 'AttributeValueRequirement'. This is a Property in the CAEX-Wrapper + + + + + + The Name of the CAEX-Attribute 'Value'. A Property in the CAEX-Wrapper . + + + + + The TypeName of the CAEX-Element 'AttributeType'. The CAEX-Wrapper is for the + Type. + + + Applicable since CAEX-Version 3.0 + + + + + The TypeName of the CAEX-Element 'AttributeType'. The CAEX-Wrappers are . + + + Applicable since CAEX-Version 3.0 + + + + + The TypeName of the CAEX-Element 'AttributeTypeLib'. The CAEX-Wrappers are . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Element 'CAEXFile'. The CAEX-Wrapper is . + + + + + The Type Name of any CAEXBasicObject. The CAEX-Wrapper is . + + + + + The Type Name of any CAEXObject. The CAEX-Wrapper is . + + + + + The Name of the CAEX-Attribute 'ChangeMode'. This is an attribute of any . + + + + + The Name of the CAEX-Element 'Copyright'. This is an element in any Header . + + + + + The Name of the CAEX-Element 'Copyright'. This is an element in any Header . + + + + + The Name of the CAEX-Element 'ExternalInterface'. The CAEX-Wrapper is . + + + + + The Name of the CAEX-Element 'ExternalReference'. The CAEX-Wrapper is . + + + + + The Name of the CAEX-Attribute 'ID'. This is defined for every . + + + + + The Name of the CAEX-Element 'InstanceHierarchy'. CAEX-Wrapper is . + + + + + The Name of the CAEX-Element 'InterfaceClass'. The CAEX-Wrappers are and + + + + + + The Name of the CAEX-Element 'InterfaceClassLib'. The CAEX-Wrapper is . + + + + + The TypeName of the CAEX-Element 'InterfaceClass'. The CAEX-Wrappers are and + for the Type. + + + + + The Name of the CAEX-Element 'InternalElement'. The CAEX-Wrapper is . + + + + + The Name of the CAEX-Element 'InternalLink'. The CAEX-Wrapper is . + + + + + The Name of the CAEX-Attribute 'LastWritingDateTime' defined in + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Element 'AttributeNameMapping'. The CAEX-Wrapper is . + + + + + The Name of the CAEX-Element 'InterfaceIDMapping'. The CAEX-Wrapper is . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Element 'InterfaceNameMapping'. The CAEX-Wrapper is . + + + Changed to since CAEX-Version 3.0 + + + + + The Name of the CAEX-Element 'MappingObject'. The CAEX-Wrapper is . + + + + + The Name of the Type of the CAEX-Element 'MappingObject'. The CAEX-Wrapper is . + + + + + The Name of the additional AutomationML-CaexFile-Attribute 'AutomationMLVersion'. + + + Deprecated since CAEX-Version 3.0 + + + + + The meta attribute name document identifier is used to identify . + + + + + The meta attribute name document version is used to identify defined + in the of a . + + + + + The Name of the additional AutomationML-CaexFile-Element 'WriterHeader'. + + + Deprecated since CAEX-Version 3.0 + + + + + The meta WriterID string + + + + + The meta WriterName string + + + + + The meta WriterProjectID string + + + + + The meta WriterProjectTitle string + + + + + The meta WriterRelease string + + + + + The meta WriterVendor string + + + + + The meta WriterVendorURL string + + + + + The meta WriterVersion string + + + + + The Name of the CAEX-Attribute 'Name'. This is an Element in every . + + + + + The Name of the CAEX-Attribute 'OriginID'. This is an Element in every + . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Attribute 'OriginName'. This is an Element in every + . + + + + + The Name of the CAEX-Attribute 'OriginProjectID'. This is an Element in every + . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Attribute 'OriginProjectTitle'. This is an Element in every + . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Attribute 'OriginRelease'. This is an Element in every + . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Attribute 'OriginVendor'. This is an Element in every + . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Attribute 'OriginVendorURL'. This is an Element in every + . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Attribute 'OriginVersion'. This is an Element in every + . + + + + + The Name of the CAEX-Attribute 'Path'. This is defined in + + + + + The Name of the CAEX-Element 'RefSemantic'. This is a CAEX-Element with the CAEX-Wrapper + + + + + + The Name of the CAEX-Element 'AuthorName'. This is an element in . + + + + + The Name of the CAEX-Element 'Comment'. This is an element in . + + + + + The Name of the CAEX-Element 'RevisionDate'. This is an element in . + + + + + The Name of the CAEX-Element 'NewVersion'. This is an element in . + + + + + The Name of the CAEX-Element 'OldVersion'. This is an element in . + + + + + The Name of the CAEX-Element 'Revision'. The CAEX-Wrapper is . + + + + + The Name of the CAEX-Element 'RoleClass'. The CAEX-Wrappers are and + . + + + + + The Name of the CAEX-Element 'RoleClassLib'. The CAEX-Wrapper is . + + + + + The TypeName of the CAEX-Element 'RoleClass'. The CAEX-Wrappers are and + for the Type. + + + + + The Name of the CAEX-Element 'RoleRequirements'. The CAEX-Wrapper is . + + + + + The Name of the CAEX-Element 'SourceDocumentInformation'. CAEX-Wrapper is + . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Element 'SourceObjectInformation'. CAEX-Wrapper is . + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Attribute 'SourceObjID'. This Attribute is defined in + . + + + Applicable since CAEX-Version 3.0 + + + + + The TypeName of the CAEX-Element 'SuperiorStandardVersion'. + + + Applicable since CAEX-Version 3.0 + + + + + The Name of the CAEX-Element 'SupportedRoleClass'. The CAEX-Wrapper is . + + + + + The Name of the CAEX-Element 'SystemUnitClass'. The CAEX-Wrappers are and + . + + + + + The Name of the CAEX-Element 'SystemUnitClassLib'. The CAEX-Wrapper is . + + + + + The TypeName of the CAEX-Element 'SystemUnitClass'. The CAEX-Wrappers are and + for the Type. + + + + + The Name of the CAEX-Element 'Version'. This may be defined in every . + + + + + The CAEXNamespace of a CAEX Document + + + Applicable since CAEX-Version 3.0 + + + + + Enumeration defining possible ChangeMode values of the ChangeMode Attribute + + + + + corresponds to attribute value 'state' + + + + + corresponds to attribute value 'create' + + + + + corresponds to attribute value 'delete' + + + + + corresponds to attribute value 'change' + + + + + corresponds to a null attribute value + + + + + This Class is a wrapper for the CAEXElement 'InstanceHierarchy' which is a Container element + for a hierarchy of InternalElements. + + + + + + + Initializes a new instance of the class. + + An 'nstanceHierarchy' XML node. + + + + The constructor function for the . + + + + + Gets the List of wrappers for the InternalElements of the top level of the InstanceHierarchy. + + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Inserts the specified CAEX object in it's associated sequence. The InstanceHierarchy + defines the sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the given position. The InstanceHierarchy + defines the sequence. + + + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + This Class is a wrapper for the CAEXElement 'InterfaceClass' + + + + + + + + Creates a Wrapper for the specified XElement, if it is a CAEX InterfaceClass. + + An 'InterfaceClass' or 'ExternalInterface' XML node. + + + + Gets the collection of Attributes for this Instance + + + + + Gets the attributes and all nested attributes. + + + + + Gets the collection of ExternalInterface objects including all nested descendant interfaces + + + + + Gets and sets the ReferencedBaseClass for this instance. + + + + + Gets the collection of ExternalInterfaces for this Instance. + + + Nested Interfaces are allowed only in AMLDocuments based on CAEX Version 3.0 and later. + + + + + Gets and sets the path which references a base class + + + + + Conversion to get access to specific AutomationML defined Attributes, assigned to the specified InterfaceClass + object. + + The CAEX InterfaceClass object. + + The InterfaceClass object, converted to an type, which provides access to + specific AML defined attributes. + + interfaceClass + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + + + + Inserts the specified CAEX object in it's associated sequence. The InterfaceClass + defines the and sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the given position. The InterfaceClass + defines the and sequence. + + + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + This Class is a wrapper for the CAEXElement 'InterfaceFamilyType' + + + + + + + + + Initializes a new instance of the class. + + An 'InterfaceClass' XML node. + + + + The constructor function for the . + + + + + Gets and sets the ReferencedBaseClass for this instance. + + + + + Gets the collection of InterfaceClass objects contained in this instance. + + + + + Gets and sets the path which references a base class. + This property is used to create class to class relations between InterfaceClass objects. + According to CAEX, a class shall not inherit from itself or + from a derivative of itself, therefore any cyclic reference is denied. + + + + + Gets the name (not the full path) of the referenced base class. + + The name of the referenced class. + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + + + + Creates an ExternalInterface object as an instance of this InterfaceClass object. All Base-Class references + are resolved to create the instance - copying the Attribute and ExternalInterface objects to the + created ExternalInterface object. The IDs of the ExternalInterface objects are made unique. + + The ExternalInterface object + + + + Creates a ExternalInterface object as an instance of this InterfaceClass object. + All Base-Classes are resolved to create the instance. + + The CAEXWrapper for the ExternalInterface + + + + Gets the Enumerator for the enumeration of the field. + + Enumerator for InterfaceClass + + + + Gets the Enumerator for the enumeration of the field. + + Enumerator for InterfaceClass + + + + Gets the reference (Inheritance) hierarchy including this instance in an ordered sequence of ancestors. + + Collection of base classes + + + + Gets the reference (Inheritance) hierarchy including this instance in an ordered sequence of ancestors. + + Type of the CAEX class in the hierarchy. + a queue of ancestors. this instance is first in the queue + + + + Inserts the specified CAEX object in it's associated sequence. The InterfaceFamilyType + defines the sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence. The InterfaceFamilyType + defines the sequence. + + The position + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + This Class is a wrapper for the CAEXElement 'InternalElement'. + + + + + + + Initializes a new instance of the class. + + An 'InternalElement' XML node. + + + + The constructor function for the . + + + + + Gets a value indicating whether this instance is a master. + + + + + Determines, if this instance is a Mirror + + + + + Gets the MappingObject of an InternalElement + + + Only valid for CAEX 2.15. Don't use this property for later versions of CAEX. + + + + + Gets and sets the Master. A Master is only defined, if this instance is a . Setting a master + will transform this + instance into a mirror. + + + + + Gets the master. + + + + + Gets the master identifier, if this InternalElement is a mirror . + + + + + Gets and sets the RefBaseSystemUnitPath Attribute of an InternalElement. + For Class assignments the property is appropriate. + + + + + Gets all role references for the InternalElement. The collection includes all + RoleRequirement objects and SupportedRoleClass objects. + + + + + Gets the collection of RoleRequirements objects contained in this instance. + + + + + Gets and sets the referenced SystemUnitClass using the + + + + + Adds a RoleClass reference to this InternalElement object using the provided + RoleClass object. The RoleClass reference is added as + a object. For CAEX documents which are + based on CAEX version 2.15, only one RoleRequirement is allowed for an InternalElement. + Additional RoleClass references are automatically added as SupportedRoleClass objects. + + The RoleClass to be assigned to the InternalElement. + if set to true [add supported role class]. + + if set to true, the RoleClass reference is not added, if a reference to the + provided RoleClass already exists. + + + if set to true, the reference is created as am instance of the RoleClass, + containig all ExternalInterfaces and Attributes of the RoleClass. + + The new added RoleClass reference, which is either a RoleRequirement + or a SupportedRoleClass. + + roleClass + + The default behaviour is, that only a reference to the role class is added and no instance of + the class containing all Attributes and ExternalInterface objects. If an instance is required, + set the optional parameter 'addInstance' to true or + use the + and the methods. + + + This sample shows how to call the method using + a standard base RoleClass from the + + + var amlBaseRoleClassLib = AutomationMLBaseRoleClassLibType.RoleClassLib (myDocument); + var myIH = myDocument.CAEXFile.InstanceHierarchy.Append ("myIH"); + var myIE = myIH.InternalElement.Append("myIH"); + myIE.AddRoleClassReference (amlBaseRoleClassLib.AutomationMLBaseRole); + + + + + + Adds a RoleClass reference to this InternalElement object using the provided + CAEX path, referencing a RoleClass object. The RoleClass reference is added as + a object. For CAEX documents which are + based on CAEX version 2.15, only one RoleRequirement is allowed for an InternalElement. + Additional RoleClass references are added as SupportedRoleClass objects. + + + The CAEX path referencing a RoleClass to be assigned + to the InternalElement. + + + if set to true the reference is not added, if the + same reference already exists. + + + if set to true, the reference is created as an instance of the RoleClass, + identified by the provided roleClassReference, + containig all ExternalInterfaces and Attributes of the RoleClass. + + The new added RoleClass reference, which is either a RoleRequirement + or a SupportedRoleClass. + + roleClassReference + + The default behaviour is, that only a reference to the role class is added + and no instance of the class containing all Attributes and ExternalInterface objects. + If an instance is required, set the optional parameter 'addInstance' to true + or use the and + the methods, + + + This sample shows how to call the method using + a standard RoleClass path defined in the + + var myIH = myDocument.CAEXFile.InstanceHierarchy.Append ("myIH"); + var myIE = myIH.InternalElement.Append("myIH"); + myIE.AddRoleClassReference (AutomationMLBaseRoleClassLib.AutomationMLBaseRole); + + + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Creates a new mirror element from this InternalElement + + + + + Creates a system unit class from this InternalElement instance. RoleRequirements are transformed to + SupportedRoleClasses. + Attributes and ExternalInterfaces of RoleRequirements are removed. + + + + + + Determines whether this InternalElement object has an associated reference to + a RoleClass which is a generalization of the specified which means, that the + specified RoleClass + is more specific than any already associated RoleClass of this InternalElement. + + The RoleClass object. + + true if this InternalElement object has an associated RoleClass, + which is a generalization of the specified RoleClass; otherwise, false. + + roleClass + + + + Determines whether this InternalElement object has an associated RoleClass reference + which is a generalization of the specified CAEX path role reference. + + The role reference. + + true if this InternalElement object has an associated RoleClass reference + which is a generalization of the specified CAEX path role reference; otherwise, false. + + roleReference + + + + Determines whether this InternalElement object has an associated reference to + the specified RoleClass. If inheritance relations between role classes should be regarded, the + optional parameter 'regardInheritance' should be set. In this case the specified RoleClass is either identical + to a referenced RoleClass or a referenced RoleClass is derived from the specified RoleClass. + + The RoleClass object. + + if set to true inheritance relations + are regarded (default is false). + + + true if this InternalElement object has an associated reference to + the specified RoleClass; otherwise, false. + + roleClass + + This sample shows how to call the method using + a standard base RoleClass from the + + + var amlBaseRoleClassLib = AutomationMLBaseRoleClassLibType.RoleClassLib (myDocument); + InternalElementType internalElement; + ... + internalElement.HasRoleClassReference (amlBaseRoleClassLib.AutomationMLBaseRole); + + + + + + Determines whether this InternalElement object has an associated reference to + the specified SystemUnitClass. If inheritance relations between systemUnitClasses should be regarded, the + optional parameter 'regardInheritance' should be set. In this case the specified SystemUnitClass is either + identical + to a referenced SystemUnitClass or a referenced SystemUnitClass is derived from the specified SystemUnitClass. + + The SystemUnitClass object. + + if set to true inheritance relations + are regarded (default is false). + + + true if this InternalElement object has an associated reference to + the specified SystemUnitClass; otherwise, false. + + roleClass + + + + Determines whether this InternalElement object has an associated RoleClass reference + with the specified CAEX path role reference. If inheritance relations between role classes should be regarded, the + optional parameter 'regardInheritance' should be set. In this case the specified RoleClass is either identical + to a referenced RoleClass or a referenced RoleClass is derived from the specified RoleClass. + + The role reference. + + if set to true inheritance relations + are regarded (default is false). + + + true if this InternalElement object has an associated RoleClass reference + with the specified CAEX path role reference; otherwise, false. + + roleReference + + This sample shows how to call the method using + a standard base RoleClass path from the + + + InternalElementType internalElement; + ... + internalElement.HasRoleClassReference (AutomationMLBaseRoleClassLib.AutomationMLBaseRole); + + + + + + Inserts the specified CAEX object in it's associated sequence. The InternalElement + defines the sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the given position. The InternalElement + defines the sequence. + + The position. + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Adding a new MappingObject element to this InternalElement. + + + The new MappingObject element if not existing, otherwise the existing. + + An InternalElement object doesn't exist! + Raised if applied to CAEX 3.0 and later versions. + + Only valid for CAEX 2.15. Don't use this method for later versions of CAEX. If used for later versions, a + SchemaConformanceException is raised. + + + + + Replaces an existing role class reference to the provided role or any generic base role of the provided role + by a new instance of the role class. + + The role class. + if set to true a supported role class is created. + + roleClass + roleClass + + + + This Class is a wrapper for the CAEXElement 'MappingObject' + + + + + + Initializes a new instance of the class. + + A 'MappingObject' XML node. + + + + Gets the Role reference, which can provide additional RoleClass Mapping elements/>. + + + + + Gets the collection of AttributeNameMapping objects contained in this instance. + + + + + Gets the collection of InterfaceIDMapping objects contained in this instance. + + + InterfaceIDMapping Elements are only defined since CAEX Version 3.0. + + + + + Gets the collection of InterfaceNameMapping objects contained in this instance. + + + InterfaceNameMapping Elements are only defined in CAEX Version 2.15. + + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Inserts the specified CAEX object in it's associated sequence. The MappingType + defines the , and + sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence at the given position. The MappingType + defines the , and + sequence. + + The position + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + This Class is a wrapper for the CAEXElement 'Revision' which contains organizational information about the state of + the revision of a CAEX object + + + + + + Initializes a new instance of the class. + + The 'Revision' XML node. + + + + Gets or sets the name of the author. + + + The name of the author. + + + + + Gets or sets the comment. + + + The comment. + + + + + Gets or sets the new version. + + + The new version. + + + + + Gets and sets the provided CAEX object as the new version. + + + + + Gets or sets the old version. + + + The old version. + + + + + Gets and sets the provided CAEX object as the old version. + + + + + Gets or sets the revision date. + + + The revision date. + + + + + This Class is a wrapper for the CAEXElement 'RoleClass' + + + + + + + + Initializes a new instance of the class. + + A 'RoleClass' XML node. + + + + Gets the collection of Attribute objects contained in this instance. + + + + + Gets the attributes and all nested attributes. + + + + + Gets the collection of ExternalInterface objects including all nested descendant interfaces + + + + + Gets the collection of ExternalInterface objects contained in this instance. + + + + + Conversion to get access to specific AutomationML defined Attributes + + The CAEX object. + + The result of the conversion. + + caexObject + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Gets the CAEX Container for elements of type T, which is owned by this CAEX object + + + + The CAEX container + + + + + Inserts the specified CAEX object in it's associated sequence. The RoleClass + defines the and sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence. The RoleClass + defines the and sequence. + + + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + This Class is a wrapper for the CAEXElement 'RoleFamilyType' which defines base structures for role class + definitions. + The RoleFamilyType Type allows the creation of role class trees + + + + + + + + + Initializes a new instance of the class. + + A 'RoleClass' XML node. + + + + The constructor function for the . + + + + + Gets and sets the BaseClass for this instance. According to CAEX, a class shall not inherit from itself or + from a derivative of itself, therefore any cyclic reference is denied. + + + + + Gets and sets the path which references a base class. According to CAEX, a class shall not inherit from itself or + from a derivative of itself, therefore any cyclic reference is denied. + + + + + Gets the name (not the full path) of the referenced base class. + + The name of the referenced class. + + + + Gets the collection of RoleClass objects contained in this instance. + + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + + + + Creates a RoleRequirements object as an instance of this RoleClass object. All Base-Class references + are resolved to create the instance - copying the Attribute and ExternalInterface objects to the + created RoleRequirements object. The IDs of the ExternalInterface objects are made unique. + + The RoleRequirements object + + + + Creates a RoleRequirement as an instance of this RoleClass object. All Base-Class references + are resolved to create the instance. + + The CAEXWrapper as a RoleRequirement + + + + Creates a SupportedRoleClass object from this RoleClass. + + The created SupportedRoleClass + + + + Gets the Enumerator for the enumeration of the field. + + + An enumerator that can be used to iterate through the collection. + + + + + Gets the Enumerator for the enumeration of the field. + + + An enumerator that can be used to iterate through the collection. + + + + + Gets the reference (Inheritance) hierarchy including this instance in an ordered sequence of ancestors. + + Enumerator of base classes. + + + + Gets the reference (Inheritance) hierarchy including this instance in an ordered sequence of ancestors. + + The class type. + A queue of ancestors. this instance is first in the queue + + + + Inserts the specified CAEX object in it's associated sequence. The RoleFamilyType + defines the sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence. The RoleFamilyType + defines the sequence. + + + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + This Class is a wrapper for the CAEXElement 'SystemUnitClassLib'. + + + + + + Gets a collection of SystemUnitClass objects contained in this instance. + + + + + Initializes the class. + + + + + Initializes a new instance of the class. + + A 'SystemUnitClassLib' XML node. + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + Inserts the specified CAEX object in it's associated sequence. The SystemUnitClassLibType + defines the sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence. The SystemUnitClassLibType + defines the sequence. + + + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + This Class is a wrapper for the CAEXElement 'SystemUnitClass' that allows definition of child SystemUnitClasses + within the class hierarchy. + The parent child relation between two SystemUnitClasses has no semantic. + + + + + + + + + + Initializes a new instance of the class. + + A 'SystemUnitClass' or 'InternalElement' XML node. + + + + Gets the collection of Attribute objects for this instance. + + + + + Gets the attributes and all nested attributes. + + + + + Gets the collection of ExternalInterface objects including all nested descendant interfaces + + + + + Gets a collection of ExternalInterface objects contained in this instance. + + + + + Gets the collection of InternalElement objects for this instance. + + + + + Gets the collection of InternalLink objects contained in this instance. + + + + + Gets all role references for the SystemUnitClass. The collection includes all + RoleRequirement objects and SupportedRoleClass objects. + + + + + Gets the collection of SupportedRoleClass objects contained in this instance. + + + + + Get the RoleClass from the sequence of with the provided + . + + Name of the role class. + The supported RoleClass object with the provided name if existent, otherwise null. + + + + Conversion to get access to specific AutomationML defined Attributes + + The CAEX object. + + The result of the conversion. + + caexObject + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + The CAEX object, contained in a sequence, owned by this CAEX object. + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + + + + Enumeration of contained InternalElement objects + + + An enumerator that can be used to iterate through the collection. + + + + + Enumeration of contained InternalElement objects + + An enumerator that can be used to iterate through the collection. + + + + Inserts the specified CAEX object in it's associated sequence. The SystemUnitClass + defines the , , + , , and + sequence. + + The CAEX object. + + if set to true it is inserted as the + first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence. The SystemUnitClass + defines the , , + , , and + sequence. + + + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; If a copy of the CAEX + object has been inserted + or the provided CAEX object doesn't represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object and not the original + provided CAEX Object is inserted. + Please keep in mind, that the copied object + contains identical attributes and elements. It might not represent a valid AutomationML object, because IDs and + references are + not automatically modified. + + + + + Inserts the provided CAEX object as a new sibling after this CAEX object. + + The CAEX object to be inserted. + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + Inserts the provided CAEX object as a new sibling before this CAEX object. + + The CAEX object to be inserted + caexObject + The provided object is not allowed to be a sibling of this instance. + + + + Gets the Lowest common parent to this SystemUnitClass and the provided SystemUnitClass. The common parent is used + to + store an InternalLink relating this two SystemUnitClass objects. An InternalLink is not allowed to leave the + boundary of + a SystemUnitClass which means, that no common parent is defined for two different SystemUnitClass objects. If one + Element + is a SystemUnitClass the other one should be an InternalElement descendant of the SystemUnitClass. + + The system unit class. + the SystemUnitClass object which is the lowest common parent + systemUnitClass + + + + Determines whether this CAEX Element has an associated reference to + the specified InterfaceClass. If inheritance relations between InterfaceClasses should be regarded, the + optional parameter 'regardInheritance' should be set. In this case the specified InterfaceClass is either identical + to a referenced InterfaceClass or a referenced InterfaceClass is derived from the specified InterfaceClass. + + The InterfaceClass object. + + if set to true inheritance relations + are regarded (default is false). + + + true if this CAEX Element object has an associated reference to + the specified InterfaceClass; otherwise, false. + + roleClass + + This sample shows how to call the method using + a standard base InterfaceClass from the + + + var amlInterfaceClassLib = AutomationMLInterfaceClassLibType.InterfaceClassLib (myDocument); + InternalElementType internalElement; + ... + internalElement.HasInterfaceClassReference (amlInterfaceClassLib.COLLADAInterface); + + + + + + Adds an InterfaceClass reference to this SystemUnitClass object using the provided + InterfaceClass object. The InterfaceClass reference is added as + a object. + + The InterfaceClass to be assigned to the SystemUnitClass. + + if set to true, the InterfaceClass reference is not added, if a reference to the + provided InterfaceClass already exists. + + + if set to true, the reference is created as am instance of the InterfaceClass, + containig all ExternalInterfaces and Attributes of the InterfaceClass. + + The new added InterfaceClass reference. + + interfaceClass + + The default behaviour is, that only a reference to the interface class is added and no instance of + the class containing all Attributes and ExternalInterface objects. If an instance is required, + set the optional parameter 'addInstance' to true or + use the + and the methods. + + + This sample shows how to call the method using + a standard base InterfaceClass from the + + + var amlInterfaceClassLib = AutomationMLInterfaceClassLibType.InterfaceClassLib (myDocument); + var myIH = myDocument.CAEXFile.InstanceHierarchy.Append ("myIH"); + var myIE = myIH.InternalElement.Append("myIH"); + myIE.AddInterfaceClassReference (amlInterfaceClassLib.AutomationMLBaseInterface); + + + + + + Adds an InterfaceClass reference to this SystemUnitClass object using the provided + CAEX path, referencing an InterfaceClass object. The InterfaceClass reference is added as + a object. + + + The CAEX path referencing a InterfaceClass to be assigned + to the SystemUnitClass. + + + if set to true the reference is not added, if the + same reference already exists. + + + if set to true, the reference is created as an instance of the InterfaceClass, + identified by the provided interfaceClassReference, + containig all ExternalInterfaces and Attributes of the InterfaceClass. + + The new added InterfaceClass reference. + + interfaceClassReference + + The default behaviour is, that only a reference to the interface class is added + and no instance of the class containing all Attributes and ExternalInterface objects. + If an instance is required, set the optional parameter 'addInstance' to true + or use the and + the methods, + + + This sample shows how to call the method using + a standard InterfaceClass path defined in the + + var myIH = myDocument.CAEXFile.InstanceHierarchy.Append ("myIH"); + var myIE = myIH.InternalElement.Append("myIH"); + myIE.AddInterfaceClassReference (AutomationMLInterfaceClassLib.AutomationMLBaseInterface); + + + + + + This Class is a wrapper for the CAEXElement 'SystemUnitFamilyType' which defines base + structures for a hierarchical SystemUnitClass tree. The hierarchical structure has + organizational character only. The class supports direct enumeration of the Tree. + + + + + + + + + Initializes a new instance of the class. + + A 'SystemUnitClass' XML node. + + + + Gets and sets the BaseClass for this instance. According to CAEX, a class shall not + inherit from itself or from a derivative of itself, therefore any cyclic reference is denied. + + + + + Gets and sets the path which references a base class. According to CAEX, a class shall + not inherit from itself or from a derivative of itself, therefore any cyclic reference + is denied. + + + + + Gets the name (not the full path) of the referenced base class. + + The name of the referenced class. + + + + Gets a collection of SystemUnitClass objects of this instance. + + + + + The constructor function for the . + + + + + Adds a RoleClass reference to this SystemUnitClass object using the provided RoleClass + object. The RoleClass reference is added as a object. + + The RoleClass to be assigned to the SystemUnitClass. + + if set to true, the RoleClass reference is not added, if a reference to the + provided RoleClass already exists. + + The new added RoleClass reference. + roleClass + + This sample shows how to call the method using a standard base RoleClass from the + + var amlBaseRoleClassLib = AutomationMLBaseRoleClassLibType.RoleClassLib (myDocument); + var mySlib = myDocument.CAEXFile.SystemUnitClassLib.Append ("mySlib"); + var mySuc = mySlib.SystemUnitClass.Append("mySuc"); + mySuc.AddRoleClassReference (amlBaseRoleClassLib.AutomationMLBaseRole); + + + + + + Adds a RoleClass reference to this SystemUnitClass object using the provided CAEX path, + referencing a RoleClass object. The RoleClass reference is added as a object. + + + The CAEX path referencing a RoleClass to be assigned to the SystemUnitClass. + + + if set to true the reference is not added, if the same reference already exists. + + The new added RoleClass reference, which is a SupportedRoleClass. + roleClassReference + + This sample shows how to call the + method using a standard RoleClass path defined in the + + var mySlib = myDocument.CAEXFile.SystemUnitClassLib.Append ("mySlib"); + var mySuc = mySlib.SystemUnitClass.Append("mySuc"); + mySuc.AddRoleClassReference (AutomationMLBaseRoleClassLib.AutomationMLBaseRole); + + + + + + Gets the CAEXSequence owned by this CAEX object, which contains the specified CAEX object. + + + The CAEX object, contained in a sequence, owned by this CAEX object. + + + The CAEX sequence or null, if no sequence exists, containing the specified CAEX object. + + + + + + + + Creates an InternalElement as an instance of this class. All References to Base classes + are resolved. + + + If the document is based on CAEX 2.15 and the SystemUnitClass provides only one + Supported role class, the created Internal Element will contain a role requirement + object, representing the role. + + The InternalElement + + + + Creates an InternalElement as an instance of this class. All References to Base classes + are resolved. + + CAEXWrapper for the InternalElement + + + + Gets the Enumerator for the enumeration of the field. + + An enumerator that can be used to iterate through the collection. + + + + Gets the Enumerator for the enumeration of the field. + + An enumerator that can be used to iterate through the collection. + + + + Gets a collection of SupportedRoleClasses objects of this SystemUnitClass and of all + inherited BaseClasses. Duplicates are removed from the result. + + A collection of SupportedRoleClass objects for this instance and its BaseClasses. + + + + Getting a referenced SystemUnitClass. + + Full path to a SystemUnitClass + The referenced SystemUnitClass + systemUnitClassReference + + + + Gets the reference (Inheritance) hierarchy including this instance in an ordered + sequence of ancestors. + + Collection of base classes + + + + Gets the reference (Inheritance) hierarchy including this instance in an ordered + sequence of ancestors. + + Type of the CAEX class in the hierarchy. + a queue of ancestors. this instance is first in the queue + + + + Determines whether the specified RoleClass is more specific than any already associated + RoleClass of this SystemUnitClass. This method doesn't check inherited RoleClass + references from ancestors. If an assigned RoleClass is identical to the specified + RoleClass, the result is false. + + The RoleClass object. + + true if this SystemUnitFamilyType object has an associated RoleClass reference + which is a generalization of the specified RoleClass (the RoleClass is more specific); + otherwise, false. + + roleClass + + + + Determines whether the specified roleReference is more specific than any already + associated SupportedRoleClass of this SystemUnitClass. This method doesn't check + inherited RoleClass references from ancestors. If an assigned RoleClass is identical to + the specified RoleClass, the result is false. + + The RoleReference object. + + true if this SystemUnitFamilyType object has an associated SupportedRoleClass + reference which is a generalization of the specified RoleClass (the RoleClass is more + specific); otherwise, false. + + roleClass + + + + Determines whether this SystemUnitClass object has a SupportedRoleClass with a reference + to the specified RoleClass. If inheritance relations between role classes should be + regarded, the optional parameter 'regardInheritance' should be set. In this case the + specified RoleClass is either identical to a referenced RoleClass or a referenced + RoleClass is derived from the specified RoleClass. Independently of the value, always the Role assignments to this + SystemUnitClass and any ancestors of this SystemUnitClass are checked, using the method. + + The RoleClass object. + + if set to true inheritance relations are regarded (default is false). + + + true if this SystemUnitClass object has a SupportedRoleClass with a reference to + the specified RoleClass; otherwise, false. + + roleClass + + This sample shows how to call the method using a standard base RoleClass from the + + var amlBaseRoleClassLib = AutomationMLBaseRoleClassLibType.RoleClassLib (myDocument); + SystemUnitFamilyType systemUnitClass; + ... + systemUnitClass.HasRoleClassReference (amlBaseRoleClassLib.AutomationMLBaseRole); + + + + + + Determines whether this SystemUnitClass object has a SupportedRoleClass with the + specified CAEX path reference. If inheritance relation should be regarded, the optional + parameter 'regardInheritance' should be set. + + The CAEX path to a RoleClass object. + + if set to true inheritance relations are regarded (default is false). + + + true if this SystemUnitClass object has a SupportedRoleClass with the specified + CAEX path reference. + + roleClass + + This sample shows how to call the + method using a standard base RoleClass path from the + + SystemUnitFamilyType systemUnitClass; + ... + systemUnitClass.HasRoleReference (AutomationMLBaseRoleClassLib.AutomationMLBaseRole); + + + + + + Inserts the specified CAEX object in it's associated sequence. The SystemUnitFamilyType + defines the sequence. + + The CAEX object. + + if set to true it is inserted as the first item in its associated sequence. + + + true, if a sequence could be identified and the provided CAEX object is inserted; + If a copy of the CAEX object has been inserted or the provided CAEX object doesn't + represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object + and not the original provided CAEX Object is inserted. Please keep in mind, that the + copied object contains identical attributes and elements. It might not represent a valid + AutomationML object, because IDs and references are not automatically modified. + + + + + Inserts the specified CAEX object in it's associated sequence. The SystemUnitFamilyType + defines the sequence. + + + The CAEX object. + + true, if a sequence could be identified and the provided CAEX object is inserted; + If a copy of the CAEX object has been inserted or the provided CAEX object doesn't + represent a valid member of any sequence the result is false. + + + If the provided CAEX object already has an associated parent, a copy of the CAEX object + and not the original provided CAEX Object is inserted. Please keep in mind, that the + copied object contains identical attributes and elements. It might not represent a valid + AutomationML object, because IDs and references are not automatically modified. + + + + + Replaces an existing role class reference to the provided role or a generic base role of + the provided role by a new instance of the role class. + + The role class. + + roleClass + + + + The Aml.Engine.Resources Namespace gives public access to the XSD Datatype resource strings. + + + + + Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + + + + + Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + + + + + Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:anyURI ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:base64Binary ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:boolean ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:byte ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:dateTime ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:date ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:decimal ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:double ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:duration ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:ENTITIES ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:ENTITY ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:float ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:gDay ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:gMonthDay ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:gMonth ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:gYearMonth ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:gYear ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:hexBinary ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:IDREFS ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:IDREF ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:ID ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:integer ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:int ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:language ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:long ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:Name ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:NCName ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:negativeInteger ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:NMTOKENS ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:NMTOKEN ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:nonNegativeInteger ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:nonPositiveInteger ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:normalizedString ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:positiveInteger ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:QName ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:short ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:string ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:time ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:token ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:unsignedByte ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:unsignedInt ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:unsignedLong ähnelt. + + + + + Sucht eine lokalisierte Zeichenfolge, die xs:unsignedShort ähnelt. + + + + + Extension class which provides an empty lookup table + + The type of the key. + The type of the element. + + + + Gets the empty lookup table instance. + + + + + This interface is defined for all CAEXObjects to which a split point can be assigned. SplitPoints are + allowed on and . + + + + + + This is the basic interface for an AML service. This interface has to be implemented + by any AML service + + + + + This is a special interface for an AML service, which uses a registry to store data about an XML Document. + + + + + Removes the document from the internal registry of the service. + + The XML document. + + + + Interface defined for services, which support automatic updates of cross references between AutomationML objects. + Updates are executed, when a referenced object changes its identification (its Name or its ID). + + + + + Gets or sets a value indicating whether this instance will automatically update + cross references between AutomationML objects. + + + true if the automatic update is enabled; otherwise, false. + + + + + Occurs when any reference has been updated. + + + + + Event arguments used to inform about update events in the service. + + + + + + Initializes a new instance of the class. + + The referenced element. + The reference. + + + + Initializes a new instance of the class. + + The referenced element. + The reference. + The updated new value for the reference + + + + Gets the updated reference. + + + + + Gets the updated new value (used in changing event notifications, if the reference has not updated). + + + + + Gets the referenced element which is triggered by the update + + + + + This interface is used to query references to CAEXObjects like references using the ID + of objects or references using the CAEXPath of objects like RoleClass or InterfaceClass + objects. + + + + + Gets the CAEX object which owns the reference. + + + + + Gets the name of the reference attribute which contains the value of the reference. + To get or set the attribute value the + an methods can be used. + + + + + Gets the reference attribute value. + + + + + This service interface defines methods to resolve external references of an AutomationML document. + If references are resolved, queries will be able to find referenced objects. Be aware, that + the resolved documents will not be merged and the references, containing an alias will not be changed. + + + + + + Loads the external reference in a new CAEXDocument. The new CAEXDocument is a separate document and no libraries + are merged to the current document. + This Method doesn't change any references, which use the alias of this + external reference. Use the service to achieve this. + + the external reference + + If the ExternalReference doesn't have an alias, the document is not loaded. If a referenced document for the alias + already exists, + the existing document is returned. + + + + + Determines, if the provided path contains an alias and gets the resolved document + for that alias if it is already resolved. If the reference has not been resolved + it is resolved. + + The CAEX document. + The path. + + the resolved document for the alias, extracted from the path. + + + + + Gets all already resolved externals for the provided CAEXDocument containing ExternalReference objects + + The CAEX document containing ExternalRefrence objects. + + An enumeration of all resolved documents. + + + + + The Query service provides methods to query relations modeled in an AutomationML document. The AMLEngine provides + a default query service based on Linq (System.Xml.Linq). To get a better performance for queries, users can + register a Lookup service which also implements this query interface but uses dictionary based queries. + If ExternalReferences should be queried too, a service should be + registered. + + + + + + Gets all classes which have references to the provided class path. Use this method to get all classes which have + a class to class relation to the class, identified by the provided classPath. If the + is + set, only classes with the defined element name are considered. + + The CAEX document which is searched through. + The class path. + + Name of the element. Valid values are 'RoleClass', 'SystemUnitClass', 'InterfaceClass' and + 'AttributeType'. + + An enumeration of all classes which use the identified class as a base class. + + + + Gets all classes which have references to the provided CAEX object. Use this method to get all classes which have + a class to class relation to the provided CAEX object. + + The CAEX object. + An enumeration of all classes which use the provided CAEX object as a base class. + + + + Gets all classes which have references to the provided CAEX object and their referencing classes (recursive). + This method extends the and gets not only the directly + derived classes of a base class but also the derived classes of these classes and further on. + + The CAEX object. + The derived classes tree for the specified base class. + + + + Gets all classes which have references to the provided CAEX object and their referencing classes (recursive). + This method extends the and gets not only the + directly + derived classes of a base class but also the derived classes of these classes and further on. If the + is + set, only classes with the defined element name are considered. + + The CAEX document which is searched through. + The class path. + + Name of the element. Valid values are 'RoleClass', 'SystemUnitClass', 'InterfaceClass' and + 'AttributeType'. + + + + + + Gets all the elements which are descendants of the provided CAEX object and are identifiable by a CAEX path. + Elements having the same path are grouped together. + Use this method to validate the existence of ambiguous CAEXPaths. + + The CAEX object. + + Lookup table of elements which are identifiable by a CAEX path. + + + + + Gets all the elements which are descendants of the provided CAEX object and use an alias reference. + Elements referencing the same Alias are grouped together. + Use this method to validate the existence of referenced externals. If the is + set, only elements with the defined element name are considered. + + The CAEX object. + If parameter is set, only elements with the given element Name are considered. + Lookup table of elements with Alias references. The Alias part of the CAEXPath is used as a dictionary key. + + + + Gets all the elements which are descendants of the provided CAEX object and use a path reference. + Elements referencing the same path are grouped together. + Use this method to validate the existence of referenced classes. If the is + set, only elements with the defined element name are considered. + + The CAEX object. + If parameter is set, only elements with the given element Name are considered. + + Lookup table of elements with path references. The CAEXPath is used as a grouping key. + + + + + Gets all the elements which are descendants of the provided CAEX object which use identifier references. + Elements referencing the same ID are grouped together. + Use this method to validate the existence of referenced IDs. If the is + set, only elements with the defined element name are considered. + + The CAEX object. + If parameter is set, only elements with the given element Name are considered. + Lookup table of elements with ID references. The ID is used as a dictionary key. + + + + Gets all the elements which are descendants of the provided CAEX object with IDs. + Elements using the same ID are grouped together. + Use this method to validate the uniqueness of IDs. + + The CAEX object. + If an ID is specified, only elements with the defined ID are searched. + + Lookup table of elements with IDs. The ID is used as a dictionary key. + + + + + Returns all Elements which are descendants of the provided CAEX object with InternalLinks. + These elements are the owners of the InternalLink objects. + The returned collection may contain InternalElements and SystemUnitClasses as well. + + The CAEX object. + + A collection of all objects with associated InternalLinks. + + + Note the difference to the method which doesn't return the + owners of an InternalLink but the related elements. + + + + + Gets all the elements which are descendants of the provided CAEX object and use a name reference. + Elements referencing the same name are grouped together. + Use this method to validate the existence of referenced elements. + + The CAEX object. + + Lookup table of elements with name references. The name is used as a grouping key. + + + + Returns all ExternalInterfaces in the provided document or optionally + in the caexObject and descendants, which are + instances of the standard Interface class + . + + The document. + Optional parameter, defining a possible start object for the query. + + A collection of all ExternalInterface which are instances of the + standard Interface class . + + + + + Returns all ExternalInterfaces in the provided document or optionally + in the caexObject and descendants, which are + instances of the Interface class defined by the provided . + + The document. + The CAEX ClassPath of the InterfaceClassType + Optional parameter, defining a possible start object for the query. + + A collection of all ExternalInterface which are + instances of the Interface class defined by the provided . + + + + + Returns all InternalElements which are descendants of the provided CAEX object with InternalLinks. + These elements are the owners of the InternalLink objects. + + The CAEX object. + + A collection of all objects with associated InternalLinks. + + + Note the difference to the method which doesn't return the + owners of an InternalLink but the related elements. + + + + + Returns all Mirrors of the specified Attribute + + The master. + + An enumeration of mirror Attribute objects + + + + + Gets alls the elements which are descendants of the provided CAEX object + which use the provided Alias in a reference. The elements in the result collection are + references, which define the CAEX object and the attribute, containing the reference + . + If the is + set, only elements with the defined element name are considered. + + The CAEX object. + The Alias. + If parameter is set, only elements with the given element Name are considered. + a collection of element references which use the provided Alias in a reference + + + + Gets alls the elements which are descendants of the provided CAEX object + which have a reference to the provided CAEXPath. The elements in the result collection are + references, which define the CAEX object and the attribute, containing the reference + . + If the is set, only elements with the defined element name are considered. + + The CAEX object. + The path. + If parameter is set, only elements with the given element Name are considered. + a collection of element references which have a reference to the provided Path^. + + + + Gets alls the elements from the document which have a reference to the provided ID. The elements in the result + collection are + references, which define the CAEX object and the attribute, containing the reference + . + If the is + set, only elements with the defined element name are considered. + + The CAEX object. + The identifier. + If parameter is set, only elements with the given element Name are considered. + a collection of element references which have a reference to the provided ID + + + + Returns all InternalElements and SystemUnitClasses which are descendants of the provided CAEX object, + which are related to others via InternalLinks. + + The CAEX object. + A collection of related SystemUnitClass objects + + Note the difference to the method which doesn't return the + related elements but the InternalLink owners. + + + + + Returns all Mirrors of the specified ExternalInterface + + The master. + + An enumeration of mirror ExternalInterface objects + + + + + Tries to locate a CAEX object from the specified ID. + If the ID uses an alias reference and an can be located, + it is tried to resolve the external reference and to get the object from the external source. + + The document. + The identifier. + + if set to true tries to resolve an alias reference with an ExternalReferenceResolver + service. + + + The CAEX object if it is found; otherwise null. + + + + + Tries to locates a CAEX object from the specified CAEX - Path. + If the path uses an alias reference and an can be located, + it is tried to resolve the external reference and to get the object from the external source. + + The document. + The path. + + if set to true tries to resolve an alias reference with an ExternalReferenceResolver + service. + + The CAEXObject if it is found; otherwise null. + + + + Returns all ExternalInterface objects which are descendants of the provided CAEX object + and are used in relations (InternalLinks). + + The CAEX object. + A collection of related ExternalInterface objects + + + + Returns all Mirrors of the specified InternalElement + + The master. + + An enumeration of mirror InternalElements. + + + + + Gets all InternalLinks that reference the specified InternalElement or SystemUnitClass. + + The InternalElement or SystemUnitClass. + a collection of InternalLinks. + + + + Gets all InternalLinks that reference the specified ExternalInterface. + + The ExternalInterface. + a collection of InternalLinks. + + + + Determines whether the specified InternalElement is referenced by other InternalElement + objects called 'Mirrors'. + + The element. + + true if the specified element is a 'Master'-InternalElement; otherwise, false. + + + + + Determines whether the specified ExternalInterface is referenced by other ExternalInterface + objects called 'Mirrors'. + + The element. + + true if the specified element is a 'Master'-ExternalInterface; otherwise, false. + + + + + Determines whether the specified AttributeType is referenced by other AttributeType + objects called 'Mirrors'. + + The attribute type + + true if the specified element is a 'Master'-Attribute; otherwise, false. + + + + + Determines whether the specified CAEX object is referenced. + + The CAEX object. + + true if the specified CAEX object is referenced; otherwise, false. + + + + + This service interface is used to get statistic data from a CAEX document. + + + + + + Counts all objects (sum of all others with specific counts) and returns the result. + + The CAEX file. + Total number of all countable objects. + + + + Counts all Attribute objects and returns the result. + + The CAEX file. + Total number of all attributes. + + + + Counts all AttributeType objects and returns the result. + + The CAEX file. + Total number of all AttributeTypes + + + + Counts all AttributeType reference objects and returns the result. + + The CAEX file. + Total number of all AttributeTypes + + + + Counts all InterfaceClass objects and returns the result. + + The CAEX file. + Total number of all InterfaceClasses + + + + Counts all ExternalInterface objects and returns the result. + + The CAEX file. + Total number of all ExternalInterfaces + + + + Counts all InternalElement objects and returns the result. + + The CAEX file. + Total number of all InternalElements + + + + Counts all InternalLink objects and returns the result. + + The CAEX file. + Total number of all InternalLinks + + + + Counts all RoleClass objects and returns the result. + + The CAEX file. + Total number of all RoleClasses + + + + Counts all RoleClass reference objects and returns the result. + + The CAEX file. + Total number of all RoleClasses + + + + Counts all SystemUnitClass objects and returns the result. + + The CAEX file. + Total number of all SystemUnitClasses + + + + Counts all SystemUnitClass reference objects and returns the result. + + The CAEX file. + Total number of all SystemUnitClasses + + + + This interface defines methods for a unique name service. The names of CAEX objects in a sequence of + elements should all be unique. If a unique name service is registered, the AML Engine will + automatically call this service for a unique name generation whenever a new element is added + to the sequence which requires a unique name for its members. + + + + + + Determines whether the specified element has a unique CAEX name in the sequence of equal elements + of its parent. + + The element. + + true if the elements name is unique, otherwise false. + + + + + Registers a new default name for the generation of unique names for the specified element. + + The CAEX Tag name defining the elements which should get the default. + The default name + + + + Resumes activities of the unique name service. + + + + + Suspends activities of the unique name service. + + + + + Creates a unique CAEX Name for a child with the specified elementTagName in the specified sequence + + The sequence of elements. + Name of the element tag. + + a unique name using the registered default extended with an added number, representing the maximal number + + + + + Creates a unique CAEX Name for a child with the specified elementTagName in the specified sequence using the + specified + defaultName + + The sequence. + Name of the element tag. + The default name. + + a unique name using the registered default extended with an added number, representing the maximal number + + + + + This interface defines properties for a validation result, generated for a single XML element. + The validation results for XML elements of a CAEX document are generated by the + service. + + + + + Gets the element which has been validated. + + + + + Gets information about the result of a repair operation for one element. + + + + + Gets information about the validation of one element. + + + + + This service interface is defined for the validation of an AML document. Additionally the + service can also be used to repair specific invalid properties in a document and to automatically + updated references to objects if the source changes. + + + + + + Validates a name of a CAEX object. Names of CAEX classes or types (RoleClasses, InterfaceClasses, + SystemUnitClasses and AttributeTypes), Attributes, + Libraries and CAEX InstanceHierarchies shall be unique across its siblings or across all child elements of the same + CAEX parent element over its life time. + This shall assure that referencing a library, a class, a type or an attribute by its path delivers a unique result. + + The CAEX object. + The name, which should be assigned to the object. + A value tuple, returning the validation result and a message + + + + Validates the ID of a CAEX object. IDs of CAEX objects shall be unique. + + The CAEX object. + + The ID, which should be assigned to the object. If no ID is defined, the uniqueness of the already + assigned ID is evaluated. + + A value tuple, returning the validation result and a message + + + + This service interface is defined for the validation of an AML document. The type parameter + of this generic interface defined the validation result type. + + The type of the validation result + + + + + + Repairs the specified validated element. + + + The validated element. + + + true if the element has been repaired, false otherwise. + + + + + Get Validation Information for all elements in the specified document, which have validation issues. The + provides detailed information about available Repair + Options and an additional Information Text. + + The CAEX document. + if set to true generate long description for each validation issue. + + A collection of validation information for CAEX objects. One CAEX object may have multiple + occurrences with different validation issues in this collection. + + + + + Get Validation Information for all elements in the specified document, which have validation issues. The + provides detailed information about available Repair + Options and an additional Information Text. This method should be used, if the Document is loaded from an + AutomationML container. The Validation service will check validity of external references which are packed + parts of the container. + + The CAEX document. + The AutomationML container, containing the document source. + if set to true generate long description for each validation issue. + + A collection of validation information for CAEX objects. One CAEX object may have multiple + occurrences with different validation issues in this collection. + + + + + Validates the alias references and returns the validation result describing possible repair options. The + provides detailed information about available Repair + Options and an additional Information Text. + + The CAEX document. + if set to true generate long description for each validation issue. + + + + + This interface defines methods for a merge service. A merge service can merge + ExternalReferences into an AML document. + + + + + + Merges the defined ExternalReference into the provided CAEXDocument. The source is loaded from the file path in the + external reference. + + The document. + The external reference. + The merge protocol. + if set to true the service performs a schema transformation if necessary. + + true, if merge was successful + + + + + Merges the defined ExternalReference into the provided CAEXDocument. The source is loaded from the provided + external source stream. + + The document. + The external reference. + The external source stream. + The merge protocol. + if set to true the service performs a schema transformation if necessary. + + true, if merge was successful + + + + + This interface defines the service interface for a split service. A split service + is able to split one into multiple files using split points. + + + + + + Removes the split point for the provided CAEX object. + + The CAEX object. + + + + Sets the split point for the provided CAEX object. If the actual list of split points for + the same document already contains a split point which is a child of the provided CAEX object, + this existing split point is removed from the list. + + The CAEX object. + + + + Splits the specified document on all currently defined split points. The + created libraries are saved in an AutomationML document and an ExternalReference + is created, using the specified alias. All remaining references to the + external source are renamed using the provided alias. After splitting, + the document doesn't contain any SplitPoints any more. + + The document. + The alias name used to define the ExternalReference. + The file path to the saved Split parts. + The CAEX document containing the split parts. + + + + Splits the specified document on only the specified split point. The + created library is saved in an AutomationML document and an ExternalReference + is created, using the specified alias. All remaining references to the + external source are renamed using the provided alias. After splitting, + the document doesn't contain this SplitPoints any more. + + The document. + The split point defining the split content. + The alias name used to define the ExternalReference. + The file path to the saved Split parts. + The CAEX document containing the splitted part. + + + + Gets a collection of all split points for the provided document. + + The document. + all split points for this document. + + + + This interface class defines a service interface for a schema transformation service + + + + + + Method to do a schema transformation for the provided document to the defined schema. + This method can be used for upward and downward transformations. + + the document to be transformed + the target schema + the transformed document + + + + Raised from the ShemaTransform service when a transformation has ended. + + + + + Raised from the ShemaTransform service when a transformation has started. + + + + + Event arguments for schema transformation events + + + + + + Initializes a new instance of the class. + + The source document. + The target schema. + + + + Gets the source document. + + + + + Gets or sets the target document. + + + + + Gets the target schema. + + + + + The UndoRedo service supports undo and redo of all changes made to a CAEXDocument. + + + + + + Begins a new transaction. All changes, made to a CAEXDocument inside a transaction are treated as a single + operation. + + The CAEX document to which the transaction should be associated. + A friendly name for this transaction. + If the transaction started + + + + Determines, if the service can redo a command + + The document. + + true if this instance can redo the specified document; otherwise, false. + + + + + Determines, if the service can undo a command + + The document. + + true if this instance can undo the specified document; otherwise, false. + + + + + Clears the undo and redo stacks. + + The document. + + + + Ends the current transaction. + + The document. + If the transaction ended + + + + Gets the date of the most recently executed command for the specified document. + + The document. + + if set to true the date of the last undo operation is returned; + otherwise the date of the last redo operation. + + + + + + Request to not record changes of the specified document. If the recording of document changes is + paused the and methods can not be applied. + + The document. + + + + A new command is pushed on the undo stack of this service. + + The command. + + + + Redo the most recently operation, which was undone + + The document. + + + + Gets all command names of the actions in the redo stack for the provided CAEX document. + + The document. + List of command names + + + + Request to resume recording changes of the specified document. + + The document. + + + + Undo of the last operation + + The document. + + + + Gets all command names of the actions in the undo stack for the provided CAEX document. + + The document. + List of command names + + + + This class is used in queries to provide information about objects, which contain references to other objects. + + + + + + Initializes a new instance of the class. + + The element. + Name of the reference attribute. + + + + Gets the CAEX object which contains the reference. + + + + + Gets the XML element, which contains the reference. + + + + + Gets the name of the reference attribute which contains the value of the reference. + To get or set the attribute value for the attribute with this name + the + and methods can be used. + + + + + Gets the reference attribute value. + + + + + This class supports the interpretation of the queryResult table which is the result of some queries, defined in + + + + + + Gets the CAEX objects from the query result. + + The queryResult. + An enumeration of all CAEX objects in the query result. + + + + Gets all the elements which are identifiable by a CAEX path. Elements having the same path are grouped together. + Use this method to validate the existence of not unique CAEXPaths. + + The document. + + Groups of elements which are identifiable by a CAEX path. + + + + + Gets all the elements with an alias reference. Elements referencing the same Alias are grouped together. + Use this method to validate the existence of referenced externals. + + The document. + group of elements with Alias references. The Alias part of the CAEXPath is used as a group key. + + + + Gets all the elements with a path reference. Elements referencing the same path are grouped together. + Use this method to validate the existence of referenced classes. + + The document. + group of elements with path references. The CAEXPath is used as a group key. + + + + Gets all the elements with identifier references. Elements referencing the same ID are grouped together. + Use this method to validate the existence of referenced IDs. + + The document. + group of elements with ID references. The ID is used as a group key. + + + + Gets all the elements with IDs. Elements using the same ID are grouped together. + Use this method to validate the uniqueness of IDs. + + The document. + group of elements with IDs. The ID is used as a group key. + + + + Gets all the elements with a name reference. Elements referencing the same name are grouped together. + Use this method to validate the existence of referenced elements. + + The document. + group of elements with path references. The CAEXPath is used as a group key. + + + + Gets all InternalElement objects from the document which are masters. + + The document. + An enumeration of all InternalElement objects which are InternalElement master objects. + + + + Gets all InternalElement objects from the document which are mirrors. + + The document. + An enumeration of all InternalElement mirror objects. + + + + Gets the CAEX objects of the specified type from the query result. + + Type of the required CAEX object. + The queryResult. + + An enumeration of all CAEX objects of the specified type in the query result. + + + + + Gets alls the elements from the document which use the provided Alias in a reference + + The document. + The Alias. + + A collection of elements which use the provided Alias in a reference + + + + + Gets alls the elements from the document which have a reference to the provided Path. + + The document. + The path. + + a collection of elements which have a reference to the provided Path + + + + + Gets alls the elements from the document which have a reference to the provided ID. + + The document. + The identifier. + + a collection of elements which have a reference to the provided ID + + + + + Returns all InternalElements and SystemUnitClasses in the defined Document, which are related to others + via InternalLinks. + + the Document + A collection of related SystemUnitClass objects + + + + Gets the ExternalInterface objects from the query result. + + The queryResult. + An enumeration of all ExternalInterface objects in the query result. + + + + Returns all Mirrors of the specified InternalElement. + + The master. + + An enumeration of mirror InternalElements. + + + + + Gets the InternalElement objects from the query result. + + The queryResult. + An enumeration of all InternalElement objects in the query result. + + + + Gets the InternalLink objects from the query result. + + The queryResult. + An enumeration of all InternalLink objects in the query result. + + + + Gets all InternalLink referencing the provided SystemUnitClass object. + + The SystemUnitClass object. + + An enumeration of all InternalLink objects referencing the provided SystemUnitClass. + + + + + Gets all InternalLinks that reference the specified ExternalInterface. + + The ExternalInterface. + a collection of InternalLinks. + + + + Gets all the references with the provided name from the query result. + + The queryResult. + The name. + An enumeration of all references with the provided name in the query result. + + + + This class defines the default query service for a . + The query methods of this service are based on System.Xml.Linq and System.Xml.XPath. + + + + + + Gets all classes which have references to the provided class path. Use this method to get all classes which have + a class to class relation to the class, identified by the provided classPath. If the + is + set, only classes with the defined element name are considered. + + The CAEX document which is searched through. + The class path. + + Name of the element. Valid values are 'RoleClass', 'SystemUnitClass', 'InterfaceClass' and + 'AttributeType'. + + + An enumeration of all classes which use the identified class as a base class. + + + + + Gets all classes which have references to the provided CAEX object. + + The CAEX object. + + + + + Gets all classes which have references to the provided CAEX object and their referencing classes (recursive) + + The CAEX object. + + + + + Gets all classes which have references to the provided CAEX object and their referencing classes (recursive). + This method extends the and gets not only the + directly + derived classes of a base class but also the derived classes of these classes and further on. If the + is + set, only classes with the defined element name are considered. + + The CAEX document which is searched through. + The class path. + Name of the element. Valid values are 'RoleClass', 'SystemUnitClass', 'InterfaceClass' and + 'AttributeType'. + + + + + Gets all the elements which are descendants of the provided CAEX object and are identifiable by a CAEX path. + Elements having the same path are grouped together. + Use this method to validate the existence of ambiguous CAEXPaths. + + The CAEX object. + + Groups of elements which are identifiable by a CAEX path. + + + + + Gets all the elements which are descendants of the provided CAEX object and use an alias reference. + Elements referencing the same Alias are grouped together. + Use this method to validate the existence of referenced externals. + + The CAEX object. + If parameter is set, only elements with the given element Name are considered. + + group of elements with Alias references. The Alias part of the CAEXPath is used as a group key. + + + + + Gets all the elements which are descendants of the provided CAEX object and use a path reference. + Elements referencing the same path are grouped together. + Use this method to validate the existence of referenced classes. If the is + set, only elements with the defined element name are considered. + + The CAEX object. + If parameter is set, only elements with the given element Name are considered. + + Lookup table of elements with path references. The CAEXPath is used as a grouping key. + + + + + Gets all the elements which are descendants of the provided CAEX object which use identifier references. + Elements referencing the same ID are grouped together. + Use this method to validate the existence of referenced IDs. If the is + set, only elements with the defined element name are considered. + + The CAEX object. + If parameter is set, only elements with the given element Name are considered. + + Lookup table of elements with ID references. The ID is used as a dictionary key. + + + + + Gets all the elements which are descendants of the provided CAEX object with IDs. + Elements using the same ID are grouped together. + Use this method to validate the uniqueness of IDs. + + The CAEX object. + If an ID is specified, only elements with the defined ID are searched. + + Lookup table of elements with IDs. The ID is used as a group key. + + + + + Returns all Elements which are descendants of the provided CAEX object with InternalLinks. + These elements are the owners of the InternalLink objects. + The returned collection may contain InternalElements and SystemUnitClasses as well. + + The CAEX object + + A collection of all objects with associated InternalLinks. + + + Note the difference to the method which doesn't return the + owners of an InternalLink but the related elements. + + + + + Gets all the elements which are descendants of the provided CAEX object and use a name reference. + Elements referencing the same name are grouped together. + Use this method to validate the existence of referenced elements. + + The CAEX object. + + + Lookup table of elements with name references. The name is used as a grouping key. + + + + + Returns all ExternalInterfaces in the provided document or optionally + in the caexObject and descendants, which are + instances of the standard Interface class + . + + The document. + Optional parameter, defining a possible start object for the query. + + A collection of all ExternalInterface which are instances of the + standard Interface class . + + + + + Returns all ExternalInterfaces which are + instances of the Interface class defined by the provided . + + The document. + The CAEX ClassPath of the InterfaceClassType + Optional parameter. If set only descendants of this object are searched. + + A collection of all ExternalInterface which are + instances of the Interface class defined by the provided . + + + + + Returns all InternalElements which are descendants of the provided CAEX object with InternalLinks. + These elements are the owners of the InternalLink objects. + + The CAEX object. + + A collection of all objects with associated InternalLinks. + + + Note the difference to the method which doesn't return the + owners of an InternalLink but the related elements. + + + + + Returns all Mirrors of the specified Attribute + + The master. + + An enumeration of mirror Attribute objects + + + + + Gets alls the elements which are descendants of the provided CAEX object + which use the provided Alias in a reference. The elements in the result collection are + references, which define the CAEX object and the attribute, containing the reference + . + If the is + set, only elements with the defined element name are considered. + + The CAEX object. + The Alias. + If parameter is set, only elements with the given element Name are considered. + + a collection of element references which use the provided Alias in a reference + + + + + Gets alls the elements which are descendants of the provided CAEX object + which have a reference to the provided CAEXPath. + + The CAEX object. + The path. + If parameter is set, only elements with the given element Name are considered. + + a collection of elements which have a reference to the provided Path + + + + + Gets alls the elements from the document which have a reference to the provided ID. The elements in the result + collection are + references, which define the CAEX object and the attribute, containing the reference + . + If the is + set, only elements with the defined element name are considered. + + The CAEX object. + The identifier. + If parameter is set, only elements with the given element Name are considered. + + a collection of element references which have a reference to the provided ID + + + + + Returns all InternalElements and SystemUnitClasses which are descendants of the provided CAEX object, + which are related to others via InternalLinks. + + The CAEX object. + + A collection of related SystemUnitClass objects + + + Note the difference to the method which doesn't return the + related elements but the InternalLink owners. + + + + + Returns all Mirrors of the specified ExternalInterface + + The master. + + An enumeration of mirror ExternalInterface objects + + + + + + Finds the first element in the defined document, which ID is equal to the provided ID. + + The XDocument + The ID to look at + + if set to true tries to resolve an alias reference with an ExternalReferenceResolver + service. + + + the CAEXObject or null, if no element with the specified ID could be found. + + doc + + + + This method tries to find the first element in the defined document, which CAEXPath is equal to the provided path. + If the path uses an alias to reference + an object in a external document it is tried to locate an service. If + such a service + is registered, the CAEXObject is tried to be found in the resolved document. + + The XDocument + The CAEXPath to look at + if set to true [resolve alias]. + + the CAEXObject or null, if no element with the specified path could be found. + + caexDocument + + + + Returns all ExternalInterface objects which are descendants of the provided CAEX object + and are used in relations (InternalLinks). + + The CAEX object. + + A collection of related ExternalInterface objects + + + + + Returns all Mirrors of the specified InternalElement + + The master. + + An enumeration of mirror InternalElements + + + + + + Gets all InternalLink objects referencing the provided SystemUnitClass object via an external interface attached to + the SystemUnitClass. + + The SystemUnitClass object + An enumeration of InternalLinks. + + + + Gets all InternalLinks that reference the specified ExternalInterface. + + The ExternalInterface. + a collection of InternalLinks. + + + + Determines whether the specified InternalElement is referenced by other InternalElement + objects called 'Mirrors'. + + The element. + + true if the specified element is a 'Master'-InternalElement; otherwise, false. + + + + + Determines whether the specified ExternalInterface is referenced by other ExternalInterface + objects called 'Mirrors'. + + The element. + + true if the specified element is a 'Master'-ExternalInterface; otherwise, false. + + + + + Determines whether the specified attribute is a master attribute. + + The attribute. + + true if the specified attribute is master; otherwise, false. + + + + + Determines whether the specified CAEX object is referenced. + + The CAEX object. + + true if the specified CAEX object is referenced; otherwise, false. + + + + + This class provides methods to register and locate services which can support the processing + of AML documents. There can always exist only one service of the same type at one time. The + available service types are recognized to be assignable to the interface. + + + + + Initializes the class and registers the default service. + + + + + Gets the registered Query-Service. If no Query-Service is registered, a default Query-Service - which is based on + LinqToXml + - is returned. As an alternative, a Query-Service based on Dictionaries for keyed access is available. + The dictionary based service has to be registered to be used. If no such service has been registered, the default + query + service is returned. The actual registered Query-Service is located by the engine and used for all queries. + + + + + Gets the registered UndoRedo-Service. The actual registered UndoRedo-Service is located by the engine + and used to push executed commands on the undo stack. If no UndoRedo-Service is registered executed + commands are not pushed and cannot be undone. + + + + + Gets the registered UniqueName-Service.The actual registered UniqueName-Service is located by the engine + to automatically assign unique names to CAEXObjects if they are inserted into a sequence. If no + UniqueName-Service is registered no names are generated. + + + + + Gets the automatic update service. + + + + + Gets a service for the provided service interface + + + The located service. + + + + Registers a service which will be locatable + + The service type. + The service. + + + + Unregisters a service of this type which will afterwards no more locatable + + + + + + Class AMLSchemaManager extends the XMLSchemaManager. Methods which create + new objects are overridden to add required properties and values to some + objects which is not defined in the underlying CAEX schema but in the + AML standard. + + + + + Defines the resource path of the assembly + + + + + + Constructor for schema manager + + Schema stream + Namespace path + + + + The specified node is checked, and made to an AML object, if additional + properties and values are defined for this node. + + The XML node. + + + + The node gets a UUID + + + + + + Method overrides the . + The created node is made to an AML node. + + Name of the child's parent + Name of the child + + optional parameter to define, that not only required attributes, but all + possible attributes should be created. + + + The created XML node. + + + + + Sets the schema version. + + The node. + + + + Singleton Class: Schema manager for CAEX-Schema Version 2.15 used in AutomationML + + + + + Singleton private constructor reads the schema from an embedded resource stream + + + + + + + Sets the schema version. + + The node. + + + + Called for newly creates XML-Elements to make it an AutomationML object. Here you can add required properties + and dependencies which are not defined in the CAEX-Schema + + + + + + creates the singleton instance of the Schema manager + + Instance of AMLSchemaManager2_15 + + + + Gets the static default SchemaManager Instance for the CAEX-Schema Version 2.15 used in AutomationML + + + + + + SchemaLocation attribute defining noNamespaceSchemaLocation + + + + + This method will adjust the provided CAEXFile element to this schema instance. + The method can be used in a schema transformation. + + + + + + Adjusts the name of the provided XML element and the names of the elements attributes to schema. + + The element. + + + + Extracts the schema from the embedded resource and writes it to a file in the specified folder + + The folder path. + Returns the name of the created file or null, + if user has no access rights to the folder. + + + + If no schema location is set in the specified root, a new schema location with a relative path + to a schema file is defined. The schema file is extracted from an embedded resource an copied + to the specified folderPath. + + The Document root + Folder Path for schema extraction + + + + Singleton Class: Schema manager for CAEX-Schema Version 3.0 used in AutomationML + + + + + Singleton private constructor reads the schema from an embedded resource stream + + + + + + Sets the schema version. + + The node. + + + + Called for newly creates XML-Elements to make it an AutomationML object. Here you can add required properties + and dependencies which are not defined in the CAEX-Schema + + + + + + Gets the Namespace defined for CAEX Version 3.0. The Namespace name is + http://www.dke.de/CAEX. + + + + + Gets the static default SchemaManager Instance for the CAEX-Schema Version 3.0 used in AutomationML + + + + + Gets the SchemaLocation attribute + + + + + This method will adjust the provided CAEXFile element to this schema instance. + The method can be used in a schema transformation. + + + + + + This method will adjust the name of the provided element to this schema instance. + The method can be used in a schema transformation to add the + to the element's name. + + The XML element. + + + + Extracts the schema from the embedded resource and writes it to a file in the specified folder + + + Returns the name of the created file or null, if user has no access rights to the folder. + + + + If no schema location is set in the specified root, a new schema location with a relative path + to a schema file is defined. The schema file is extracted from an embedded resource an copied + to the specified folderPath. + + The Document root + Folder Path for schema extraction + + + + The Aml.Engine.Schema Namespace contains a schema parser which is used to parse the document assigned CAEX schema. + All changes made + to a document with API methods are supported by a schema specific schema manager which assures, that all insertions + and changes are + schema conform. Currently schema managers exist for CAEX version 2.15, which is + and + CAEX version 3.0, which is . The schema managers are made public to supply + methods for schema conform + CAEX document processing capabilities to users who don't like to use the API wrapper-classes and methods. + + + + + This class defined methods and properties to access schema information for a schema element. + + + + + creates an instance for the defines schema element + + The schema element. + + + + Gets the schema elements for all attributes of this instance + + + + + Gets the names for all choices defined for this instance. + + + + + Gets the maximum occurrence. + + + + + Gets the names for all optional elements defined for this instance. + + + + + Gets the names for all required elements defined for this instance. + + + + + Gets the names for all required attributes defined for this instance. + + + + + Gets the defining schema element for this instance + + + + + Gets the names of all elements in this instance which don't provide choices + + + + + Sets the schema information for this instance and the provided namespace + + + + + + Class supports the creation of schema conform xml documents for a given schema. It + can be used to create elements with all required attributes and child elements and + default values associated. Insertion of new child elements for a given parent at a + schema is supported, guaranteeing schema conform sequences and occurrences of all children. + + + + + The Dictionary of Schema Elements contains all schema elements of child's in a + parent child relationship. The Dictionary Key contains the name of the parent + (fist) and the name of the child (second) + + + + + Create an instance of the schema manager for the given schema. The Schema + is compiled and parsed + + + + + the parsed Xml-Schema + + + + + Registered schema information about an element + + The p. + The c. + The information. + + + + + Gets the Schema Namespace + + + + + Gets the SchemaLocation string + + + + + Gets the actual XSD schema set + + + + + Determines if the schema element accepts values of any type. + + The schema element. + true, if any types are accepted as values. + + + + Creates a new Xml-Element with the provided content and inserts it to the provided parent according to + this schema instance. + + The parent XML element. + The name of the child element. + Initial content of the child. + The created XML element. + + + + Creates a new Xml-Element with the provided content and inserts it behind the provided sibling according to + this schema instance. + + the sibling of the new added element. + the name of the new added element. + the content of the new added element. + The created XML element. + + + + Gets the Attribute names of the specified child element of the specified parent element. + + name of the child's parent + name of the child + optional parameter, defining of only required attributes + Enumeration of attribute names + + + + Gets the Schema Elements for all attributes of the specified child element of + the specified parent element, if the defined parent child relation exists in + the xml schema. If required is set to true, only the required + attributes are returned. The default behaviour is, that all attributes - + optional and required attributes - are returned. + + + name of the child's parent + + + name of the child + + + optional parameter, defining of only required attributes are returned, or all attributes. + + + Enumeration of attribute definitions + + + + + Gets the List of Attribute value restrictions for the attribute with the + defined name. The Attribute should be an attribute of a child defined by + the given name, which exists in the defined parent child relation defined by + the parent name. + + The name of the child's parent + the name of the child (owner of the attribute) + Name of the attribute. + + list of restrictions for an attribute value - object type has to be + interpreted by the caller + + + + + Gets the Attribute value types for the attribute with the defined name of a + child element which belongs to the given parent. If XmlTypeCode.Item is + returned, the value type is equal to the schema internal any type. + + Name of the parent. + Name of the child. + Name of the attribute. + + The type code defined for the value. + + + + + Gets the type code for the schema attribute. + + The schema attribute. + The XML type code. + + + + Determines, if a child with the specified name can be added to the parent + node. The method checks the specified minimal and maximal occurrences, defined for + this relation in the xml schema. + + The parent node + name of the child + + true, if a child with that name can be added; false otherwise + + + + + Gets the Names for all elements, which can be added to the child which is + defined with the name of it's parent and the name of itself. + + Name of the child's parent. + Name of the child + if set to true [include choice]. + Enumeration of all names of possible child elements. + + + + Gets the SchemaDefinition for all elements, which can be added to the child which is + defined with the name of it's parent and the name of itself. + + Name of the child's parent. + Name of the child + if set to true [include choice]. + Enumeration of all SchemaDefinitions of possible child elements. + + + + Gets the names of all alternative child nodes, which can be added to a parent + node with the given name. The specified child itself is included. Choices only + exists, if returns true for the defined + child name. + + Name of the child's parent + Name of the child + + Enumeration of names, representing the possible alternatives for child elements. + + + + + Creates the attribute with the provided name if this attribute is defined in this schema instance. + + The element. + Name of the attribute. + The created XML attribute. + + + + Creates a new node with the specified child name in the given xmlDocument. The + node is created with all required attributes and elements but is not inserted + in the document tree at this point. Use + for insertion or for a combined + creation and insertion. + + Name of the child's parent + Name of the child + + Optional parameter to define, that not only required attributes, but all + possible attributes should be created. + + + The created XML element. + + + The Method can be overridden by specific schema managers, to add additional + properties to the created node, which can not be derived directly from the schema. + + + + + Gets the annotation from the schema element. + + The schema element. + The annotation of the schema element, as it is defined in the schema. + + + + Gets the annotation from the schema attribute element. + + The schema attribute. + + The annotation of the schema attribute, as it is defined in the schema. + + + + + Gets the annotation from the annotated schema element. + + The schema element. + The annotation. + + + + Determines, whether the schema element representing the parent - child relation + has a content, which is restricted to a choice of elements. If onlyOne is set + to true, there can not be more than one element added to the element + + Name of the parent. + Name of the child. + if set to true [only one]. + + true if the specified parent to child relation is restricted to a choice of elements; otherwise, + false. + + + + + Determines, if the schema defines a sequence of simple elements for the provided parent child combination. + + Name of the parent. + Name of the child. + if set to true [only one]. + + true if the provided parent child combination consists of a sequence of simple elements; otherwise, + false. + + + + + Inserts an existing child node into the collection of child nodes of the + specified parent node. + + The parent node + The child node + + true, if the node has been inserted; false otherwise. + + + + + Creates a new node with the defined child name and inserts the newly created + child into the child nodes collection of the specified parent. Optional, it + can be specified, if the new node should get all attributes, which are defined + in the schema, or only those attributes which are required (default behaviour). + The Method can be overridden by specific schema managers, to add additional + properties to the created node, which can not be derived directly from the schema. + + The parent node for insertion. + Name of the child + + optional parameter to specify, that all attributes should be added + automatically to the created node. + + + the created and inserted node. + + + + + Determines, whether the occurrence of a child with that name under a parent + with that name is part of a choice (means that there are other exclusive + alternatives for child nodes). If not, the child is defined in a sequence. For + choices, the names of alternatives are available with . + + Name of the child's parent + Name of the child + + true if the defining collection is a choice; otherwise the collection + of child's is defined as a sequence. + + + + + Determines if the schema defines a choice of only one element for the provided schema element. + + The schema element. + + true if the specified schema element defines a choice of only one element; otherwise, false. + + + + + Determines, if the Attribute with the provided is defined for this element + + Name of the parent. + Name of the child. + Name of the attribute. + + true if the attribute name is an allowed attribute for the child; otherwise, false. + + + + + Determines, if the parent is allowed to contain a child with the provided name according to this schema instance. + + The parent. + Name of the child. + + true if the parent can contain a child element with that name; otherwise, false. + + + + + Determines, if the Attribute with the provided name is a required attribute when added to the parent child + combination. + + Name of the parent. + Name of the child. + Name of the attribute. + + true if the attribute is a required attribute in this parent child combination; otherwise, false. + + + + + Returned the maximal occurrence for child nodes with the specified name under a + parent node with the specified name. For unbounded occurrences, the returned + value is . If the occurrence is 0, the + existence of a child with that name under a parent with that name is not allowed. + + Name of the child's parent + Name of the child + The maximal occurrence of children with the defined name. + + + + The minimal occurrence for child node with the defined name under a parent node + with the defined name. If 0 is returned, the existence of a child node with + that node is optional. If 1 is returned, the existence is mandatory. + + Name of the child's parent + Name of the child + + 0 for optional occurrence or 1 for mandatory occurrence. A value + of -1 indicates that no occurrences are allowed at all. + + + + + Gets the schema information for the provided parent child combination. + + name of the parent element + name of the child element + returns null, if no schema information exists for the parent child combination. + + + + This method is a utility method for insert operations. The method will return + the node which should be used as the sibling before a newly added child with + the defined name. The Insertion has to be done after the returned node or + prepended to the parent itself, if no node null is returned. + + The parent node + Name of the child. + + The child node of the parent, which should be the sibling before a newly added + node, or null, if no node exists. + + + + + Validates a document if it is conform to this schema instance. + + The source. + The messages. + true, if the validation was without errors; false, otherwise. + + + + Returns the type code for a value that may be associated with the defined child. + + Name of the parent + Name of the child + the XML type code. + + + + If no schema location is set in the specified root, a new schema location with a relative path + to a schema file is defined. The schema file is extracted from an embedded resource an copied + to the specified folderPath. + + The Document root + Folder Path for schema extraction + + + + Parsing the schema to populate the elements dictionary. + + + + + + + + + This static class provides extension methods for the interpretation of . + + + + + Gets the CLR-Type for the provided typeCode + + Source + CLR-Type + + + + Gets the from the W3C XSD schema type string. + + W3C XSD schema type, defined as xs:..., like xs:double and others. + + the XmlTypeCode. If the schemaType is not recognized, + is returned. + + + + + Returns the default value for an XmlTypeCode. The data type of the returned object is the associated CLR type + of the provided type code. The CLR type is available with the method. + + the type code + The default CLR type value, according to the provided type code. + + + + Returns the default value for XmlTypeCode + + Source + The default value, according to the provided type code. + + + + Converts the default value for the specified typeCode to a valid XML value string + + The + The default XML value, according to the provided type code. + + + + + Interface for a XDocument Wrapper + + + + + Gets the XDocument. + + + + + Saves the document to stream. + + if set to true pretty print for the document is enabled. + The document stream. + + + + XML related properties of a wrapped instance + + + + + Gets the XDocument containing the XML node of this object. + If the object has not been inserted into a document, the XDocument is null. + Direct manipulations of the XML document are not monitored by the AML engine. + + + + + Determines, if this instance is wrapped around an existing XML node + + + + + Get the XML node of this instance. Direct manipulations of the XML node are not monitored by the AML engine. + + + + + Gets the XML parent node of this instance. Direct manipulations of the XML node are not monitored by the AML + engine. + + + + + Gets the Schema Tag name of this instance. + + + + + This class is an abstract base class for the wrapping of an XDocument, to provide additional schema specific + document processing utilities. This class is used by the AMLEngine to provide a CAEXDocument. Other XML Engines, + supporting different schemas (PLCopen, COLLADA) could also use this base class. + + + + + + Initializes a new instance of the class. + + The x document. + + + + Gets the underlying XDocument + + + + + Gets the XDocument wrapper which contains the specified XML node. If the node is not contained in an XML document, + no document is returned. + + The XML node. + The XDocument wrapper, containing the XML node. + XML node is null. + + + + Gets the XDocument wrapper which contains the specified object. If the object has not been inserted into a + document, + no document is returned. + + The XNodeWrapper object. + The XDocument wrapper . + + + + Saves the document to the specified file path. + + The file path to save the document to. + Set to true, if pretty printing is desired. + filename + + + + Saves the document to the specified file path. + + Set to true, if pretty printing is desired + The stream, containing the document content. + + + + Gets the correct XName for the provided element name (Tag name).The XName contains a namespace, + if the assigned schema requires a namespace. If no namespace is defined for the assigned schema, + no namespace is added to the XName. The XName has to be used for all Xml.Linq queries, + used to access objects with the element name. + + A Tag name which should be transformed to an XName. + The generated XName. + tag name + + + + Unloads this document instance. + + + This method can be used to unload this instance of the CAEXDocument and remove + it from all current tables of all registered services. The AMLEngine manages weak + references to each created CAEXDocument instance, so explicit unload is + normally not required. + + + + + Returns the CAEX ID of a the XElement if such an Attribute exists. + + The XElement. + The Name or string.empty if the ID-Attribute is missing + + + + Returns the CAEX Name of a the XElement if such an Attribute exists. + + The XElement. + The Name or string.empty if the Name-Attribute is missing + + + + Returns the CAEX Name of a parent XElement if such an Attribute exists. + + The XElement. + + The Name or string.empty if the Parent or the Name-Attribute is missing + + + + + Returns the CAEX path of this object. Examples: "plant/unit/tank" or GUID:interface. If + the full hierarchical Path is required, use the method HierarchyPath + instead which delivers the full node path. + + The element. + + For classes, it returns the XML full Node Path. For Interface Instances, it + returns GUID:InterfaceName if your document is based on CAEX 2.15. For CAEX 3.0 new + Path specifications exist concerning Instances (only the ID is used) and Attributes. + Attribute Path are combined using the parents CAEX Path followed by the Attribute Name. + + + + + Gets the value of the element with the defined name as a DateTime Value + + The owner. + Name of the element. + + DateTime value of the element + + owner + + + + Getting the full path from document root to the specified XmlNode to build a CAEXPath. + As name of an XmlNode is the value of the contained attribute "name" taken. + Hierarchies are separated via the path separator (slash '/'). + The name of the document root element CAEXFile is not contained in the path. + + The XmlNode to get the full path for + The full path from the document root element to the given XmlNode. + + + + Getting the full path from document root to the specified XmlNode. + As name of an XmlNode is the value of the contained attribute "name" taken. + Hierarchies are separated via the path separator (slash '/'). + The name of the document root element CAEXFile is not contained in the path. + + The XmlNode to get the full path for + The full path from the document root element to the given XmlNode. + + + + Determines whether Attribute is an inheritance attribute. + + The XML attribute. + + true if the attribute is an inheritance attribute; otherwise, false. + + + + + Getting all CAEX path parts from document root to the specified XmlNode. + As name of an XmlNode is the value of the contained attribute "name" taken. + Hierarchies are separated via the path separator (slash '/'). + The name of the document root element CAEXFile is not contained in the path. + + The XmlNode to get the full path for + if set to true separators are added to the path part names. + + The full path from the document root element to the given XmlNode stored in an array of path part names. + The path contains values of the "name" attribute of the XmlNodes. + + xmlNode + + + + Getting all CAEX path parts from document root to the specified XmlNode. + As name of an XmlNode is the value of the contained attribute "name" taken. + Hierarchies are separated via the path separator (slash '/'). + The name of the document root element CAEXFile is not contained in the path. + + The XmlNode to get the full path for + if set to true separators are added to the path part names. + + The full path from the document root element to the given XmlNode stored in an array of path part names. + The path contains values of the "name" attribute of the XmlNodes. + + xmlNode + + + + Getting the path from the defined root to the specified XmlNode. As name of an XmlNode is the value of the + contained attribute "name" taken. + Hierarchies are separated via the path separator (slash '/'). + The name of the root element is not contained in the path. + + The XmlNode to get the full path for + The root. + + The full path from the root element to the given XmlNode. The path contains of values of the "name" attribute of + the XmlNodes. If no + such attribute exists in the current node, the xml tag name is used instead. + + xmlNode + + + + Gets the XML node with the provided elementName from the specified owner and returns its value + + The owner. + Name of the element. + The node value as a string. + owner + + + + Gets the value of a CAEX 'Value' element. + + The XML node. + The value of the CAEX 'Value' element. + + + + Gets the MasterID of a potential mirror ExternalInterface + + The XML node. + The ID of the master ExternalInterface. + + + + Get the IDReferences if this is an InterfaceIDMapping object. + + The XML node. + + Enumeration of the ID-references in the InterfaceIDMapping. The returned value tuple contains the + name of the attribute and the attribute value. + + + + + Get the IDReferences if this is an InternalLink. + + The XML node. + + Enumeration of the ID-references in an InternalLink. The returned value tuple contains the + name of the attribute and the attribute value. + + + + + Gets the MasterID of a potential mirror InternalElement. + + The XML node. + + The ID of the master InternalElement. It is not checked, if this is a GUID. + + + + + Gets the InternalElementID of a potential mirror Attribute. + + The XML node. + + The ID of the master InternalElement to which the Attribute belongs. It is not checked, if this is a GUID. + + + + + Get the ID of the Master InterfaceClass if this is a Mirror. + + The element. + System.String. + + + + Get the ID of the Master InternalElement if this is a Mirror. + + The element. + System.String. + + + + Get the RoleReference if this XML node is a RoleRequirement or a SupportedRoleClass + + The XML node. + The value of the role reference attribute of the XML node + + + + Sets a date time value for a child-element with the defined name of the defined owner + + Owner of the element with the defined name + Name of the child element + DateTime value + owner + is not a valid element + + + + Sets a string value for a child-element with the defined name of the defined owner + + Owner of the element with the defined name + Name of the child element + string value + + + + Get the SystemUnitClass reference if this is an InternalElement + . + + The element. + System.String. + + + + Gets the base class for the specified CAEX class, if a class to class relation exists and can + be resolved in the current document. + + The CAEX class. + The base class for the specified CAEX class. + + + + Gets the reference (Inheritance) hierarchy including the provided CAEX class in an ordered sequence of ancestors. + + The CAEX class XML node. + + Enumeration of base classes. + + + + + Determines whether the specified elementWithDerivedAttributes has a child Element, which has the same ElementName + and AttributeValue for the named + Attribute as the specified elementWithAttribute + + The element With Attribute which is tested for derivations. + The element With Derived Attributes. + Name of the element. + Name of the attribute. + true if the specified attribute element is derived; otherwise, false. + + + + Determines whether the specified element is a descendant of the ancestor. + + The element. + The tested ancestor. + + true if the specified element is a descendant of the ancestor; otherwise, false. + + + + + Determines whether this instance is overridden. This can occur in inheritance relations and facet relations. + In a facet relation the faceted element has to be detected. In an inheritance relation, the inheritance + hierarchy has to be detected. + + The XML node. + + true if the specified node is overridden; otherwise, false. + + + + + Determines whether this XML node represents an overridden CAEX object and returns the overridden elements. + This can occur in inheritance relations and facet relations. + In a facet relation the faceted element has to be detected. In an inheritance relation, the inheritance + hierarchy has to be detected. + + The XML node. + The attribute value, used to define the overridden object. + + the collection of overridden elements if the specified node is overridden; otherwise, + Enumerable.Empty. + + + + + Gets the name of the path, defining a role reference for the defined mapping element. + + The mapping element. + The path to the RoleClass. + + This method is designed for CAEX 2.15 where no direct association between + a RoleClass and a mapping element exists. + + + + + + Gets the CAEX path of a referenced SystemUnitClass for a Mapping element + + The mapping element. + The path to the SystemUnitClass. + + + + Gets the referenced element of this mapping Attribute. The result is an Attribute for Attribute-Mappings or an + Interface for + Interface-Mappings. If no reference is found, the result is null. + + The mapping. + The referenced element. + + + + Gets the RoleRequirement element to which this mapping attribute is assigned. + + The mapping. + The RoleRequirement element or null, if it doesn't exist. + + + + Gets the RoleReference for a mapping. + + The mapping attribute. + XElement. + + + + Gets the SystemUnitClass element to which this mapping attribute is assigned. + + The mapping. + The SystemUnitClass element or null, if it doesn't exist. + + + + Gets the SystemUnitClass-Reference for a mapping. + + The mapping attribute. + XElement. + + + + Class, defining extension methods, related to the interpretation of the Schema version of a CAEX file. + + + + + Gets the correct CAEX schema version for the specified XML node + + The XML node. + The CAEX schema version. + + + + Gets the names of the Attributes of the provided node, which can contain an ID reference. + + The XML node. + Array of attribute names of the ID-reference attributes. + + + + Determines, if the XML-Element is an Additional Information element + + XML-Element from a CAEX-Document + true, if the XML-Element is an Additional Information element + + + + Determines, if the XML-Element is an Attribute + + XML-Element from a CAEX-Document + true, if the XML-Element is an Attribute + + + + Determines, if the XML-Element is an Attribute (Basic or Type) + + XML-Element from a CAEX-Document + true, if the XML-Element is an Attribute + + + + Determines whether the specified element is a mirror of an Attribute. + + The element. + + true if the specified element is a mirror of an Attribute; otherwise, false. + + + + + Determines, if the XML-Element is an AttributeNameMapping + + XML-Element from a CAEX-Document + true, if the XML-Element is an AttributeNameMapping + + + + Determines, if the XML-Element is an AttributeType + + XML-Element from a CAEX-Document + true, if the XML-Element is an AttributeType + + + + Determines whether the Element is a CAEXClass: RoleClass, SystemUnitClass + or InterfaceClass + + The element. + if library types should be handled as classes + + true if the specified element is a CAEXClass; otherwise, false. + + + + + Determines whether the XML node is an element with an ID. + + The node. + + true if the specified node is an element with identifier reference; otherwise, false. + + + + + Determines whether the XML node is an element with an ID reference. + + The node. + + true if the specified node is an element with identifier reference; otherwise, false. + + + + + Determines whether the XML node is an element with an ID reference to the provided ID + + The node. + The ID + + true if the specified node is an element with identifier reference; otherwise, false. + + + + + Determines whether the XML node is an element which references another element using the name of the element + + The node. + + true if the specified node is an element which references another element using the name of the element; + otherwise, false. + + + + + Determines whether the XML node is an element with a path reference + + The node. + + true if the specified node is an element with path reference; otherwise, false. + + + + + Determines whether the XML node is an element with a path reference to the provided path + + The node. + The Path + + true if the specified node is an element with this path reference; otherwise, false. + + + + + Determines whether the specified element is an ExternalInterface. + + The element. + + true if the specified element is an ExternalInterface; otherwise, false. + + + + + Determines whether the specified element is an ExternalReference element + + The element. + + true if the specified element is an ExternalReference; otherwise, false. + + + + + Determines whether this instance is an AMLFacet. + + The node. + + true if the specified node is a facet; otherwise, false. + + + + + Determines whether the specified element is a mirror of an ExternalInterface. + + The element. + + true if the specified element is a mirror of an ExternalInterface; otherwise, false. + + + + + Determines whether the specified element is a mirror of an InternalElement. + + The element. + + true if the specified element is a mirror of an InternalElement; otherwise, false. + + + + + Determines whether the specified element is an InterfaceClass. + + The XML node. + + true if the specified element is an InterfaceClass; otherwise, false. + + + + + Determines whether the specified element is an InterfaceClass. + + The XML node. + + true if the specified element is an InstanceHierarchy; otherwise, false. + + + + + Determines whether the specified element is an InterfaceIDMapping. + + The XML node. + + true if the specified element is an InterfaceIDMapping; otherwise, false. + + + + + Determines whether the specified element is an InterfaceNameMapping. + + The XML node. + + true if the specified element is an InterfaceNameMapping; otherwise, false. + + + + + Determines whether the specified element is an InternalElement. + + The XML node. + + true if the specified element is an InternalElement; otherwise, false. + + + + + Determines whether the specified element is an AttributeTypeLib. + + The XML node. + + true if the specified element is an AttributeTypeLibrary; otherwise, false. + + + + + Determines whether the specified element is a SystemUnitClassLib. + + The XML node. + + true if the specified element is an SystemUnitClassLib; otherwise, false. + + + + + Determines whether the specified element is a RoleClassLib. + + The XML node. + + true if the specified element is a RoleClassLib; otherwise, false. + + + + + Determines whether the specified element is a InterfaceClassLib. + + The XML node. + + true if the specified element is a InterfaceClassLib; otherwise, false. + + + + + Determines whether the specified element is an InternalLink. + + The XML node. + + true if the specified element is an InternalLink; otherwise, false. + + + + + Determines whether the specified XML object is an InternalLink attribute. + + The XML attribute object. + + true if the specified XML object is an InternalLink attribute; otherwise, false. + + + + + Determines whether the specified element is a CAEX Library. + + The XML node. + + true if the specified element is a Library; otherwise, false. + + + + + Determines whether the specified element defines a Mapping which means, the element is + either a , a or + a . + + The XML node. + + true if the specified element defines a Mapping; otherwise, false. + + + + + Determines whether the Element can define a mirror object. + + The element. + + true if whether the Element can define a mirror object; otherwise, false. + + + + + Determines whether the specified element is a RoleClass . + + The XML node. + + true if the specified element is a RoleClass; otherwise, false. + + + + + Determines whether the specified element is a RoleRequirement . + + The XML node. + + true if the specified element is a RoleRequirement; otherwise, false. + + + + + Determines whether the specified element is a SupportedRoleClass . + + The XML node. + + true if the specified element is a SupportedRoleClass; otherwise, false. + + + + + Determines whether the specified element is a SystemUnitClass . + + The XML node. + + true if the specified element is a SystemUnitClass; otherwise, false. + + + + + Gets the names of the Attributes of the provided node, which can contain an ID reference. + + The XML node. + An array of attribute names, which are used to reference objects using the objects name. + + + + Gets the name of the path reference attribute of the specified element. + + The XML node. + + For an the result is . + For all other classes, the result is . + + + + + Gets the names of the Attributes of the provided XML node, which can contain a path reference. + + The XML node. + An array of attribute names, which can contain a path reference. + + + + Gets the element which is referenced by the specified attribute. + + The attribute, defining the reference. + The referenced element + + + + Gets the schema manager, used to manage any modifications of the provided XML node. + + The XML node. + The schema manager, used to manage any modifications of the provided XML node. + + + + Gets the correct XName for the provided CAEX Tag name. The XName may contain a namespace, according to + the default namespace of the provided node. + + A Node used to get the namespace information + A CAEX Tag name which should be transformed to an XName. + The XName build from the provided tag name. + + + + This class defines extension methods for XElements. These methods are useful, if any XElement should be queried + for some CAEX properties without using a CAEXWrapper for this element. + + + + + Wraps the provided Xml-Element into an element specific CAEXWrapper object. + + the Xml-Element + The specific CAEXWrapper object if the element is a CAEX element; otherwise null + + + + Gets the elements with the specified CAEX element name (Tag-name) from the provided caexClass and all its + base classes in the inheritance tree. + If the EqualityComparer is specified, only those elements of a base class are added which are unequal to any + element in the derived class. The returned collection contains also those inherited elements, which are + marked as deleted. Deletion is possible, when an element is overridden. + + + a derived class + The CAEX element name (Tag-name) + Equality comparer to exclude equal elements of a base class + All inherited elements including those, which are marked as deleted. + + + + Gets the elements with the specified CAEX element name (Tag-name) from the provided caexClass and all its + base classes in the inheritance tree. + If the EqualityComparer is specified, only those elements of a base class are added which are unequal to any + element in the derived class. The returned collection contains only inherited elements, which are + not marked as deleted. Deletion is possible, when an element is overridden. + + + a derived class + The CAEX element name (Tag-name) + Equality comparer to exclude equal elements of a base class + All inherited elements not including those, which are marked as deleted. + + + + Gets the first element of the provided parent + + The parent. + + First element if one exists; otherwise null. + + + + + Gets the first element of the provided parent with the provided local name + + The parent. + The local name of the child element. + + First element if one exists; otherwise null. + + + + + Tries to get the element from the owner with the specified element name. If no such element + could be found it is appended as a new child with the provided content. + + The owner of the element. + The element name. + Some content, which is added to the element, if it is created. + if true, element has been deleted when content is null and element is not required. + + the element + + owner + + + + Gets the Interface from the provided InternalLink Attribute value. + + The internal link attribute. + + The XML node of the ExternalInterface. + + internalLinkAttribute + + + + Gets the Master Attribute from the provided RefAttributeType value. + + The attribute reference. + + The XML node of the Attribute. + + refAttribute + + + + Gets the last child element of the defined parent + + The parent. + + the last child or null, if no child exists. + + + + + Gets the last child element of the defined parent with the defined local name + + The parent. + the name of the child node to look at. + + the last child or null, if no child exists with this name. + + + + diff --git a/SOURCE/Application/Plugins/ModellingWizard/Gsd2Aml.Lib.dll b/SOURCE/Application/Plugins/ModellingWizard/Gsd2Aml.Lib.dll new file mode 100644 index 0000000..9417f8d Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/Gsd2Aml.Lib.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/Gsd2Aml.Lib.xml b/SOURCE/Application/Plugins/ModellingWizard/Gsd2Aml.Lib.xml new file mode 100644 index 0000000..7b943b9 --- /dev/null +++ b/SOURCE/Application/Plugins/ModellingWizard/Gsd2Aml.Lib.xml @@ -0,0 +1,3717 @@ + + + + Gsd2Aml.Lib + + + + + Interface to provide logging information of the conversion process. + + + + + Log method which puts a message with the specific log level into the log file. + + The level of the log message. + The message of the log. + + + + Enum which contains all possible log levels. + + + + + Sets the log level to info. + + + + + Sets the log level to warning. + + + + + Sets the log level to error. + + + + + Sets the log level to trace. + + + + + Sets the log level to debug. + + + + + Sets the log level to fatal. + + + + + Sets the log level to off. + + + + + The converter class which contains the logic to convert a GSD formatted file to an AML file. + + + + + Converts a GSDML input file and returns the resulting AML file as a string. + + The path to the input file. + A flag which indicates if the GSD should be checked for correctness. + The AML object serialized to a XML string. + + + + Converts a GSDML input file and creates the .amlx package. + + The path to the input file. + The path to the output file. + A flag which indicates if the file should be overwritten if it exists. + A flag which indicates if the GSD should be checked for correctness. + + + + Deserializes the translation table and the input file. Then it checks the input file for validity. + After that it starts the conversion process. + + The path to the input file. + The path to the output file. + A flag which indicates if the GSDML should be checked for correctness. + + + + Starts the real conversion process. + It iterates over the GSDML properties and translates it to AML. + Then it recursively starts a new Handle call with the translated property. + + The type of the current AML head object. + The current AML head object. + The current GSD head object as a XmlElement. + + + + The actual translation of the GSD object to an AML object. + + The type of the AML head object. + The AML head object in which the translation object will be set. + The translation rule which will be used to translate the GSD object to an AML object. + The new AML head object. + + + + This function iterates over all sub properties of the replacement to translate these and set them into the replacementInstance. + + The replacement rule. + The replacement instance in which the sub properties will be set. + A flag which indicates whether the current instance is an array or not. + Dictionary which contains information about the references. + + + + This function handles a new Rule call in the translation table. + It takes the inner text of the rule node and translate it with the corresponding rule. + + The rule node which contains the information which rule should be applied. + The instance in which the rule instance will be set/added. + + + + Translates the sub properties of a translation rule. + + The XmlNode replacement rule. + Dictionary which contains information about the references of a rule. + The property info which describes the translationInstance and the translation instance in which the sub property instances will be set. + + + + This function sets the attributes of a replacement node to the translation instance. + This function assumes that all attributes are of type string. + If not, then please contact the developers . + + The replacement node of the translation table which will be used to set those attributes to the instance. + The instance in which the attributes will be set. + Dictionary which contains information about the references of a rule. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Compress an AML file and its resources to an .amlx package using the AML.Engine. + + + + + Creates a zip archive from a directory and the relevant GSD resources. + + The path to the AML file which will be zipped. + The directory you want to store the archive in including the name of the archive.amlx. + An array of paths to the resources to be part of the .amlx package. + A flag which indicates if the file should be overwritten if it exists. + + + + + + + Creates a zip archive from a directory. + + The directory you want to be zipped. + The directory you want to store the zip archive in. + An array of paths to the resources to be part of the .amlx package. + A flag which indicates if the file should be overwritten if it exists. + + + + + + + Creates a new directory in the temporary folder of Windows. + + The name of the folder to be created. + The path to the directory as a string. + + + + + + + + + Moves a file from one directory to another. + + The source path. + The destination path. + + + + + + + + + Deletes a folder if it exists. + + The destination path. + + + + + + + + + Creates a directory path. + + The directory path. + Path to the created directory. + + + + + + + + + Contains utility functions which provide helping functionalities for the conversion process. + + + + + Gets the property information (PropertyInfo, Type, bool isArray) of a string. + The string indicates a way through the properties. The different "stations" are separated by dots. + + The by dots separated string. + The property info, the type of the found property and if the type is an array. + + + + Recursively searches a class to find a property by string. + + The type object, which represents the currently iterated class. + The name of the property being searched for. + The PropertyInfo object if the property was found or null if it does not exist. + + + + Checks if a given type is a simple/primitive type. + + The type which should be checked. + A boolean which indicates if the given type is a simple type. + + + + This function gets the relevant information (replacement, references) from a translation rule. + + The translation rule that is parsed. + The replacement node and a list which contains all references. + + + + Parses the references given in the translation table and saves them to a dictionary. + + The references in a list of XmlNodes. + Optional parameter which is a GSD tag and will be used instead of the iterated one. + A dictionary which contains for each reference identifier the correct value. + + + + Parse real references (TextRef, GraphicRef) and find the correct value. + + Path to the real GSD element. + The reference contains the reference. + The referenceIdName contains the name of the reference id. + The realIdName contains the name of the real id. + The realElementname contains the name of the real element tag. + The realValueName contains the name of the real value attribute. + Optional parameter which is a GSD tag and will be used instead of the iterated one. + The value of the real reference. + + + + Iterates through the GSD document with the given path. + + The by dots seperated path through the GSD docment. + Optional parameter. If it is set the iteration starts from there. + The last XmlNode of the path. + + + + This method checks the GSD file against the the xsd-files and validates it. + + The path to the GSD file. + + + + This method loads an XML file to an XmlDocument and returns it. + + The file path as a string. + The XmlDocument object which contains the deserialized form of the XML file. + + + + This method loads the translation table. There are two different cases for loading the table. + The translation table is in the installation folder located and named like 'gsd2aml.xml'. + If the translation table is not in the installation folder, it will be loaded from resources. + + Returns the translation table XmlDocument object. + + + + This function generates the correct output file name for the string conversion method. + + The path to the input file. + The correctly generated output file name. + + + + This function creates the an instance out of a type and a flag whether an array needs to be created or not. + + The type object which describes the type of the instance. + Flag which indicates whether an array is needed. + An instance of the type which the propertyType parameter describes. If an array is needed, it creates a list. + + + diff --git a/SOURCE/Application/Plugins/ModellingWizard/Microsoft.CSharp.dll b/SOURCE/Application/Plugins/ModellingWizard/Microsoft.CSharp.dll new file mode 100644 index 0000000..54c96cf Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/Microsoft.CSharp.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/ModellingWizard.dll b/SOURCE/Application/Plugins/ModellingWizard/ModellingWizard.dll new file mode 100644 index 0000000..23adf88 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/ModellingWizard.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/ModellingWizard.dll.config b/SOURCE/Application/Plugins/ModellingWizard/ModellingWizard.dll.config new file mode 100644 index 0000000..af99b7c --- /dev/null +++ b/SOURCE/Application/Plugins/ModellingWizard/ModellingWizard.dll.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/SOURCE/Application/Plugins/ModellingWizard/PresentationCore.dll b/SOURCE/Application/Plugins/ModellingWizard/PresentationCore.dll new file mode 100644 index 0000000..e8f831f Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/PresentationCore.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/PresentationFramework.dll b/SOURCE/Application/Plugins/ModellingWizard/PresentationFramework.dll new file mode 100644 index 0000000..dfd2cd3 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/PresentationFramework.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.ComponentModel.Composition.dll b/SOURCE/Application/Plugins/ModellingWizard/System.ComponentModel.Composition.dll new file mode 100644 index 0000000..ec9d63a Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.ComponentModel.Composition.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Data.DataSetExtensions.dll b/SOURCE/Application/Plugins/ModellingWizard/System.Data.DataSetExtensions.dll new file mode 100644 index 0000000..f466f3f Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.Data.DataSetExtensions.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Data.dll b/SOURCE/Application/Plugins/ModellingWizard/System.Data.dll new file mode 100644 index 0000000..5062a83 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.Data.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Drawing.dll b/SOURCE/Application/Plugins/ModellingWizard/System.Drawing.dll new file mode 100644 index 0000000..55964fc Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.Drawing.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.IO.FileSystem.AccessControl.dll b/SOURCE/Application/Plugins/ModellingWizard/System.IO.FileSystem.AccessControl.dll new file mode 100644 index 0000000..8cc5cb9 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.IO.FileSystem.AccessControl.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.IO.FileSystem.AccessControl.xml b/SOURCE/Application/Plugins/ModellingWizard/System.IO.FileSystem.AccessControl.xml new file mode 100644 index 0000000..c610059 --- /dev/null +++ b/SOURCE/Application/Plugins/ModellingWizard/System.IO.FileSystem.AccessControl.xml @@ -0,0 +1,590 @@ + + + + System.IO.FileSystem.AccessControl + + + + Provides Windows-specific static extension methods for manipulating Access Control List (ACL) security attributes for files and directories. + + + Creates a new directory, ensuring it is created with the specified directory security. If the directory already exists, nothing is done. + A directory that does not exist yet that will be created by the method. + The access control and audit security for the directory. + + or is . + Could not find a part of the path. + Access to the path is denied. + + + Creates a new file stream, ensuring it is created with the specified properties and security settings. + A file that does not exist yet that will be created by the method. + One of the enumeration values that specifies how the operating system should open a file. + One of the enumeration values that defines the access rights to use when creating access and audit rules. + One of the enumeration values for controlling the kind of access other file stream objects can have to the same file. + The number of bytes buffered for reads and writes to the file. + One of the enumeration values that describes how to create or overwrite the file. + An object that determines the access control and audit security for the file. + The and combination is invalid. + + or is . + + or are out of their legal enum range. + +-or- + + is not a positive number. + Could not find a part of the path. + An I/O error occurred. + Access to the path is denied. + A file stream for the newly created file. + + + Creates a directory and returns it, ensuring it is created with the specified directory security. If the directory already exists, the existing directory is returned. + An object that determines the access control and audit security for the directory. + The path of the directory to create. + + or is . + + is empty. + Could not find a part of the path. + Access to the path is denied. + A directory information object representing either a created directory with the provided security properties, or the existing directory. + + + Returns the security information of a directory. + The existing directory from which to obtain the security information. + The security descriptors of all the access control sections of the directory. + + + Returns the security information of a directory. + An existing directory from which to obtain the security information. + The desired access control sections to retrieve. + The security descriptors of the specified access control sections of the directory. + + + Returns the security information of a file. + The file from which to obtain the security information. + The security descriptors of all the access control sections of the file. + + + Returns the security information of a file. + An existing file from which to obtain the security information. + The desired access control sections to retrieve from the file. + The security descriptors of the specified access control sections of the file. + + + Returns the security information of a file. + An existing file from which to obtain the security information. + + is . + The file stream is closed. + The security descriptors of all the access control sections of the file. + + + Changes the security attributes of an existing directory. + An existing directory. + The security information to apply to the directory. + + is . + + + Changes the security attributes of an existing file. + An existing file. + The security information to apply to the file. + + is . + + + Changes the security attributes of an existing file. + An existing file. + The security information to apply to the file. + + or is . + The file stream is closed. + + + Provides the ability to control access to directory objects without direct manipulation of Access Control Lists (ACLs). + + + Initializes a new instance of the class. + + + Initializes a new instance of the class with the specified security descriptor. + The security descriptor to be associated with the new object. + + + Initializes a new instance of the class with the specified values. + The identity to which the access rule applies. It must be an object that can be cast as a . + The access mask of this rule. The access mask is a 32-bit collection of anonymous bits, the meaning of which is defined by the individual integrators. + true if this rule is inherited from a parent container. + Specifies the inheritance properties of the access rule. + Specifies whether inherited access rules are automatically propagated. The propagation flags are ignored if is set to . + Specifies the valid access control type. + The identity of the class of objects to which the new access rule applies. + The identity of the class of child objects which can inherit the new access rule. + The object that this method creates. + + + Adds the specified access rule to the Discretionary Access Control List (DACL) associated with this object. + The access rule to add. + + + Adds the specified audit rule to the System Access Control List (SACL) associated with this object. + The audit rule to add. + + + Initializes a new instance of the class with the specified values. + The identity to which the audit rule applies. It must be an object that can be cast as a . + The access mask of this rule. The access mask is a 32-bit collection of anonymous bits, the meaning of which is defined by the individual integrators. + + if this rule is inherited from a parent container. + Specifies the inheritance properties of the audit rule. + Specifies whether inherited audit rules are automatically propagated. The propagation flags are ignored if is set to . + Specifies the conditions for which the rule is audited. + The identity of the class of objects to which the new audit rule applies. + The identity of the class of child objects which can inherit the new audit rule. + The object that this method creates. + + + Gets a collection of the access rules associated with the specified security identifier. + + to include access rules explicitly set for the object. + + to include inherited access rules. + The security identifier for which to retrieve access rules. This must be an object that can be cast as a object. + The collection of access rules associated with the specified object. + + + Gets a collection of the audit rules associated with the specified security identifier. + + to include audit rules explicitly set for the object. + + to include inherited audit rules. + The security identifier for which to retrieve audit rules. This must be an object that can be cast as a object. + The collection of audit rules associated with the specified object. + + + Applies the specified modification to the Discretionary Access Control List (DACL) associated with this object. + The modification to apply to the DACL. + The access rule to modify. + + if the DACL is successfully modified; otherwise, . + + if the DACL is successfully modified; otherwise, . + + + Applies the specified modification to the System Access Control List (SACL) associated with this object. + The modification to apply to the SACL. + The audit rule to modify. + + if the SACL is successfully modified; otherwise, . + + if the SACL is successfully modified; otherwise, . + + + Removes access rules that contain the same security identifier and access mask as the specified access rule from the Discretionary Access Control List (DACL) associated with this object. + The access rule to remove. + + if the access rule was successfully removed; otherwise, . + + + Removes all access rules that have the same security identifier as the specified access rule from the Discretionary Access Control List (DACL) associated with this object. + The access rule to remove. + + + Removes all access rules that exactly match the specified access rule from the Discretionary Access Control List (DACL) associated with this object. + The access rule to remove. + + + Removes audit rules that contain the same security identifier and access mask as the specified audit rule from the System Access Control List (SACL) associated with this object. + The audit rule to remove. + + if the audit rule was successfully removed; otherwise, . + + + Removes all audit rules that have the same security identifier as the specified audit rule from the System Access Control List (SACL) associated with this object. + The audit rule to remove. + + + Removes all audit rules that exactly match the specified audit rule from the System Access Control List (SACL) associated with this object. + The audit rule to remove. + + + Removes all access rules in the Discretionary Access Control List (DACL) associated with this object and then adds the specified access rule. + The access rule to reset. + + + Removes all access rules that contain the same security identifier and qualifier as the specified access rule in the Discretionary Access Control List (DACL) associated with this object and then adds the specified access rule. + The access rule to set. + + + Removes all audit rules that contain the same security identifier and qualifier as the specified audit rule in the System Access Control List (SACL) associated with this object and then adds the specified audit rule. + The audit rule to set. + + + Represents the access control and audit security for a directory. This class cannot be inherited. + + + Initializes a new instance of the class. + The current operating system is not Microsoft Windows 2000 or later. + + + Initializes a new instance of the class from a specified directory using the specified values of the enumeration. + The location of a directory to create a object from. + One of the values that specifies the type of access control list (ACL) information to retrieve. + The parameter is a zero-length string, contains only white space, or contains one or more invalid characters as defined by . + The parameter is . + The specified path is invalid, (for example, it is on an unmapped drive). + The file specified in the parameter was not found. + An I/O error occurred while opening the directory. + The parameter is in an invalid format. + The current operating system is not Microsoft Windows 2000 or later. + The specified path, file name, or both exceed the system-defined maximum length. + The current system account does not have administrative privileges. + The directory could not be found. + The parameter specified a directory that is read-only. + + -or- + + This operation is not supported on the current platform. + + -or- + + The caller does not have the required permission. + + + Represents the access control and audit security for a file. This class cannot be inherited. + + + Initializes a new instance of the class. + The current operating system is not Microsoft Windows 2000 or later. + + + Initializes a new instance of the class from a specified file using the specified values of the enumeration. + The location of a file to create a object from. + One of the values that specifies the type of access control list (ACL) information to retrieve. + The parameter is a zero-length string, contains only white space, or contains one or more invalid characters as defined by . + The specified path is invalid, (for example, it is on an unmapped drive). + The file specified in the parameter was not found. + An I/O error occurred while opening the file. + + is in an invalid format. + The parameter is . + The current operating system is not Microsoft Windows 2000 or later. + The specified path, file name, or both exceed the system-defined maximum length. + The current system account does not have administrative privileges. + The file could not be found. + The parameter specified a file that is read-only. + + -or- + + This operation is not supported on the current platform. + + -or- + + The parameter specified a directory. + + -or- + + The caller does not have the required permission. + + + Represents an abstraction of an access control entry (ACE) that defines an access rule for a file or directory. This class cannot be inherited. + + + Initializes a new instance of the class using a reference to a user account, a value that specifies the type of operation associated with the access rule, and a value that specifies whether to allow or deny the operation. + An object that encapsulates a reference to a user account. + One of the values that specifies the type of operation associated with the access rule. + One of the values that specifies whether to allow or deny the operation. + The parameter is not an object. + The parameter is . + An incorrect enumeration was passed to the parameter. + + + Initializes a new instance of the class using a reference to a user account, a value that specifies the type of operation associated with the access rule, a value that determines how rights are inherited, a value that determines how rights are propagated, and a value that specifies whether to allow or deny the operation. + An object that encapsulates a reference to a user account. + One of the values that specifies the type of operation associated with the access rule. + One of the values that specifies how access masks are propagated to child objects. + One of the values that specifies how Access Control Entries (ACEs) are propagated to child objects. + One of the values that specifies whether to allow or deny the operation. + The parameter is not an object. + The parameter is . + An incorrect enumeration was passed to the parameter. + + -or- + + An incorrect enumeration was passed to the parameter. + + -or- + + An incorrect enumeration was passed to the parameter. + + + Initializes a new instance of the class using the name of a user account, a value that specifies the type of operation associated with the access rule, and a value that describes whether to allow or deny the operation. + The name of a user account. + One of the values that specifies the type of operation associated with the access rule. + One of the values that specifies whether to allow or deny the operation. + The parameter is . + An incorrect enumeration was passed to the parameter. + + + Initializes a new instance of the class using the name of a user account, a value that specifies the type of operation associated with the access rule, a value that determines how rights are inherited, a value that determines how rights are propagated, and a value that specifies whether to allow or deny the operation. + The name of a user account. + One of the values that specifies the type of operation associated with the access rule. + One of the values that specifies how access masks are propagated to child objects. + One of the values that specifies how Access Control Entries (ACEs) are propagated to child objects. + One of the values that specifies whether to allow or deny the operation. + The parameter is . + An incorrect enumeration was passed to the parameter. + + -or- + + An incorrect enumeration was passed to the parameter. + + -or- + + An incorrect enumeration was passed to the parameter. + + + Gets the flags associated with the current object. + The flags associated with the current object. + + + Represents an abstraction of an access control entry (ACE) that defines an audit rule for a file or directory. This class cannot be inherited. + + + Initializes a new instance of the class using a reference to a user account, a value that specifies the type of operation associated with the audit rule, and a value that specifies when to perform auditing. + An object that encapsulates a reference to a user account. + One of the values that specifies the type of operation associated with the audit rule. + One of the values that specifies when to perform auditing. + The parameter is not an object. + The parameter is . + An incorrect enumeration was passed to the parameter. + + -or- + + The value was passed to the parameter. + + + Initializes a new instance of the class using the name of a reference to a user account, a value that specifies the type of operation associated with the audit rule, a value that determines how rights are inherited, a value that determines how rights are propagated, and a value that specifies when to perform auditing. + An object that encapsulates a reference to a user account. + One of the values that specifies the type of operation associated with the audit rule. + One of the values that specifies how access masks are propagated to child objects. + One of the values that specifies how Access Control Entries (ACEs) are propagated to child objects. + One of the values that specifies when to perform auditing. + The parameter is not an object. + The parameter is . + An incorrect enumeration was passed to the parameter. + + -or- + + The value was passed to the parameter. + + + Initializes a new instance of the class using a user account name, a value that specifies the type of operation associated with the audit rule, and a value that specifies when to perform auditing. + The name of a user account. + One of the values that specifies the type of operation associated with the audit rule. + One of the values that specifies when to perform auditing. + An incorrect enumeration was passed to the parameter. + + -or- + + The value was passed to the parameter. + + + Initializes a new instance of the class using the name of a user account, a value that specifies the type of operation associated with the audit rule, a value that determines how rights are inherited, a value that determines how rights are propagated, and a value that specifies when to perform auditing. + The name of a user account. + One of the values that specifies the type of operation associated with the audit rule. + One of the values that specifies how access masks are propagated to child objects. + One of the values that specifies how Access Control Entries (ACEs) are propagated to child objects. + One of the values that specifies when to perform auditing. + + + Gets the flags associated with the current object. + The flags associated with the current object. + + + Defines the access rights to use when creating access and audit rules. + + + Specifies the right to append data to the end of a file. + + + Specifies the right to change the security and audit rules associated with a file or folder. + + + Specifies the right to create a folder This right requires the Synchronize value. + + + Specifies the right to create a file. This right requires the Synchronize value. + + + Specifies the right to delete a folder or file. + + + Specifies the right to delete a folder and any files contained within that folder. + + + Specifies the right to run an application file. + + + Specifies the right to exert full control over a folder or file, and to modify access control and audit rules. This value represents the right to do anything with a file and is the combination of all rights in this enumeration. + + + Specifies the right to read the contents of a directory. + + + Specifies the right to read, write, list folder contents, delete folders and files, and run application files. This right includes the right, the right, and the right. + + + Specifies the right to open and copy folders or files as read-only. This right includes the right, right, right, and right. + + + Specifies the right to open and copy folders or files as read-only, and to run application files. This right includes the right and the right. + + + Specifies the right to open and copy file system attributes from a folder or file. For example, this value specifies the right to view the file creation or modified date. This does not include the right to read data, extended file system attributes, or access and audit rules. + + + Specifies the right to open and copy a file or folder. This does not include the right to read file system attributes, extended file system attributes, or access and audit rules. + + + Specifies the right to open and copy extended file system attributes from a folder or file. For example, this value specifies the right to view author and content information. This does not include the right to read data, file system attributes, or access and audit rules. + + + Specifies the right to open and copy access and audit rules from a folder or file. This does not include the right to read data, file system attributes, and extended file system attributes. + + + Specifies whether the application can wait for a file handle to synchronize with the completion of an I/O operation. This value is automatically set when allowing access and automatically excluded when denying access. + + + Specifies the right to change the owner of a folder or file. Note that owners of a resource have full access to that resource. + + + Specifies the right to list the contents of a folder and to run applications contained within that folder. + + + Specifies the right to create folders and files, and to add or remove data from files. This right includes the right, right, right, and right. + + + Specifies the right to open and write file system attributes to a folder or file. This does not include the ability to write data, extended attributes, or access and audit rules. + + + Specifies the right to open and write to a file or folder. This does not include the right to open and write file system attributes, extended file system attributes, or access and audit rules. + + + Specifies the right to open and write extended file system attributes to a folder or file. This does not include the ability to write data, attributes, or access and audit rules. + + + Represents the access control and audit security for a file or directory. + + + Initializes a new instance of the class that represents a new access control rule for the specified user, with the specified access rights, access control, and flags. + An object that represents a user account. + An integer that specifies an access type. + + if the access rule is inherited; otherwise, . + One of the values that specifies how to propagate access masks to child objects. + One of the values that specifies how to propagate Access Control Entries (ACEs) to child objects. + One of the values that specifies whether access is allowed or denied. + The , , , or parameters specify an invalid value. + The parameter is . + + -or- + + The parameter is zero. + The parameter is neither of type , nor of a type such as that can be converted to type . + A new object that represents a new access control rule for the specified user, with the specified access rights, access control, and flags. + + + Adds the specified access control list (ACL) permission to the current file or directory. + A object that represents an access control list (ACL) permission to add to a file or directory. + The parameter is . + + + Adds the specified audit rule to the current file or directory. + A object that represents an audit rule to add to a file or directory. + The parameter is . + + + Initializes a new instance of the class representing the specified audit rule for the specified user. + An object that represents a user account. + An integer that specifies an access type. + + if the access rule is inherited; otherwise, . + One of the values that specifies how to propagate access masks to child objects. + One of the values that specifies how to propagate Access Control Entries (ACEs) to child objects. + One of the values that specifies the type of auditing to perform. + The , , , or properties specify an invalid value. + The property is . + + -or- + + The property is zero. + The property is neither of type , nor of a type such as that can be converted to type . + A new object representing the specified audit rule for the specified user. + + + Removes all matching allow or deny access control list (ACL) permissions from the current file or directory. + A object that represents an access control list (ACL) permission to remove from a file or directory. + The parameter is . + + if the access rule was removed; otherwise, . + + + Removes all access control list (ACL) permissions for the specified user from the current file or directory. + A object that specifies a user whose access control list (ACL) permissions should be removed from a file or directory. + The parameter is . + + + Removes a single matching allow or deny access control list (ACL) permission from the current file or directory. + A object that specifies a user whose access control list (ACL) permissions should be removed from a file or directory. + The parameter is . + + + Removes all matching allow or deny audit rules from the current file or directory. + A object that represents an audit rule to remove from a file or directory. + The parameter is . + + if the audit rule was removed; otherwise, + + + Removes all audit rules for the specified user from the current file or directory. + A object that specifies a user whose audit rules should be removed from a file or directory. + The parameter is . + + + Removes a single matching allow or deny audit rule from the current file or directory. + A object that represents an audit rule to remove from a file or directory. + The parameter is . + + + Adds the specified access control list (ACL) permission to the current file or directory and removes all matching ACL permissions. + A object that represents an access control list (ACL) permission to add to a file or directory. + The parameter is . + + + Sets the specified access control list (ACL) permission for the current file or directory. + A object that represents an access control list (ACL) permission to set for a file or directory. + The parameter is . + + + Sets the specified audit rule for the current file or directory. + A object that represents an audit rule to set for a file or directory. + The parameter is . + + + Gets the enumeration that the class uses to represent access rights. + A object representing the enumeration. + + + Gets the enumeration that the class uses to represent access rules. + A object representing the class. + + + Gets the type that the class uses to represent audit rules. + A object representing the class. + + + \ No newline at end of file diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.IO.Packaging.dll b/SOURCE/Application/Plugins/ModellingWizard/System.IO.Packaging.dll new file mode 100644 index 0000000..cfbb4ec Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.IO.Packaging.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.IO.Packaging.xml b/SOURCE/Application/Plugins/ModellingWizard/System.IO.Packaging.xml new file mode 100644 index 0000000..994885f --- /dev/null +++ b/SOURCE/Application/Plugins/ModellingWizard/System.IO.Packaging.xml @@ -0,0 +1,998 @@ + + + + System.IO.Packaging + + + + The exception that is thrown when an input file or a data stream that is supposed to conform to a certain file format specification is malformed. + + + Creates a new instance of the class. + + + Creates a new instance of the class and initializes it with serialized data. This constructor is called during deserialization to reconstitute the exception object transmitted over a stream. + The object that holds the serialized object data. + The contextual information about the source or destination. + + + Creates a new instance of the class with a specified error message. + A value that represents the error message. + + + Creates a new instance of the class with a specified error message and exception type. + A value that represents the error message. + The value of the property, which represents the cause of the current exception. + + + Creates a new instance of the class with a source URI value. + The value of the file that caused this error. + + + Creates a new instance of the class with a source URI value and an exception type. + The value of the file that caused this error. + The value of the property, which represents the cause of the current exception. + + + Creates a new instance of the class with a source URI value and a specified error message. + The value of the file that caused this error. + A value that represents the error message. + + + Creates a new instance of the class with a source URI value, a specified error message, and an exception type. + The value of the file that caused this error. + A value that represents the error message. + The value of the property, which represents the cause of the current exception. + + + Sets the object with the file name and additional exception information. + The object that holds the serialized object data. + The contextual information about the source or destination. + + + Gets the name of a file that caused the . + A that represents the name the file that caused the exception. + + + Specifies the compression level for content that is stored in a . + + + Compression is optimized for performance. + + + Compression is optimized for size. + + + Compression is optimized for a balance between size and performance. + + + Compression is turned off. + + + Compression is optimized for high performance. + + + Specifies the encryption option for parts in a . + + + No encryption. + + + Encryption supported through rights management. + + + Represents a container that can store multiple data objects. + + + Initializes a new instance of the class that uses a given . + The file IO permissions for the package. + The value for is not valid. + + + Saves and closes the package plus all underlying part streams. + + + Creates a new uncompressed part with a given URI and content type. + The uniform resource identifier (URI) of the new part. + The content type of the data stream. + + or is . + + is not a valid URI. + A part with the specified is already present in the package. + The package is not open ( or has been called). + The package is read-only (a new part cannot be added). + The new created part. + + + Creates a new part with a given URI, content type, and compression option. + The URI of the new part. + The content type of the data stream. + The compression option for the data stream, or compression. + + or is . + + is not a valid uniform resource identifier (URI). + A part with the specified is already present in the package. + The value is not valid. + The package is not open ( or has been called). + The package is read-only (a new part cannot be added). + The new created part. + + + When overridden in a derived class, creates a new part in the package. + The uniform resource identifier (URI) for the part being created. + The content type of the data stream. + The compression option for the data stream. + The created part. + + + Creates a package-level relationship to a part with a given URI, target mode, and relationship type. + The uniform resource identifier (URI) of the target part. + Indicates if the target part is or to the package. + A URI that uniquely defines the role of the relationship. + + or is . + The part is a , or is and is an absolute URI. + The value for is not valid. + The package is not open ( or has been called). + The package is read-only. + The package-level relationship to the specified part. + + + Creates a package-level relationship to a part with a given URI, target mode, relationship type, and identifier (ID). + The uniform resource identifier (URI) of the target part. + Indicates if the target part is or to the package. + A URI that uniquely defines the role of the relationship. + A unique XML identifier. + + or is . + The part is a , or is and is an absolute URI. + The value for is not valid. + The package is not open ( or has been called). + The package is read-only. + + is not a valid XML identifier; or a part with the specified already occurs in the package. + The package-level relationship to the specified part. + + + Deletes a part with a given URI from the package. + The URI of the part to delete. + + is . + + is not a valid URI. + The package is not open ( or has been called). + The package is read-only. + + + When overridden in a derived class, deletes a part with a given URI. + The of the to delete. + + + Deletes a package-level relationship. + The of the to delete. + + is . + The package is not open ( or has been called). + The package is read-only. + + is not a valid XML identifier. + + + Flushes and saves the content of all parts and relationships, closes the package, and releases all resources. + + to release both managed and unmanaged resources; to release only unmanaged resources. + + + Saves the contents of all parts and relationships that are contained in the package. + The package is not open ( or has been called). + The package is read-only and cannot be modified. + + + When overridden in a derived class, saves the content of all parts and relationships to the derived class store. + + + Returns the part with a given URI. + The uniform resource identifier (URI) of the part to return. + + is . + + is not a valid uniform resource identifier (URI). + A part with the specified is not in the package. + The package is not open ( or has been called). + The package is write-only. + The part with the specified . + + + When overridden in a derived class, returns the part addressed by a given URI. + The uniform resource identifier (URI) of the part to retrieve. + The requested part; or , if a part with the specified is not in the package. + + + Returns a collection of all the parts in the package. + The package is not open ( or has been called). + The package is write-only. + A collection of all the elements that are contained in the package. + + + When overridden in a derived class, returns an array of all the parts in the package. + An array of all the parts that are contained in the package. + + + Returns the package-level relationship with a given identifier. + The of the relationship to return. + + is . + + is not a valid XML identifier. + A relationship with the specified is not in the package. + The package is not open ( or has been called). + The package is write-only. + The package-level relationship with the specified . + + + Returns a collection of all the package-level relationships. + The package is not open ( or has been called). + The package is write-only. + A collection of all the package-level relationships that are contained in the package. + + + Returns a collection of all the package-level relationships that match a given . + The to match and return in the collection. + + is . + + is an empty string. + The package is not open ( or has been called). + The package is write-only. + A collection of package-level relationships that match the specified . + + + Opens a package on a given IO stream. + The IO stream on which to open the package. + + is . + The package to open requires read or read/write permission and the specified is write-only; or, the package to open requires write or read/write permission and the specified is read-only. + The opened package. + + + Opens a package with a given IO stream and file mode. + The IO stream on which to open the package. + The file mode in which to open the package. + + is . + + value is not valid. + The package to open requires read or read/write permission and the specified is write-only; or, the package to open requires write or read/write permission and the specified is read-only. + The opened package. + + + Opens a package with a given IO stream, file mode, and file access setting. + The IO stream on which to open the package. + The file mode in which to open the package. + The file access in which to open the package. + + is . + The value for or is not valid. + The package to open requires read or read/write permission and the specified is write-only; or the package to open requires write or read/write permission and the specified is read-only. + The opened package. + + + Opens a package at a given path and file name. + The path and file name of the package. + + is . + The opened package. + + + Opens a package at a given path using a given file mode. + The path and file name of the package. + The file mode in which to open the package. + + is . + Value for is not valid. + The opened package. + + + Opens a package at a given path using a given file mode and file access setting. + The path and file name of the package. + The file mode in which to open the package. + The file access in which to open the package. + + is . + Value for or is not valid. + The opened package. + + + Opens a package at a given path using a given file mode, file access, and file share setting. + The path and file name of the package. + The file mode in which to open the package. + The file access in which to open the package. + The file sharing mode in which to open the package. + + is . + The value for , , or is not valid. + The opened package. + + + Indicates whether a part with a given URI is in the package. + The of the part to check for. + + is . + + is not a valid uniform resource identifier (URI). + The package is not open ( or has been called). + The package is write-only (information cannot be read). + + if a part with the specified is in the package; otherwise, . + + + Indicates whether a package-level relationship with a given ID is contained in the package. + The of the relationship to check for. + + is . + + is not a valid XML identifier. + The package is not open ( or has been called). + The package is write-only. + + if a package-level relationship with the specified is in the package; otherwise, . + + + This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended for application use. Use the type-safe method instead. + + + Gets the file access setting for the package. + The package is not open ( or has been called). + One of the values: , , or . + + + Gets the core properties of the package. + The package is not open ( or has been called). + The core properties of the package. + + + Provides a base class for parts stored in a . This class is abstract. + + + Initializes a new instance of the class with a specified parent and part URI. + The parent of the part. + The URI of the part, relative to the parent root. + + or is . + + + Initializes a new instance of the class with a specified parent , part URI, and MIME content type. + The parent of the part. + The URI of the part, relative to the parent root. + The MIME content type of the part data stream. + + or is . + + is not a valid URI. + + + Initializes a new instance of the class with a specified parent , part URI, MIME content type, and . + The parent of the part. + The URI of the part, relative to the parent root. + The MIME content type of the part's data stream. + The compression option of the part data stream. + + or is . + + is not a valid URI. + The value is not valid. + + + Creates a part-level relationship between this to a specified target or external resource. + The URI of the target part. + One of the enumeration values. For example, if the target part is inside the ; or if the target is a resource outside the . + The role of the relationship. + The part has been deleted. + + -or- + + The is not open ( or has been called). + + or is . + The parameter is not a valid enumeration value. + The part identified by the is a relationship (the target of a relationship cannot be another relationship). + + -or- + + is specified as but is an absolute external URI. + The package is read-only (a new relationship cannot be added). + The part-level relationship between this to the target or external resource. + + + Creates a part-level relationship between this to a specified target or external resource. + The URI of the target part. + One of the enumeration values. For example, if the target part is inside the ; or if the target is a resource outside the . + The role of the relationship. + A unique ID for the relationship. + The part has been deleted. + + -or- + + The is not open ( or has been called). + + or is . + The parameter is not a valid enumeration value. + The part identified by the is a relationship (the target of a relationship cannot be another relationship). + + -or- + + is specified as but is an absolute external URI. + The package is read-only (a new relationship cannot be added). + + is not a valid XML identifier. + + -or- + + A part with the specified already exists. + The part-level relationship between this to the target or external resource. + + + Deletes a specified part-level . + The of the relationship to delete. + The part has been deleted. + + -or- + + The is not open ( or has been called). + + is . + The package is read-only (relationships cannot be deleted). + + is not a valid XML identifier. + + + When overridden in a derived class, returns the MIME type of the part content. + The derived class does not provide an override implementation required for the method. + The MIME type of the part content. + + + Returns the relationship that has a specified . + The of the relationship to return. + + is . + + is not a valid XML identifier. + + is an empty string. + The part has been deleted. + + -or- + + The is not open ( or has been called). + + -or- + + A relationship with the specified does not exist in the package. + The package is write-only (relationship information cannot be read). + The relationship that matches the specified . + + + Returns a collection of all the relationships that are owned by this part. + The part has been deleted. + + -or- + + The is not open ( or has been called). + The package is write-only (relationship information cannot be read). + A collection of all the relationships that are owned by the part. + + + Returns a collection of the relationships that match a specified . + The of the relationships to locate and return in the collection. + + is . + + is an empty string. + The part has been deleted. + + -or- + + The is not open ( or has been called). + The package is write-only (relationship information cannot be read). + A collection of the relationships that match the specified . + + + Returns the part content data stream. + The part has been deleted. + + -or- + + The is not open ( or has been called). + The stream object returned by the method of the derived subclass is . + The content data stream for the part. + + + Returns the content stream opened in a specified I/O . + The I/O mode in which to open the content stream. + The part has been deleted. + + -or- + + The is not open ( or has been called). + The parameter is not a valid enumeration value. + The parameter is not compatible with the package and part stream. + + -or- + + The stream object returned by the method of the derived subclass is . + The content stream of the part. + + + Returns the part content stream opened with a specified and . + The I/O mode in which to open the content stream. + The access permissions to use in opening the content stream. + The part has been deleted. + + -or- + + The is not open ( or has been called). + The parameter is not a valid enumeration value. + + -or- + + The parameter is not a valid enumeration value. + + or is not compatible with the package and part stream. + + -or- + + The parameter is specified as but the parameter requires write access. ( values of , , , and require or access.) + + -or- + + The stream object returned by the method of the derived subclass is . + The content stream for the part. + + + When overridden in a derived class, returns the part content stream opened with a specified and . + The I/O mode in which to open the content stream. + The access permissions to use in opening the content stream. + The content data stream of the part. + + + Returns a value that indicates whether this part owns a relationship with a specified . + The of the relationship to check for. + + is . + + is not a valid XML identifier. + The part has been deleted. + + -or- + + The is not open ( or has been called). + The package is write-only (relationship information cannot be read). + + if this part owns a relationship with the specified ; otherwise, . + + + Gets the compression option of the part content stream. + The part has been deleted. + + -or- + + The is not open ( or has been called). + The compression option of the part content stream. + + + Gets the MIME type of the content stream. + The part has been deleted. + + -or- + + The is not open ( or has been called). + + -or- + + The string returned by the derived class method is empty. + The MIME type of the content data stream for the part. + + + Gets the parent of the part. + The part has been deleted. + + -or- + + The is not open ( or has been called). + The parent package of the part. + + + Gets the URI of the part. + The part has been deleted. + + -or- + + The is not open ( or has been called). + The URI of the part relative to the package root. + + + Represents a collection of objects. + + + Returns an enumerator for iterating through the parts in the collection. + An enumerator for iterating through the elements in the collection. + + + Returns an enumerator that iterates through the collection. + An object that can be used to iterate through the collection. + + + For a description of this member, see . + An object that can be used to iterate through the collection. + + + Represents the core properties of a . + + + Initializes a new instance of the class. + + + Releases all resources used by the instance. + + + Releases the unmanaged resources used by the instance and optionally releases the managed resources. + + to release both managed and unmanaged resources; to release only unmanaged resources. + + + When overridden in a derived class, gets or sets the category of the . + The category of the content that is contained in the . + + + When overridden in a derived class, gets or sets a value that represents the status of the . + The status of the content. + + + When overridden in a derived class, gets or sets a value that represents the type of content that is contained in the . + The type of content that is contained in the . + + + When overridden in a derived class, gets or sets the date and time the was created. + The date and time the was initially created. + + + When overridden in a derived class, gets or sets a value that identifies the individual or entity that created the and its content. + The individual or entity that created the and its content. + + + When overridden in a derived class, gets or sets a description of the content contained in the . + A description of the content contained in the . + + + When overridden in a derived class, gets or sets a value that unambiguously identifies the and its content. + A value that unambiguously identifies the and its content. + + + When overridden in a derived class, gets or sets a value that define a delimited set of keywords to support searching and indexing the and its content. + A delimited set of keywords to support searching and indexing the and content. + + + When overridden in a derived class, gets or sets a value that identifies the language of the content. + A value that identifies the content language. + + + When overridden in a derived class, gets or sets a value that identifies the user who last modified the content. + The user who last modified the content. + + + When overridden in a derived class, gets or sets the date and time the content was last printed. + The date and time the content was last printed. + + + When overridden in a derived class, gets or sets the date and time the was last changed. + The date and time the was last changed. + + + When overridden in a derived class, gets or sets the revision number of the . + The revision number of the . + + + When overridden in a derived class, gets or sets the topic of the content. + The topic of the content. + + + When overridden in a derived class, gets or sets the name given to the and its content. + The name given to the and its content. + + + When overridden in a derived class, gets or sets the version number of the . + The version number of the . + + + Represents an association between a source or , and a target object which can be a or external resource. + + + Gets a string that identifies the relationship. + A string that identifies the relationship. + + + Gets the that contains this relationship. + The package that contains this relationship. + + + Gets the qualified type name of the relationship. + The qualified type name of the relationship. + + + Gets the URI of the package or part that owns the relationship. + The URI of the or that owns the relationship. + + + Gets a value that indicates whether the target of the relationship is or to the . + An enumeration value that indicates whether references a resource or to the . + + + Gets the URI of the target resource of the relationship. + The URI of the target resource. + + + Represents a collection of elements that are owned by a given or the . + + + Returns an enumerator for iterating through the relationships in the collection. + An enumerator for iterating through the elements in the collection. + + + This type or member supports the Windows Presentation Foundation infrastructure and is not intended to be used directly from your code. + Do not use - use . + + + Defines criteria to select part-level or package-level relationships. + + + Initializes a new instance of the class. + The uniform resource identifier (URI) of the or the (SourceUri="/") that owns the relationship. + The type of the , either by relationship or relationship . + The qualification string that is used to select the relationships based on the . + + or is . + The parameter is not valid. + The parameter is but is not a valid XML Schema Definition (XSD) identifier (ID). + The is not valid for the specified . + +-or- + +The is not the root ("/") and is also not a valid URI. + + + Returns a list of objects that match the defined , , and . + The package from which to select the relationships based on the selection criteria. + + is . + A list of relationships that match the selection parameters specified to the constructor. + + + Gets the selection criteria specified to the constructor. + The selection criteria based on the of or specified to the constructor. + + + Gets the specified to the constructor. + The selector type of or specified to the constructor. + + + Gets the root package URI ("/") or part specified to the constructor as the owner of the relationship. + The root package URI ("/") or part specified to the constructor as the owner of the relationship. + + + Specifies the type of selection criteria that is used to match and return selections through a . + + + + selections are by . + + + + selections are by . + + + Provides utility methods to compose and parse pack URI objects. + + + Defines the pack URI scheme name "pack". + + + Returns a value that indicates whether two pack URIs are equivalent. + The first pack URI. + The second pack URI. + Either or is not an absolute URI. + + -or- + + Either or do not begin with a "pack://" scheme. + A signed integer indicating the relationship between and . + + Value Meaning Less than 0 is less than . 0 is equivalent to . Greater than 0 is greater than . + + + Returns a value that indicates whether two package part URIs are equivalent. + The URI of the first . + The URI of the second . + + or is not a valid part URI syntax. + A value that indicates the relationship between and . + + Value Meaning Less than 0 is less than . 0 is equivalent to . Greater than 0 is greater than . + + + Creates a new pack URI that points to a package. + The URI of the referenced . + + is . + + is not an absolute URI. + The pack URI for the referenced by the given . + + + Creates a pack URI given a URI and the URI of a part in the package. + The URI of the . + The URI of the in the package. + + is . + + is not an absolute URI. + + -or- + + is not a valid part URI syntax. + The pack URI of the given . + + + Creates a pack URI given a URI, the URI of a part in the package, and a "#" fragment to append. + The URI of the . + The URI of the in the package. + A "#" reference identifying an element within the package part. + + is . + + is not an absolute URI. + + -or- + + is not a valid part URI syntax. + + -or- + + is empty or does begin with "#". + The pack URI that identifies the specified package, package part, and fragment. + + + Creates a formatted URI. + The URI of the within the package. + + is . + + is not an absolute . + A formatted URI. + + + Returns the normalized form of a specified URI. + The URI to normalize. + + is . + + does not have a valid syntax. + The normalized form of the given . + + + Returns the inner URI that points to the entire package of a specified pack URI. + The pack URI from which to return the URI of the . + + is . + + is not an absolute . + The URI of the from the specified . + + + Returns the URI of a within a specified pack URI. + The pack URI from which to return the URI. + If the is . + If the is not an absolute . + +-or- + + does not have the "pack://" scheme. + +-or- + +The partUri extracted from does not conform to the valid partUri syntax. + The URI of the in the given , or if points to a package instead of a . + + + Returns the URI of the relationship part associated with a specified . + The of the to return the URI for the associated . + + is . + + syntax is not valid for a package part URI. + + -or- + + is an absolute URI. + + -or- + + references a relationship part. + The URI of the part associated with the identified by . + + + Returns the relative URI between two specified URIs. + The URI of the source part. + The URI of the target part. + + or is . + Either the or does not have a valid syntax. + The relative URI from to . + + + Returns the from the with a specified URI. + The URI of the relationship part to return the from. + + is . + + is an absolute URI. + + -or- + + syntax is not valid for a . + + -or- + + does not reference a relationship part. + + -or- + + The of the relationship part references another relationship part (not valid). + The of the from the relationship with the specified . + + + Returns a value that indicates whether a specified URI is the URI of a part. + The URI to check for a part. + + is . + + is an absolute URI. + + -or- + + is an invalid syntax. + + if identifies a part; otherwise, . + + + Returns a part URI given a source part URI and a URI with a relative path to a target part. + The URI of the source part, or "/" to designate the root. + The relative URI to the target part. + + or is . + + is not a valid part URI. + + -or- + + is not a valid relative URI. + The URI of the target part resolved between the specified and the parameters. + + + Specifies whether the target of a is inside or outside the . + + + The relationship references a resource that is external to the package. + + + The relationship references a part that is inside the package. + + + Implements a derived subclass of the abstract base class - the class uses a ZIP archive as the container store. This class cannot be inherited. + + + Represents a part that is stored in a . + + + \ No newline at end of file diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Net.Http.dll b/SOURCE/Application/Plugins/ModellingWizard/System.Net.Http.dll new file mode 100644 index 0000000..e665456 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.Net.Http.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Security.AccessControl.dll b/SOURCE/Application/Plugins/ModellingWizard/System.Security.AccessControl.dll new file mode 100644 index 0000000..df8cb50 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.Security.AccessControl.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Security.AccessControl.xml b/SOURCE/Application/Plugins/ModellingWizard/System.Security.AccessControl.xml new file mode 100644 index 0000000..4c9b25a --- /dev/null +++ b/SOURCE/Application/Plugins/ModellingWizard/System.Security.AccessControl.xml @@ -0,0 +1,2047 @@ + + + + System.Security.AccessControl + + + + Specifies the actions that are permitted for securable objects. + + + Specifies write-only access. + + + Specifies no access. + + + Specifies read-only access. + + + Specifies the type of access control modification to perform. This enumeration is used by methods of the class and its descendents. + + + Add the specified authorization rule to the access control list (ACL). + + + Remove authorization rules that contain the same security identifier (SID) and access mask as the specified authorization rule from the ACL. + + + Remove authorization rules that contain the same SID as the specified authorization rule from the ACL. + + + Remove authorization rules that exactly match the specified authorization rule from the ACL. + + + Remove authorization rules that contain the same SID as the specified authorization rule from the ACL, and then add the specified authorization rule to the ACL. + + + Remove all authorization rules from the ACL, then add the specified authorization rule to the ACL. + + + Specifies which sections of a security descriptor to save or load. + + + The discretionary access control list (DACL). + + + The entire security descriptor. + + + The system access control list (SACL). + + + The primary group. + + + No sections. + + + The owner. + + + Specifies whether an object is used to allow or deny access. These values are not flags, and they cannot be combined. + + + The object is used to allow access to a secured object. + + + The object is used to deny access to a secured object. + + + Represents a combination of a user's identity, an access mask, and an access control type (allow or deny). An object also contains information about the how the rule is inherited by child objects and how that inheritance is propagated. + + + Initializes a new instance of the class by using the specified values. + The identity to which the access rule applies. This parameter must be an object that can be cast as a . + The access mask of this rule. The access mask is a 32-bit collection of anonymous bits, the meaning of which is defined by the individual integrators. + + if this rule is inherited from a parent container. + The inheritance properties of the access rule. + Whether inherited access rules are automatically propagated. The propagation flags are ignored if is set to . + The valid access control type. + The value of the parameter cannot be cast as a , or the parameter contains an invalid value. + The value of the parameter is zero, or the or parameters contain unrecognized flag values. + + + Gets the value associated with this object. + The value associated with this object. + + + Represents a combination of a user's identity, an access mask, and an access control type (allow or deny). An AccessRule`1 object also contains information about the how the rule is inherited by child objects and how that inheritance is propagated. + The access rights type for the access rule. + + + Initializes a new instance of the AccessRule'1 class by using the specified values. + The identity to which the access rule applies. + The rights of the access rule. + The valid access control type. + + + Initializes a new instance of the AccessRule'1 class by using the specified values. + The identity to which the access rule applies. + The rights of the access rule. + The inheritance properties of the access rule. + Whether inherited access rules are automatically propagated. The propagation flags are ignored if is set to . + The valid access control type. + + + Initializes a new instance of the AccessRule'1 class by using the specified values. + The identity to which the access rule applies. + The rights of the access rule. + The valid access control type. + + + Initializes a new instance of the AccessRule'1 class by using the specified values. + The identity to which the access rule applies. + The rights of the access rule. + The inheritance properties of the access rule. + Whether inherited access rules are automatically propagated. The propagation flags are ignored if is set to . + The valid access control type. + + + Gets the rights of the current instance. + The rights, cast as type <T>, of the current instance. + + + Provides the ability to iterate through the access control entries (ACEs) in an access control list (ACL). + + + Advances the enumerator to the next element of the collection. + The collection was modified after the enumerator was created. + + if the enumerator was successfully advanced to the next element; if the enumerator has passed the end of the collection. + + + Sets the enumerator to its initial position, which is before the first element in the collection. + The collection was modified after the enumerator was created. + + + Gets the current element in the collection. This property gets the type-friendly version of the object. + The current element in the collection. + + + Gets the current element in the collection. + The collection was modified after the enumerator was created. + The current element in the collection. + + + Specifies the inheritance and auditing behavior of an access control entry (ACE). + + + All access attempts are audited. + + + The access mask is propagated to child container objects. + + + Failed access attempts are audited. + + + A logical of , , , and . + + + An ACE is inherited from a parent container rather than being explicitly set for an object. + + + The access mask is propagated only to child objects. This includes both container and leaf child objects. + + + No ACE flags are set. + + + The access checks do not apply to the object; they only apply to its children. + + + The access mask is propagated onto child leaf objects. + + + Successful access attempts are audited. + + + Specifies the function of an access control entry (ACE). + + + Allow access. + + + Deny access. + + + Cause a system alarm. + + + Cause a system audit. + + + Defines the available access control entry (ACE) types. + + + Allows access to an object for a specific trustee identified by an object. + + + Allows access to an object for a specific trustee identified by an object. This ACE type may contain optional callback data. The callback data is a resource manager-specific BLOB that is not interpreted. + + + Allows access to an object, property set, or property. The ACE contains a set of access rights, a GUID that identifies the type of object, and an object that identifies the trustee to whom the system will grant access. The ACE also contains a GUID and a set of flags that control inheritance of the ACE by child objects. This ACE type may contain optional callback data. The callback data is a resource manager-specific BLOB that is not interpreted. + + + Defined but never used. Included here for completeness. + + + Allows access to an object, property set, or property. The ACE contains a set of access rights, a GUID that identifies the type of object, and an object that identifies the trustee to whom the system will grant access. The ACE also contains a GUID and a set of flags that control inheritance of the ACE by child objects. + + + Denies access to an object for a specific trustee identified by an object. + + + Denies access to an object for a specific trustee identified by an object. This ACE type can contain optional callback data. The callback data is a resource manager-specific BLOB that is not interpreted. + + + Denies access to an object, property set, or property. The ACE contains a set of access rights, a GUID that identifies the type of object, and an object that identifies the trustee to whom the system will grant access. The ACE also contains a GUID and a set of flags that control inheritance of the ACE by child objects. This ACE type can contain optional callback data. The callback data is a resource manager-specific BLOB that is not interpreted. + + + Denies access to an object, property set, or property. The ACE contains a set of access rights, a GUID that identifies the type of object, and an object that identifies the trustee to whom the system will grant access. The ACE also contains a GUID and a set of flags that control inheritance of the ACE by child objects. + + + Tracks the maximum defined ACE type in the enumeration. + + + Reserved for future use. + + + Reserved for future use. + + + Reserved for future use. + + + Reserved for future use. + + + Causes an audit message to be logged when a specified trustee attempts to gain access to an object. The trustee is identified by an object. + + + Causes an audit message to be logged when a specified trustee attempts to gain access to an object. The trustee is identified by an object. This ACE type can contain optional callback data. The callback data is a resource manager-specific BLOB that is not interpreted. + + + Causes an audit message to be logged when a specified trustee attempts to gain access to an object or subobjects such as property sets or properties. The ACE contains a set of access rights, a GUID that identifies the type of object or subobject, and an object that identifies the trustee for whom the system will audit access. The ACE also contains a GUID and a set of flags that control inheritance of the ACE by child objects. This ACE type can contain optional callback data. The callback data is a resource manager-specific BLOB that is not interpreted. + + + Causes an audit message to be logged when a specified trustee attempts to gain access to an object or subobjects such as property sets or properties. The ACE contains a set of access rights, a GUID that identifies the type of object or subobject, and an object that identifies the trustee for whom the system will audit access. The ACE also contains a GUID and a set of flags that control inheritance of the ACE by child objects. + + + Specifies the conditions for auditing attempts to access a securable object. + + + Failed access attempts are to be audited. + + + No access attempts are to be audited. + + + Successful access attempts are to be audited. + + + Represents a combination of a user's identity and an access mask. An object also contains information about how the rule is inherited by child objects, how that inheritance is propagated, and for what conditions it is audited. + + + Initializes a new instance of the class by using the specified values. + The identity to which the audit rule applies. It must be an object that can be cast as a . + The access mask of this rule. The access mask is a 32-bit collection of anonymous bits, the meaning of which is defined by the individual integrators. + + to inherit this rule from a parent container. + The inheritance properties of the audit rule. + Whether inherited audit rules are automatically propagated. The propagation flags are ignored if is set to . + The conditions for which the rule is audited. + The value of the parameter cannot be cast as a , or the parameter contains an invalid value. + The value of the parameter is zero, or the or parameters contain unrecognized flag values. + + + Gets the audit flags for this audit rule. + A bitwise combination of the enumeration values. This combination specifies the audit conditions for this audit rule. + + + Represents a combination of a user's identity and an access mask. + The type of the audit rule. + + + Initializes a new instance of the class by using the specified values. + The identity to which this audit rule applies. + The rights of the audit rule. + The conditions for which the rule is audited. + + + Initializes a new instance of the class by using the specified values. + The identity to which the audit rule applies. + The rights of the audit rule. + The inheritance properties of the audit rule. + Whether inherited audit rules are automatically propagated. + The conditions for which the rule is audited. + + + Initializes a new instance of the class by using the specified values. + The identity to which the audit rule applies. + The rights of the audit rule. + The properties of the audit rule. + + + Initializes a new instance of the class by using the specified values. + The identity to which the audit rule applies. + The rights of the audit rule. + The inheritance properties of the audit rule. + Whether inherited audit rules are automatically propagated. + The conditions for which the rule is audited. + + + Gets the rights of the audit rule. + The rights of the audit rule. + + + Determines access to securable objects. The derived classes and offer specializations for access and audit functionality. + + + Initializes a new instance of the class by using the specified values. + The identity to which the access rule applies. This parameter must be an object that can be cast as a . + The access mask of this rule. The access mask is a 32-bit collection of anonymous bits, the meaning of which is defined by the individual integrators. + + to inherit this rule from a parent container. + The inheritance properties of the access rule. + Whether inherited access rules are automatically propagated. The propagation flags are ignored if is set to . + The value of the parameter cannot be cast as a . + The value of the parameter is zero, or the or parameters contain unrecognized flag values. + + + Gets the access mask for this rule. + The access mask for this rule. + + + Gets the to which this rule applies. + The to which this rule applies. + + + Gets the value of flags that determine how this rule is inherited by child objects. + A bitwise combination of the enumeration values. + + + Gets a value indicating whether this rule is explicitly set or is inherited from a parent container object. + + if this rule is not explicitly set but is instead inherited from a parent container. + + + Gets the value of the propagation flags, which determine how inheritance of this rule is propagated to child objects. This property is significant only when the value of the enumeration is not . + A bitwise combination of the enumeration values. + + + Represents a collection of objects. + + + Initializes a new instance of the class. + + + Adds an object to the collection. + The object to add to the collection. + + + Copies the contents of the collection to an array. + An array to which to copy the contents of the collection. + The zero-based index from which to begin copying. + + + Gets the object at the specified index of the collection. + The zero-based index of the object to get. + The object at the specified index. + + + Represents an access control entry (ACE). + + + Initializes a new instance of the class. + Flags that specify information about the inheritance, inheritance propagation, and auditing conditions for the new access control entry (ACE). + The use of the new ACE. + The access mask for the ACE. + The associated with the new ACE. + + to specify that the new ACE is a callback type ACE. + Opaque data associated with the new ACE. Opaque data is allowed only for callback ACE types. The length of this array must not be greater than the return value of the method. + + + Marshals the contents of the object into the specified byte array beginning at the specified offset. + The byte array into which the contents of the object is marshaled. + The offset at which to start marshaling. + + is negative or too high to allow the entire to be copied into the array. + + + Gets the maximum allowed length of an opaque data BLOB for callback access control entries (ACEs). + + to specify that the object is a callback ACE type. + The allowed length of an opaque data BLOB. + + + Gets the length, in bytes, of the binary representation of the current object. Use this length with the method before marshaling the ACL into a binary array. + The length, in bytes, of the binary representation of the current object. + + + Represents an access control list (ACL) and is the base class for the and classes. + + + Marshals the contents of the object into the specified byte array beginning at the specified offset. + The byte array into which the contents of the is marshaled. + The offset at which to start marshaling. + + + Removes all access control entries (ACEs) contained by this object that are associated with the specified object. + The object to check for. + + + Removes all inherited access control entries (ACEs) from this object. + + + Gets the length, in bytes, of the binary representation of the current object. This length should be used before marshaling the access control list (ACL) into a binary array by using the method. + The length, in bytes, of the binary representation of the current object. + + + Gets the number of access control entries (ACEs) in the current object. + The number of ACEs in the current object. + + + Gets a Boolean value that specifies whether the access control entries (ACEs) in the current object are in canonical order. + + if the ACEs in the current object are in canonical order; otherwise, . + + + Sets whether the object is a container. + + if the current object is a container. + + + Sets whether the current object is a directory object access control list (ACL). + + if the current object is a directory object ACL. + + + Gets or sets the at the specified index. + The zero-based index of the to get or set. + The at the specified index. + + + Gets the revision level of the . + A byte value that specifies the revision level of the . + + + Controls access to objects without direct manipulation of access control lists (ACLs). This class is the abstract base class for the class. + + + Initializes a new instance of the class. + + if the new object is a container object. + + + Adds the specified access rule to the Discretionary Access Control List (DACL) associated with this object. + The access rule to add. + + + Adds the specified audit rule to the System Access Control List (SACL) associated with this object. + The audit rule to add. + + + Gets a collection of the access rules associated with the specified security identifier. + + to include access rules explicitly set for the object. + + to include inherited access rules. + Specifies whether the security identifier for which to retrieve access rules is of type or type . The value of this parameter must be a type that can be translated to the type. + The collection of access rules associated with the specified object. + + + Gets a collection of the audit rules associated with the specified security identifier. + + to include audit rules explicitly set for the object. + + to include inherited audit rules. + The security identifier for which to retrieve audit rules. This must be an object that can be cast as a object. + The collection of audit rules associated with the specified object. + + + Applies the specified modification to the Discretionary Access Control List (DACL) associated with this object. + The modification to apply to the DACL. + The access rule to modify. + + if the DACL is successfully modified; otherwise, . + + if the DACL is successfully modified; otherwise, . + + + Applies the specified modification to the System Access Control List (SACL) associated with this object. + The modification to apply to the SACL. + The audit rule to modify. + + if the SACL is successfully modified; otherwise, . + + if the SACL is successfully modified; otherwise, . + + + Removes access rules that contain the same security identifier and access mask as the specified access rule from the Discretionary Access Control List (DACL) associated with this object. + The access rule to remove. + + if the access rule was successfully removed; otherwise, . + + + Removes all access rules that have the same security identifier as the specified access rule from the Discretionary Access Control List (DACL) associated with this object. + The access rule to remove. + + + Removes all access rules that exactly match the specified access rule from the Discretionary Access Control List (DACL) associated with this object. + The access rule to remove. + + + Removes audit rules that contain the same security identifier and access mask as the specified audit rule from the System Access Control List (SACL) associated with this object. + The audit rule to remove. + + if the audit rule was successfully removed; otherwise, . + + + Removes all audit rules that have the same security identifier as the specified audit rule from the System Access Control List (SACL) associated with this object. + The audit rule to remove. + + + Removes all audit rules that exactly match the specified audit rule from the System Access Control List (SACL) associated with this object. + The audit rule to remove. + + + Removes all access rules in the Discretionary Access Control List (DACL) associated with this object and then adds the specified access rule. + The access rule to reset. + + + Removes all access rules that contain the same security identifier and qualifier as the specified access rule in the Discretionary Access Control List (DACL) associated with this object and then adds the specified access rule. + The access rule to set. + + + Removes all audit rules that contain the same security identifier and qualifier as the specified audit rule in the System Access Control List (SACL) associated with this object and then adds the specified audit rule. + The audit rule to set. + + + Represents a security descriptor. A security descriptor includes an owner, a primary group, a Discretionary Access Control List (DACL), and a System Access Control List (SACL). + + + Initializes a new instance of the class from the specified array of byte values. + + if the new security descriptor is associated with a container object. + + if the new security descriptor is associated with a directory object. + The array of byte values from which to create the new object. + The offset in the array at which to begin copying. + + + Initializes a new instance of the class from the specified information. + + if the new security descriptor is associated with a container object. + + if the new security descriptor is associated with a directory object. + Flags that specify behavior of the new object. + The owner for the new object. + The primary group for the new object. + The System Access Control List (SACL) for the new object. + The Discretionary Access Control List (DACL) for the new object. + + + Initializes a new instance of the class from the specified object. + + if the new security descriptor is associated with a container object. + + if the new security descriptor is associated with a directory object. + The object from which to create the new object. + + + Initializes a new instance of the class from the specified Security Descriptor Definition Language (SDDL) string. + + if the new security descriptor is associated with a container object. + + if the new security descriptor is associated with a directory object. + The SDDL string from which to create the new object. + + + Sets the property for this instance and sets the flag. + The revision level of the new object. + The number of Access Control Entries (ACEs) this object can contain. This number is to be used only as a hint. + + + Sets the property for this instance and sets the flag. + The revision level of the new object. + The number of Access Control Entries (ACEs) this object can contain. This number should only be used as a hint. + + + Removes all access rules for the specified security identifier from the Discretionary Access Control List (DACL) associated with this object. + The security identifier for which to remove access rules. + + + Removes all audit rules for the specified security identifier from the System Access Control List (SACL) associated with this object. + The security identifier for which to remove audit rules. + + + Sets the inheritance protection for the Discretionary Access Control List (DACL) associated with this object. DACLs that are protected do not inherit access rules from parent containers. + + to protect the DACL from inheritance. + + to keep inherited access rules in the DACL; to remove inherited access rules from the DACL. + + + Sets the inheritance protection for the System Access Control List (SACL) associated with this object. SACLs that are protected do not inherit audit rules from parent containers. + + to protect the SACL from inheritance. + + to keep inherited audit rules in the SACL; to remove inherited audit rules from the SACL. + + + Gets values that specify behavior of the object. + One or more values of the enumeration combined with a logical OR operation. + + + Gets or sets the discretionary access control list (DACL) for this object. The DACL contains access rules. + The DACL for this object. + + + Gets or sets the primary group for this object. + The primary group for this object. + + + Gets a Boolean value that specifies whether the object associated with this object is a container object. + + if the object associated with this object is a container object; otherwise, . + + + Gets a Boolean value that specifies whether the Discretionary Access Control List (DACL) associated with this object is in canonical order. + + if the DACL associated with this object is in canonical order; otherwise, . + + + Gets a Boolean value that specifies whether the object associated with this object is a directory object. + + if the object associated with this object is a directory object; otherwise, . + + + Gets a Boolean value that specifies whether the System Access Control List (SACL) associated with this object is in canonical order. + + if the SACL associated with this object is in canonical order; otherwise, . + + + Gets or sets the owner of the object associated with this object. + The owner of the object associated with this object. + + + Gets or sets the System Access Control List (SACL) for this object. The SACL contains audit rules. + The SACL for this object. + + + Represents a compound Access Control Entry (ACE). + + + Initializes a new instance of the class. + Contains flags that specify information about the inheritance, inheritance propagation, and auditing conditions for the new Access Control Entry (ACE). + The access mask for the ACE. + A value from the enumeration. + The associated with the new ACE. + + + Marshals the contents of the object into the specified byte array beginning at the specified offset. + The byte array into which the contents of the is marshaled. + The offset at which to start marshaling. + + is negative or too high to allow the entire to be copied into . + + + Gets the length, in bytes, of the binary representation of the current object. This length should be used before marshaling the ACL into a binary array with the method. + The length, in bytes, of the binary representation of the current object. + + + Gets or sets the type of this object. + The type of this object. + + + Specifies the type of a object. + + + The object is used for impersonation. + + + These flags affect the security descriptor behavior. + + + Specifies that the Discretionary Access Control List (DACL) has been automatically inherited from the parent. Set by resource managers only. + + + Ignored. + + + Specifies that the DACL was obtained by a defaulting mechanism. Set by resource managers only. + + + Specifies that the DACL is not . Set by resource managers or users. + + + Specifies that the resource manager prevents auto-inheritance. Set by resource managers or users. + + + Ignored. + + + Specifies that the group was obtained by a defaulting mechanism. Set by resource managers only; should not be set by callers. + + + No control flags. + + + Specifies that the owner was obtained by a defaulting mechanism. Set by resource managers only; should not be set by callers. + + + Specifies that the contents of the Reserved field are valid. + + + Specifies that the security descriptor binary representation is in the self-relative format. This flag is always set. + + + Ignored. + + + Specifies that the System Access Control List (SACL) has been automatically inherited from the parent. Set by resource managers only. + + + Ignored. + + + Specifies that the SACL was obtained by a defaulting mechanism. Set by resource managers only. + + + Specifies that the SACL is not . Set by resource managers or users. + + + Specifies that the resource manager prevents auto-inheritance. Set by resource managers or users. + + + Represents an Access Control Entry (ACE) that is not defined by one of the members of the enumeration. + + + Returns the maximum allowed length of an opaque data blob for this object. + + + Initializes a new instance of the class. + Type of the new Access Control Entry (ACE). This value must be greater than . + Flags that specify information about the inheritance, inheritance propagation, and auditing conditions for the new ACE. + An array of byte values that contains the data for the new ACE. This value can be . The length of this array must not be greater than the value of the field, and must be a multiple of four. + The value of the parameter is not greater than or the length of the array is either greater than the value of the field or not a multiple of four. + + + Marshals the contents of the object into the specified byte array beginning at the specified offset. + The byte array into which the contents of the is marshaled. + The offset at which to start marshaling. + + is negative or too high to allow the entire to be copied into . + + + Returns the opaque data associated with this object. + An array of byte values that represents the opaque data associated with this object. + + + Sets the opaque callback data associated with this object. + An array of byte values that represents the opaque callback data for this object. + + + Gets the length, in bytes, of the binary representation of the current object. This length should be used before marshaling the ACL into a binary array with the method. + The length, in bytes, of the binary representation of the current object. + + + Gets the length of the opaque data associated with this object. + The length of the opaque callback data. + + + Represents a Discretionary Access Control List (DACL). + + + Initializes a new instance of the class with the specified values. + + if the new object is a container. + + if the new object is a directory object Access Control List (ACL). + The revision level of the new object. + The number of Access Control Entries (ACEs) this object can contain. This number is to be used only as a hint. + + + Initializes a new instance of the class with the specified values. + + if the new object is a container. + + if the new object is a directory object Access Control List (ACL). + The number of Access Control Entries (ACEs) this object can contain. This number is to be used only as a hint. + + + Initializes a new instance of the class with the specified values from the specified object. + + if the new object is a container. + + if the new object is a directory object Access Control List (ACL). + The underlying object for the new object. Specify to create an empty ACL. + + + Adds an Access Control Entry (ACE) with the specified settings to the current object. + The type of access control (allow or deny) to add. + The for which to add an ACE. + The access rule for the new ACE. + Flags that specify the inheritance properties of the new ACE. + Flags that specify the inheritance propagation properties for the new ACE. + + + Adds an Access Control Entry (ACE) with the specified settings to the current object. Use this method for directory object Access Control Lists (ACLs) when specifying the object type or the inherited object type for the new ACE. + The type of access control (allow or deny) to add. + The for which to add an ACE. + The access rule for the new ACE. + Flags that specify the inheritance properties of the new ACE. + Flags that specify the inheritance propagation properties for the new ACE. + Flags that specify if the and parameters contain non- values. + The identity of the class of objects to which the new ACE applies. + The identity of the class of child objects which can inherit the new ACE. + + + Adds an Access Control Entry (ACE) with the specified settings to the current object. + The type of access control (allow or deny) to add. + The for which to add an ACE. + The for the new access. + + + Removes the specified access control rule from the current object. + The type of access control (allow or deny) to remove. + The for which to remove an access control rule. + The access mask for the rule to be removed. + Flags that specify the inheritance properties of the rule to be removed. + Flags that specify the inheritance propagation properties for the rule to be removed. + + if this method successfully removes the specified access; otherwise, . + + + Removes the specified access control rule from the current object. Use this method for directory object Access Control Lists (ACLs) when specifying the object type or the inherited object type. + The type of access control (allow or deny) to remove. + The for which to remove an access control rule. + The access mask for the access control rule to be removed. + Flags that specify the inheritance properties of the access control rule to be removed. + Flags that specify the inheritance propagation properties for the access control rule to be removed. + Flags that specify if the and parameters contain non- values. + The identity of the class of objects to which the removed access control rule applies. + The identity of the class of child objects which can inherit the removed access control rule. + + if this method successfully removes the specified access; otherwise, . + + + Removes the specified access control rule from the current object. + The type of access control (allow or deny) to remove. + The for which to remove an access control rule. + The for which to remove access. + Returns . + + + Removes the specified Access Control Entry (ACE) from the current object. + The type of access control (allow or deny) to remove. + The for which to remove an ACE. + The access mask for the ACE to be removed. + Flags that specify the inheritance properties of the ACE to be removed. + Flags that specify the inheritance propagation properties for the ACE to be removed. + + + Removes the specified Access Control Entry (ACE) from the current object. Use this method for directory object Access Control Lists (ACLs) when specifying the object type or the inherited object type for the ACE to be removed. + The type of access control (allow or deny) to remove. + The for which to remove an ACE. + The access mask for the ACE to be removed. + Flags that specify the inheritance properties of the ACE to be removed. + Flags that specify the inheritance propagation properties for the ACE to be removed. + Flags that specify if the and parameters contain non- values. + The identity of the class of objects to which the removed ACE applies. + The identity of the class of child objects which can inherit the removed ACE. + + + Removes the specified Access Control Entry (ACE) from the current object. + The type of access control (allow or deny) to remove. + The for which to remove an ACE. + The for which to remove access. + + + Sets the specified access control for the specified object. + The type of access control (allow or deny) to set. + The for which to set an ACE. + The access rule for the new ACE. + Flags that specify the inheritance properties of the new ACE. + Flags that specify the inheritance propagation properties for the new ACE. + + + Sets the specified access control for the specified object. + The type of access control (allow or deny) to set. + The for which to set an ACE. + The access rule for the new ACE. + Flags that specify the inheritance properties of the new ACE. + Flags that specify the inheritance propagation properties for the new ACE. + Flags that specify if the and parameters contain non- values. + The identity of the class of objects to which the new ACE applies. + The identity of the class of child objects which can inherit the new ACE. + + + Sets the specified access control for the specified object. + The type of access control (allow or deny) to set. + The for which to set an ACE. + The for which to set access. + + + Represents an Access Control Entry (ACE), and is the base class for all other ACE classes. + + + Creates a deep copy of this Access Control Entry (ACE). + The object that this method creates. + + + Creates a object from the specified binary data. + The binary data from which to create the new object. + The offset at which to begin unmarshaling. + The object this method creates. + + + Determines whether the specified object is equal to the current object. + The object to compare to the current object. + + if the specified object is equal to the current object; otherwise, . + + + Marshals the contents of the object into the specified byte array beginning at the specified offset. + The byte array into which the contents of the is marshaled. + The offset at which to start marshaling. + + is negative or too high to allow the entire to be copied into . + + + Serves as a hash function for the class. The method is suitable for use in hashing algorithms and data structures like a hash table. + A hash code for the current object. + + + Determines whether the specified objects are considered equal. + The first object to compare. + The second to compare. + + if the two objects are equal; otherwise, . + + + Determines whether the specified objects are considered unequal. + The first object to compare. + The second to compare. + + if the two objects are unequal; otherwise, . + + + Gets or sets the associated with this object. + The associated with this object. + + + Gets the type of this Access Control Entry (ACE). + The type of this ACE. + + + Gets the audit information associated with this Access Control Entry (ACE). + The audit information associated with this Access Control Entry (ACE). + + + Gets the length, in bytes, of the binary representation of the current object. This length should be used before marshaling the ACL into a binary array with the method. + The length, in bytes, of the binary representation of the current object. + + + Gets flags that specify the inheritance properties of this Access Control Entry (ACE). + Flags that specify the inheritance properties of this ACE. + + + Gets a Boolean value that specifies whether this Access Control Entry (ACE) is inherited or is set explicitly. + + if this ACE is inherited; otherwise, . + + + Gets flags that specify the inheritance propagation properties of this Access Control Entry (ACE). + Flags that specify the inheritance propagation properties of this ACE. + + + Represents an access control list (ACL) and is the base class for the , , , and classes. + + + The revision level of the current . This value is returned by the property for Access Control Lists (ACLs) that are not associated with Directory Services objects. + + + The revision level of the current . This value is returned by the property for Access Control Lists (ACLs) that are associated with Directory Services objects. + + + The maximum allowed binary length of a object. + + + Initializes a new instance of the class. + + + Copies each of the current into the specified array. + The array into which copies of the objects contained by the current are placed. + The zero-based index of where the copying begins. + + + Marshals the contents of the object into the specified byte array beginning at the specified offset. + The byte array into which the contents of the is marshaled. + The offset at which to start marshaling. + + is negative or too high to allow the entire to be copied into . + + + Retrieves an object that you can use to iterate through the access control entries (ACEs) in an access control list (ACL). + An enumerator object. + + + Copies each of the current into the specified array. + The array into which copies of the objects contained by the current are placed. + The zero-based index of where the copying begins. + + + Returns a new instance of the class cast as an instance of the interface. + A new object, cast as an instance of the interface. + + + Gets the length, in bytes, of the binary representation of the current object. This length should be used before marshaling the ACL into a binary array with the method. + The length, in bytes, of the binary representation of the current object. + + + Gets the number of access control entries (ACEs) in the current object. + The number of ACEs in the current object. + + + This property is always set to . It is implemented only because it is required for the implementation of the interface. + Always . + + + Gets or sets the at the specified index. + The zero-based index of the to get or set. + The at the specified index. + + + Gets the revision level of the . + A byte value that specifies the revision level of the . + + + This property always returns . It is implemented only because it is required for the implementation of the interface. + Always returns . + + + Represents a security descriptor. A security descriptor includes an owner, a primary group, a Discretionary Access Control List (DACL), and a System Access Control List (SACL). + + + Returns an array of byte values that represents the information contained in this object. + The byte array into which the contents of the is marshaled. + The offset at which to start marshaling. + + is negative or too high to allow the entire to be copied into . + + + Returns the Security Descriptor Definition Language (SDDL) representation of the specified sections of the security descriptor that this object represents. + Specifies which sections (access rules, audit rules, primary group, owner) of the security descriptor to get. + The SDDL representation of the specified sections of the security descriptor associated with this object. + + + Returns a boolean value that specifies whether the security descriptor associated with this object can be converted to the Security Descriptor Definition Language (SDDL) format. + + if the security descriptor associated with this object can be converted to the Security Descriptor Definition Language (SDDL) format; otherwise, . + + + Gets the length, in bytes, of the binary representation of the current object. This length should be used before marshaling the ACL into a binary array with the method. + The length, in bytes, of the binary representation of the current object. + + + Gets values that specify behavior of the object. + One or more values of the enumeration combined with a logical OR operation. + + + Gets or sets the primary group for this object. + The primary group for this object. + + + Gets or sets the owner of the object associated with this object. + The owner of the object associated with this object. + + + Gets the revision level of the object. + A byte value that specifies the revision level of the . + + + Inheritance flags specify the semantics of inheritance for access control entries (ACEs). + + + The ACE is inherited by child container objects. + + + The ACE is not inherited by child objects. + + + The ACE is inherited by child leaf objects. + + + Encapsulates all Access Control Entry (ACE) types currently defined by Microsoft Corporation. All objects contain a 32-bit access mask and a object. + + + Gets or sets the access mask for this object. + The access mask for this object. + + + Gets or sets the object associated with this object. + The object associated with this object. + + + Provides the ability to control access to native objects without direct manipulation of Access Control Lists (ACLs). Native object types are defined by the enumeration. + + + Initializes a new instance of the class with the specified values. + + if the new object is a container object. + The type of securable object with which the new object is associated. + + + Initializes a new instance of the class with the specified values. We recommend that the values of the parameters passed to the constructor and persist methods be identical. + + if the new object is a container object. + The type of securable object with which the new object is associated. + The handle of the securable object with which the new object is associated. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to include in this object. + + + Initializes a new instance of the class with the specified values. We recommend that the values of the parameters passed to the constructor and persist methods be identical. + + if the new object is a container object. + The type of securable object with which the new object is associated. + The handle of the securable object with which the new object is associated. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to include in this object. + A delegate implemented by integrators that provides custom exceptions. + An object that contains contextual information about the source or destination of the exception. + + + Initializes a new instance of the class by using the specified values. + + if the new object is a container object. + The type of securable object with which the new object is associated. + A delegate implemented by integrators that provides custom exceptions. + An object that contains contextual information about the source or destination of the exception. + + + Initializes a new instance of the class with the specified values. We recommend that the values of the parameters passed to the constructor and persist methods be identical. + + if the new object is a container object. + The type of securable object with which the new object is associated. + The name of the securable object with which the new object is associated. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to include in this object. + + + Initializes a new instance of the class with the specified values. We recommend that the values of the parameters passed to the constructor and persist methods be identical. + + if the new object is a container object. + The type of securable object with which the new object is associated. + The name of the securable object with which the new object is associated. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to include in this object. + A delegate implemented by integrators that provides custom exceptions. + An object that contains contextual information about the source or destination of the exception. + + + Saves the specified sections of the security descriptor associated with this object to permanent storage. We recommend.persist that the values of the parameters passed to the constructor and persist methods be identical. + The handle of the securable object with which this object is associated. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to save. + The securable object with which this object is associated is either a directory or a file, and that directory or file could not be found. + + + Saves the specified sections of the security descriptor associated with this object to permanent storage. We recommend that the values of the parameters passed to the constructor and persist methods be identical. + The handle of the securable object with which this object is associated. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to save. + An object that contains contextual information about the source or destination of the exception. + The securable object with which this object is associated is either a directory or a file, and that directory or file could not be found. + + + Saves the specified sections of the security descriptor associated with this object to permanent storage. We recommend that the values of the parameters passed to the constructor and persist methods be identical. + The name of the securable object with which this object is associated. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to save. + The securable object with which this object is associated is either a directory or a file, and that directory or file could not be found. + + + Saves the specified sections of the security descriptor associated with this object to permanent storage. We recommend that the values of the parameters passed to the constructor and persist methods be identical. + The name of the securable object with which this object is associated. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to save. + An object that contains contextual information about the source or destination of the exception. + The securable object with which this object is associated is either a directory or a file, and that directory or file could not be found. + + + Provides a way for integrators to map numeric error codes to specific exceptions that they create. + The numeric error code. + The name of the securable object with which the object is associated. + The handle of the securable object with which the object is associated. + An object that contains contextual information about the source or destination of the exception. + The this delegate creates. + + + Represents a combination of a user's identity, an access mask, and an access control type (allow or deny). An object also contains information about the type of object to which the rule applies, the type of child object that can inherit the rule, how the rule is inherited by child objects, and how that inheritance is propagated. + + + Initializes a new instance of the class with the specified values. + The identity to which the access rule applies. It must be an object that can be cast as a . + The access mask of this rule. The access mask is a 32-bit collection of anonymous bits, the meaning of which is defined by the individual integrators. + + if this rule is inherited from a parent container. + Specifies the inheritance properties of the access rule. + Specifies whether inherited access rules are automatically propagated. The propagation flags are ignored if is set to . + The type of object to which the rule applies. + The type of child object that can inherit the rule. + Specifies whether this rule allows or denies access. + The value of the parameter cannot be cast as a , or the parameter contains an invalid value. + The value of the parameter is 0, or the or parameters contain unrecognized flag values. + + + Gets the type of child object that can inherit the object. + The type of child object that can inherit the object. + + + Gets flags that specify if the and properties of the object contain valid values. + + specifies that the property contains a valid value. specifies that the property contains a valid value. These values can be combined with a logical OR. + + + Gets the type of object to which the applies. + The type of object to which the applies. + + + Controls access to Directory Services objects. This class represents an Access Control Entry (ACE) associated with a directory object. + + + Initiates a new instance of the class. + The inheritance, inheritance propagation, and auditing conditions for the new Access Control Entry (ACE). + The use of the new ACE. + The access mask for the ACE. + The associated with the new ACE. + Whether the and parameters contain valid object GUIDs. + A GUID that identifies the object type to which the new ACE applies. + A GUID that identifies the object type that can inherit the new ACE. + + if the new ACE is a callback type ACE. + Opaque data associated with the new ACE. This is allowed only for callback ACE types. The length of this array must not be greater than the return value of the method. + The qualifier parameter contains an invalid value or the length of the value of the opaque parameter is greater than the return value of the method. + + + Marshals the contents of the object into the specified byte array beginning at the specified offset. + The byte array into which the contents of the is marshaled. + The offset at which to start marshaling. + + is negative or too high to allow the entire to be copied into . + + + Returns the maximum allowed length, in bytes, of an opaque data BLOB for callback Access Control Entries (ACEs). + True if the is a callback ACE type. + The maximum allowed length, in bytes, of an opaque data BLOB for callback Access Control Entries (ACEs). + + + Gets the length, in bytes, of the binary representation of the current object. This length should be used before marshaling the ACL into a binary array with the method. + The length, in bytes, of the binary representation of the current object. + + + Gets or sets the GUID of the object type that can inherit the Access Control Entry (ACE) that this object represents. + The GUID of the object type that can inherit the Access Control Entry (ACE) that this object represents. + + + Gets or sets flags that specify whether the and properties contain values that identify valid object types. + On or more members of the enumeration combined with a logical OR operation. + + + Gets or sets the GUID of the object type associated with this object. + The GUID of the object type associated with this object. + + + Specifies the presence of object types for Access Control Entries (ACEs). + + + The type of object that can inherit the ACE. + + + No object types are present. + + + The type of object that is associated with the ACE is present. + + + Represents a combination of a user's identity, an access mask, and audit conditions. An object also contains information about the type of object to which the rule applies, the type of child object that can inherit the rule, how the rule is inherited by child objects, and how that inheritance is propagated. + + + Initializes a new instance of the class. + The identity to which the access rule applies. It must be an object that can be cast as a . + The access mask of this rule. The access mask is a 32-bit collection of anonymous bits, the meaning of which is defined by the individual integrators. + + if this rule is inherited from a parent container. + Specifies the inheritance properties of the access rule. + Whether inherited access rules are automatically propagated. The propagation flags are ignored if is set to . + The type of object to which the rule applies. + The type of child object that can inherit the rule. + The audit conditions. + The value of the parameter cannot be cast as a , or the parameter contains an invalid value. + The value of the parameter is 0, or the or parameters contain unrecognized flag values. + + + Gets the type of child object that can inherit the object. + The type of child object that can inherit the object. + + + + and properties of the object contain valid values. + + specifies that the property contains a valid value. specifies that the property contains a valid value. These values can be combined with a logical OR. + + + Gets the type of object to which the applies. + The type of object to which the applies. + + + Provides the ability to control access to objects without direct manipulation of Access Control Lists (ACLs). This class is the abstract base class for the and classes. + + + Initializes a new instance of the class. + + + Initializes a new instance of the class. + + if the new object is a container object. + True if the new object is a directory object. + + + Initializes a new instance of the class. + The of the new instance. + + + Initializes a new instance of the class with the specified values. + The identity to which the access rule applies. It must be an object that can be cast as a . + The access mask of this rule. The access mask is a 32-bit collection of anonymous bits, the meaning of which is defined by the individual integrators. + true if this rule is inherited from a parent container. + Specifies the inheritance properties of the access rule. + Specifies whether inherited access rules are automatically propagated. The propagation flags are ignored if is set to . + Specifies the valid access control type. + The object that this method creates. + + + Initializes a new instance of the class with the specified values. + The identity to which the audit rule applies. It must be an object that can be cast as a . + The access mask of this rule. The access mask is a 32-bit collection of anonymous bits, the meaning of which is defined by the individual integrators. + + if this rule is inherited from a parent container. + Specifies the inheritance properties of the audit rule. + Specifies whether inherited audit rules are automatically propagated. The propagation flags are ignored if is set to . + Specifies the conditions for which the rule is audited. + The object that this method creates. + + + Gets the primary group associated with the specified owner. + The owner for which to get the primary group. + The primary group associated with the specified owner. + + + Gets the owner associated with the specified primary group. + The primary group for which to get the owner. + + is . + + is not an type. + Some or all identity references could not be translated. + A Win32 error code was returned. + The owner associated with the specified group. + + + Returns an array of byte values that represents the security descriptor information for this object. + An array of byte values that represents the security descriptor for this object. This method returns if there is no security information in this object. + + + Returns the Security Descriptor Definition Language (SDDL) representation of the specified sections of the security descriptor associated with this object. + Specifies which sections (access rules, audit rules, primary group, owner) of the security descriptor to get. + The SDDL representation of the specified sections of the security descriptor associated with this object. + + + Returns a Boolean value that specifies whether the security descriptor associated with this object can be converted to the Security Descriptor Definition Language (SDDL) format. + + if the security descriptor associated with this object can be converted to the Security Descriptor Definition Language (SDDL) format; otherwise, . + + + Applies the specified modification to the Discretionary Access Control List (DACL) associated with this object. + The modification to apply to the DACL. + The access rule to modify. + + if the DACL is successfully modified; otherwise, . + + if the DACL is successfully modified; otherwise, . + + + Applies the specified modification to the Discretionary Access Control List (DACL) associated with this object. + The modification to apply to the DACL. + The access rule to modify. + + if the DACL is actually modified; otherwise, . + + if the DACL is successfully modified; otherwise, . + + + Applies the specified modification to the System Access Control List (SACL) associated with this object. + The modification to apply to the SACL. + The audit rule to modify. + + if the SACL is actually modified; otherwise, . + + if the SACL is successfully modified; otherwise, . + + + Applies the specified modification to the System Access Control List (SACL) associated with this object. + The modification to apply to the SACL. + The audit rule to modify. + + if the SACL is successfully modified; otherwise, . + + if the SACL is successfully modified; otherwise, . + + + Saves the specified sections of the security descriptor associated with this object to permanent storage. We recommend that the values of the parameters passed to the constructor and persist methods be identical. + + to enable the privilege that allows the caller to take ownership of the object. + The name used to retrieve the persisted information. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to save. + + + Saves the specified sections of the security descriptor associated with this object to permanent storage. We recommend that the values of the parameters passed to the constructor and persist methods be identical. + The handle used to retrieve the persisted information. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to save. + + + Saves the specified sections of the security descriptor associated with this object to permanent storage. We recommend that the values of the parameters passed to the constructor and persist methods be identical. + The name used to retrieve the persisted information. + One of the enumeration values that specifies the sections of the security descriptor (access rules, audit rules, owner, primary group) of the securable object to save. + + + Removes all access rules associated with the specified . + The for which to remove all access rules. + All access rules are not in canonical order. + + + Removes all audit rules associated with the specified . + The for which to remove all audit rules. + All audit rules are not in canonical order. + + + Locks this object for read access. + + + Unlocks this object for read access. + + + Sets or removes protection of the access rules associated with this object. Protected access rules cannot be modified by parent objects through inheritance. + + to protect the access rules associated with this object from inheritance; to allow inheritance. + + to preserve inherited access rules; to remove inherited access rules. This parameter is ignored if is . + This method attempts to remove inherited rules from a non-canonical Discretionary Access Control List (DACL). + + + Sets or removes protection of the audit rules associated with this object. Protected audit rules cannot be modified by parent objects through inheritance. + + to protect the audit rules associated with this object from inheritance; to allow inheritance. + + to preserve inherited audit rules; to remove inherited audit rules. This parameter is ignored if is . + This method attempts to remove inherited rules from a non-canonical System Access Control List (SACL). + + + Sets the primary group for the security descriptor associated with this object. + The primary group to set. + + + Sets the owner for the security descriptor associated with this object. + The owner to set. + + + Sets the security descriptor for this object from the specified array of byte values. + The array of bytes from which to set the security descriptor. + + + Sets the specified sections of the security descriptor for this object from the specified array of byte values. + The array of bytes from which to set the security descriptor. + The sections (access rules, audit rules, owner, primary group) of the security descriptor to set. + + + Sets the security descriptor for this object from the specified Security Descriptor Definition Language (SDDL) string. + The SDDL string from which to set the security descriptor. + + + Sets the specified sections of the security descriptor for this object from the specified Security Descriptor Definition Language (SDDL) string. + The SDDL string from which to set the security descriptor. + The sections (access rules, audit rules, owner, primary group) of the security descriptor to set. + + + Locks this object for write access. + + + Unlocks this object for write access. + + + Gets the of the securable object associated with this object. + The type of the securable object associated with this object. + + + Gets or sets a Boolean value that specifies whether the access rules associated with this object have been modified. + + if the access rules associated with this object have been modified; otherwise, . + + + Gets the of the object associated with the access rules of this object. The object must be an object that can be cast as a object. + The type of the object associated with the access rules of this object. + + + Gets a Boolean value that specifies whether the access rules associated with this object are in canonical order. + + if the access rules are in canonical order; otherwise, . + + + Gets a Boolean value that specifies whether the Discretionary Access Control List (DACL) associated with this object is protected. + + if the DACL is protected; otherwise, . + + + Gets a Boolean value that specifies whether the audit rules associated with this object are in canonical order. + + if the audit rules are in canonical order; otherwise, . + + + Gets a Boolean value that specifies whether the System Access Control List (SACL) associated with this object is protected. + + if the SACL is protected; otherwise, . + + + Gets or sets a Boolean value that specifies whether the audit rules associated with this object have been modified. + + if the audit rules associated with this object have been modified; otherwise, . + + + Gets the object associated with the audit rules of this object. The object must be an object that can be cast as a object. + The type of the object associated with the audit rules of this object. + + + Gets or sets a Boolean value that specifies whether the group associated with the securable object has been modified. + + if the group associated with the securable object has been modified; otherwise, . + + + Gets a Boolean value that specifies whether this object is a container object. + + if the object is a container object; otherwise, . + + + Gets a Boolean value that specifies whether this object is a directory object. + + if the object is a directory object; otherwise, . + + + Gets or sets a Boolean value that specifies whether the owner of the securable object has been modified. + + if the owner of the securable object has been modified; otherwise, . + + + Gets the security descriptor for this instance. + The security descriptor for this instance. + + + Provides the ability to control access to objects without direct manipulation of Access Control Lists (ACLs); also grants the ability to type-cast access rights. + The access rights for the object. + + + Initializes a new instance of the ObjectSecurity`1 class. + + if the new object is a container object. + The type of resource. + + + Initializes a new instance of the ObjectSecurity`1 class. + + if the new object is a container object. + The type of resource. + A handle. + The sections to include. + + + Initializes a new instance of the ObjectSecurity`1 class. + + if the new object is a container object. + The type of resource. + A handle. + The sections to include. + A delegate implemented by integrators that provides custom exceptions. + An object that contains contextual information about the source or destination of the exception. + + + Initializes a new instance of the ObjectSecurity`1 class. + + if the new object is a container object. + The type of resource. + The name of the securable object with which the new object is associated. + The sections to include. + + + Initializes a new instance of the ObjectSecurity`1 class. + + if the new object is a container object. + The type of resource. + The name of the securable object with which the new object is associated. + The sections to include. + A delegate implemented by integrators that provides custom exceptions. + An object that contains contextual information about the source or destination of the exception. + + + Initializes a new instance of the ObjectAccessRule class that represents a new access control rule for the associated security object. + Represents a user account. + The access type. + + if the access rule is inherited; otherwise, . + Specifies how to propagate access masks to child objects. + Specifies how to propagate Access Control Entries (ACEs) to child objects. + Specifies whether access is allowed or denied. + Represents a new access control rule for the specified user, with the specified access rights, access control, and flags. + + + Adds the specified access rule to the Discretionary Access Control List (DACL) associated with this ObjectSecurity`1 object. + The rule to add. + + + Adds the specified audit rule to the System Access Control List (SACL) associated with this ObjectSecurity`1 object. + The audit rule to add. + + + Initializes a new instance of the class representing the specified audit rule for the specified user. + Represents a user account. + An integer that specifies an access type. + + if the access rule is inherited; otherwise, . + Specifies how to propagate access masks to child objects. + Specifies how to propagate Access Control Entries (ACEs) to child objects. + Describes the type of auditing to perform. + The specified audit rule for the specified user. + + + Saves the security descriptor associated with this ObjectSecurity`1 object to permanent storage, using the specified handle. + The handle of the securable object with which this ObjectSecurity`1 object is associated. + + + Saves the security descriptor associated with this ObjectSecurity`1 object to permanent storage, using the specified name. + The name of the securable object with which this ObjectSecurity`1 object is associated. + + + Removes access rules that contain the same security identifier and access mask as the specified access rule from the Discretionary Access Control List (DACL) associated with this ObjectSecurity`1 object. + The rule to remove. + + if the access rule was successfully removed; otherwise, . + + + Removes all access rules that have the same security identifier as the specified access rule from the Discretionary Access Control List (DACL) associated with this ObjectSecurity`1 object. + The access rule to remove. + + + Removes all access rules that exactly match the specified access rule from the Discretionary Access Control List (DACL) associated with this ObjectSecurity`1 object. + The access rule to remove. + + + Removes audit rules that contain the same security identifier and access mask as the specified audit rule from the System Access Control List (SACL) associated with this ObjectSecurity`1 object. + The audit rule to remove + + if the object was removed; otherwise, . + + + Removes all audit rules that have the same security identifier as the specified audit rule from the System Access Control List (SACL) associated with this ObjectSecurity`1 object. + The audit rule to remove. + + + Removes all audit rules that exactly match the specified audit rule from the System Access Control List (SACL) associated with this ObjectSecurity`1 object. + The audit rule to remove. + + + Removes all access rules in the Discretionary Access Control List (DACL) associated with this ObjectSecurity`1 object and then adds the specified access rule. + The access rule to reset. + + + Removes all access rules that contain the same security identifier and qualifier as the specified access rule in the Discretionary Access Control List (DACL) associated with this ObjectSecurity`1 object and then adds the specified access rule. + The access rule to set. + + + Removes all audit rules that contain the same security identifier and qualifier as the specified audit rule in the System Access Control List (SACL) associated with this ObjectSecurity`1 object and then adds the specified audit rule. + The audit rule to set. + + + Gets the Type of the securable object associated with this ObjectSecurity`1 object. + The type of the securable object associated with the current instance. + + + Gets the Type of the object associated with the access rules of this ObjectSecurity`1 object. + The Type of the object associated with the access rules of the current instance. + + + Gets the Type object associated with the audit rules of this ObjectSecurity`1 object. + The Type object associated with the audit rules of the current instance. + + + The exception that is thrown when a method in the namespace attempts to enable a privilege that it does not have. + + + Initializes a new instance of the class. + + + Initializes a new instance of the class by using the specified privilege. + The privilege that is not enabled. + + + Initializes a new instance of the class by using the specified exception. + The privilege that is not enabled. + The exception that is the cause of the current exception. If the innerException parameter is not a null reference ( in Visual Basic), the current exception is raised in a block that handles the inner exception. + + + Sets the parameter with information about the exception. + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Gets the name of the privilege that is not enabled. + The name of the privilege that the method failed to enable. + + + Specifies how Access Control Entries (ACEs) are propagated to child objects. These flags are significant only if inheritance flags are present. + + + Specifies that the ACE is propagated only to child objects. This includes both container and leaf child objects. + + + Specifies that no inheritance flags are set. + + + Specifies that the ACE is not propagated to child objects. + + + Represents an Access Control Entry (ACE) that contains a qualifier. The qualifier, represented by an object, specifies whether the ACE allows access, denies access, causes system audits, or causes system alarms. The class is the abstract base class for the and classes. + + + Returns the opaque callback data associated with this object. + An array of byte values that represents the opaque callback data associated with this object. + + + Sets the opaque callback data associated with this object. + An array of byte values that represents the opaque callback data for this object. + + + Gets a value that specifies whether the ACE allows access, denies access, causes system audits, or causes system alarms. + A value that specifies whether the ACE allows access, denies access, causes system audits, or causes system alarms. + + + Specifies whether this object contains callback data. + + if this object contains callback data; otherwise, false. + + + Gets the length of the opaque callback data associated with this object. This property is valid only for callback Access Control Entries (ACEs). + The length of the opaque callback data. + + + Represents an Access Control List (ACL). + + + Initializes a new instance of the class with the specified revision level. + The revision level of the new Access Control List (ACL). + The number of Access Control Entries (ACEs) this object can contain. This number is to be used only as a hint. + + + Initializes a new instance of the class from the specified binary form. + An array of byte values that represent an Access Control List (ACL). + The offset in the parameter at which to begin unmarshaling data. + + + Marshals the contents of the object into the specified byte array beginning at the specified offset. + The byte array into which the contents of the is marshaled. + The offset at which to start marshaling. + + is negative or too high to allow the entire to be copied into . + + + Inserts the specified Access Control Entry (ACE) at the specified index. + The position at which to add the new ACE. Specify the value of the property to insert an ACE at the end of the object. + The ACE to insert. + + is negative or too high to allow the entire to be copied into . + + + Removes the Access Control Entry (ACE) at the specified location. + The zero-based index of the ACE to remove. + The value of the parameter is higher than the value of the property minus one or is negative. + + + Gets the length, in bytes, of the binary representation of the current object. This length should be used before marshaling the ACL into a binary array with the method. + The length, in bytes, of the binary representation of the current object. + + + Gets the number of access control entries (ACEs) in the current object. + The number of ACEs in the current object. + + + Gets or sets the Access Control Entry (ACE) at the specified index. + The zero-based index of the ACE to get or set. + The ACE at the specified index. + + + Gets the revision level of the . + A byte value that specifies the revision level of the . + + + Represents a security descriptor. A security descriptor includes an owner, a primary group, a Discretionary Access Control List (DACL), and a System Access Control List (SACL). + + + Initializes a new instance of the class from the specified array of byte values. + The array of byte values from which to create the new object. + The offset in the array at which to begin copying. + + + Initializes a new instance of the class with the specified values. + Flags that specify behavior of the new object. + The owner for the new object. + The primary group for the new object. + The System Access Control List (SACL) for the new object. + The Discretionary Access Control List (DACL) for the new object. + + + Initializes a new instance of the class from the specified Security Descriptor Definition Language (SDDL) string. + The SDDL string from which to create the new object. + The SDDL form of a security descriptor object is invalid. + + + Sets the property of this object to the specified value. + One or more values of the enumeration combined with a logical OR operation. + + + Gets values that specify behavior of the object. + One or more values of the enumeration combined with a logical OR operation. + + + Gets or sets the Discretionary Access Control List (DACL) for this object. The DACL contains access rules. + The DACL for this object. + + + Gets or sets the primary group for this object. + The primary group for this object. + + + Gets or sets the owner of the object associated with this object. + The owner of the object associated with this object. + + + Gets or sets a byte value that represents the resource manager control bits associated with this object. + A byte value that represents the resource manager control bits associated with this object. + + + Gets or sets the System Access Control List (SACL) for this object. The SACL contains audit rules. + The SACL for this object. + + + Specifies the defined native object types. + + + A directory service (DS) object or a property set or property of a directory service object. + + + A directory service object and all of its property sets and properties. + + + A file or directory. + + + A local kernel object. + + + A network share. + + + A printer. + + + An object defined by a provider. + + + A registry key. + + + An object for a registry entry under WOW64. + + + A Windows service. + + + An unknown object type. + + + A window station or desktop object on the local computer. + + + A Windows Management Instrumentation (WMI) object. + + + Specifies the section of a security descriptor to be queried or set. + + + Specifies the discretionary access control list (DACL). + + + Specifies the primary group identifier. + + + Specifies the owner identifier. + + + Specifies the system access control list (SACL). + + + Represents a System Access Control List (SACL). + + + Initializes a new instance of the class with the specified values. + + if the new object is a container. + + if the new object is a directory object Access Control List (ACL). + The revision level of the new object. + The number of Access Control Entries (ACEs) this object can contain. This number is to be used only as a hint. + + + Initializes a new instance of the class with the specified values. + + if the new object is a container. + + if the new object is a directory object Access Control List (ACL). + The number of Access Control Entries (ACEs) this object can contain. This number is to be used only as a hint. + + + Initializes a new instance of the class with the specified values from the specified object. + + if the new object is a container. + + if the new object is a directory object Access Control List (ACL). + The underlying object for the new object. Specify to create an empty ACL. + + + Adds an audit rule to the current object. + The type of audit rule to add. + The for which to add an audit rule. + The access mask for the new audit rule. + Flags that specify the inheritance properties of the new audit rule. + Flags that specify the inheritance propagation properties for the new audit rule. + + + Adds an audit rule with the specified settings to the current object. Use this method for directory object Access Control Lists (ACLs) when specifying the object type or the inherited object type for the new audit rule. + The type of audit rule to add. + The for which to add an audit rule. + The access mask for the new audit rule. + Flags that specify the inheritance properties of the new audit rule. + Flags that specify the inheritance propagation properties for the new audit rule. + Flags that specify if the and parameters contain non- values. + The identity of the class of objects to which the new audit rule applies. + The identity of the class of child objects which can inherit the new audit rule. + + + Adds an audit rule to the current object. + The for which to add an audit rule. + The for the new audit rule. + + + Removes the specified audit rule from the current object. + The type of audit rule to remove. + The for which to remove an audit rule. + The access mask for the rule to be removed. + Flags that specify the inheritance properties of the rule to be removed. + Flags that specify the inheritance propagation properties for the rule to be removed. + + if this method successfully removes the specified audit rule; otherwise, . + + + Removes the specified audit rule from the current object. Use this method for directory object Access Control Lists (ACLs) when specifying the object type or the inherited object type. + The type of audit rule to remove. + The for which to remove an audit rule. + The access mask for the rule to be removed. + Flags that specify the inheritance properties of the rule to be removed. + Flags that specify the inheritance propagation properties for the rule to be removed. + Flags that specify if the and parameters contain non- values. + The identity of the class of objects to which the removed audit control rule applies. + The identity of the class of child objects which can inherit the removed audit rule. + + if this method successfully removes the specified audit rule; otherwise, . + + + Removes the specified audit rule from the current object. + The for which to remove an audit rule. + The for which to remove an audit rule. + + if this method successfully removes the specified audit rule; otherwise, . + + + Removes the specified audit rule from the current object. + The type of audit rule to remove. + The for which to remove an audit rule. + The access mask for the rule to be removed. + Flags that specify the inheritance properties of the rule to be removed. + Flags that specify the inheritance propagation properties for the rule to be removed. + + + Removes the specified audit rule from the current object. Use this method for directory object Access Control Lists (ACLs) when specifying the object type or the inherited object type. + The type of audit rule to remove. + The for which to remove an audit rule. + The access mask for the rule to be removed. + Flags that specify the inheritance properties of the rule to be removed. + Flags that specify the inheritance propagation properties for the rule to be removed. + Flags that specify if the and parameters contain non- values. + The identity of the class of objects to which the removed audit control rule applies. + The identity of the class of child objects which can inherit the removed audit rule. + + + Removes the specified audit rule from the current object. + The for which to remove an audit rule. + The for the rule to be removed. + + + Sets the specified audit rule for the specified object. + The audit condition to set. + The for which to set an audit rule. + The access mask for the new audit rule. + Flags that specify the inheritance properties of the new audit rule. + Flags that specify the inheritance propagation properties for the new audit rule. + + + Sets the specified audit rule for the specified object. Use this method for directory object Access Control Lists (ACLs) when specifying the object type or the inherited object type. + The audit condition to set. + The for which to set an audit rule. + The access mask for the new audit rule. + Flags that specify the inheritance properties of the new audit rule. + Flags that specify the inheritance propagation properties for the new audit rule. + Flags that specify if the and parameters contain non- values. + The identity of the class of objects to which the new audit rule applies. + The identity of the class of child objects which can inherit the new audit rule. + + + Sets the specified audit rule for the specified object. + The for which to set an audit rule. + The for which to set an audit rule. + + + \ No newline at end of file diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Security.Principal.Windows.dll b/SOURCE/Application/Plugins/ModellingWizard/System.Security.Principal.Windows.dll new file mode 100644 index 0000000..54f7829 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.Security.Principal.Windows.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Security.Principal.Windows.xml b/SOURCE/Application/Plugins/ModellingWizard/System.Security.Principal.Windows.xml new file mode 100644 index 0000000..def5cce --- /dev/null +++ b/SOURCE/Application/Plugins/ModellingWizard/System.Security.Principal.Windows.xml @@ -0,0 +1,1091 @@ + + + + System.Security.Principal.Windows + + + + Provides a safe handle to a Windows thread or process access token. For more information, see Access Tokens. + + + Initializes a new instance of the class. + An object that represents the pre-existing handle to use. Using returns an invalid handle. + + + Returns an invalid handle by instantiating a object with . + Returns a object. + + + Gets a value that indicates whether the handle is invalid. + + if the handle is not valid; otherwise, . + + + Represents an exception for a principal whose identity could not be mapped to a known identity. + + + Initializes a new instance of the class. + + + Initializes a new instance of the class by using the specified error message. + The error message that explains the reason for the exception. + + + Initializes a new instance of the class by using the specified error message and inner exception. + The error message that explains the reason for the exception. + The exception that is the cause of the current exception. If is not null, the current exception is raised in a block that handles the inner exception. + + + Gets serialization information with the data needed to create an instance of this object. + The object that holds the serialized object data about the exception being thrown. + The object that contains contextual information about the source or destination. + + + Represents the collection of unmapped identities for an exception. + The collection of unmapped identities. + + + Represents an identity and is the base class for the and classes. This class does not provide a public constructor, and therefore cannot be inherited. + + + Returns a value that indicates whether the specified object equals this instance of the class. + An object to compare with this instance, or a null reference. + + if is an object with the same underlying type and value as this instance; otherwise, . + + + Serves as a hash function for . is suitable for use in hashing algorithms and data structures like a hash table. + The hash code for this object. + + + Returns a value that indicates whether the specified type is a valid translation type for the class. + The type being queried for validity to serve as a conversion from . The following target types are valid: + + + + if is a valid translation type for the class; otherwise, . + + + Compares two objects to determine whether they are equal. They are considered equal if they have the same canonical name representation as the one returned by the property or if they are both . + The left operand to use for the equality comparison. This parameter can be . + The right operand to use for the equality comparison. This parameter can be . + + if and are equal; otherwise, . + + + Compares two objects to determine whether they are not equal. They are considered not equal if they have different canonical name representations than the one returned by the property or if one of the objects is and the other is not. + The left operand to use for the inequality comparison. This parameter can be . + The right operand to use for the inequality comparison. This parameter can be . + + if and are not equal; otherwise, . + + + Returns the string representation of the identity represented by the object. + The identity in string format. + + + Translates the account name represented by the object into another -derived type. + The target type for the conversion from . + The converted identity. + + + Gets the string value of the identity represented by the object. + The string value of the identity represented by the object. + + + Represents a collection of objects and provides a means of converting sets of -derived objects to -derived types. + + + Initializes a new instance of the class with zero items in the collection. + + + Initializes a new instance of the class by using the specified initial size. + The initial number of items in the collection. The value of is a hint only; it is not necessarily the maximum number of items created. + + + Adds an object to the collection. + The object to add to the collection. + + is . + + + Clears all objects from the collection. + + + Indicates whether the collection contains the specified object. + The object to check for. + + is . + + if the collection contains the specified object. + + + Copies the collection to an array, starting at the specified index. + An array object to which the collection is to be copied. + The zero-based index in where the collection is to be copied. + + + Gets an enumerator that can be used to iterate through the collection. + An enumerator for the collection. + + + Removes the specified object from the collection. + The object to remove. + + is . + + if the specified object was removed from the collection. + + + Gets an enumerator that can be used to iterate through the collection. + An enumerator for the collection. + + + Converts the objects in the collection to the specified type. Calling this method is the same as calling with the second parameter set to , which means that exceptions will not be thrown for items that fail conversion. + The type to which items in the collection are being converted. + A collection that represents the converted contents of the original collection. + + + Converts the objects in the collection to the specified type and uses the specified fault tolerance to handle or ignore errors associated with a type not having a conversion mapping. + The type to which items in the collection are being converted. + A Boolean value that determines how conversion errors are handled. + + If is , conversion errors due to a mapping not being found for the translation result in a failed conversion and exceptions being thrown. + + If is , types that failed to convert due to a mapping not being found for the translation are copied without being converted into the collection being returned. + A collection that represents the converted contents of the original collection. + + + Gets the number of items in the collection. + The number of objects in the collection. + + + Gets or sets the node at the specified index of the collection. + The zero-based index in the collection. + The at the specified index in the collection. If is greater than or equal to the number of nodes in the collection, the return value is . + + + Gets a value indicating whether the is read-only. + + if the is read-only; otherwise, . + + + Represents a user or group account. + + + Initializes a new instance of the class by using the specified name. + The name used to create the object. This parameter cannot be or an empty string. + + is . + + is an empty string. + + -or- + + is too long. + + + Initializes a new instance of the class by using the specified domain name and account name. + The name of the domain. This parameter can be or an empty string. Domain names that are null values are treated like an empty string. + The name of the account. This parameter cannot be or an empty string. + + is . + + is an empty string. + + -or- + + is too long. + + -or- + + is too long. + + + Returns a value that indicates whether this object is equal to a specified object. + An object to compare with this object, or . + + if is an object with the same underlying type and value as this object; otherwise, . + + + Serves as a hash function for the current object. The method is suitable for hashing algorithms and data structures like a hash table. + A hash value for the current object. + + + Returns a value that indicates whether the specified type is a valid translation type for the class. + The type being queried for validity to serve as a conversion from . The following target types are valid: + + - + + - + + if is a valid translation type for the class; otherwise . + + + Compares two objects to determine whether they are equal. They are considered equal if they have the same canonical name representation as the one returned by the property or if they are both . + The left operand to use for the equality comparison. This parameter can be . + The right operand to use for the equality comparison. This parameter can be . + + if and are equal; otherwise . + + + Compares two objects to determine whether they are not equal. They are considered not equal if they have different canonical name representations than the one returned by the property or if one of the objects is and the other is not. + The left operand to use for the inequality comparison. This parameter can be . + The right operand to use for the inequality comparison. This parameter can be . + + if and are not equal; otherwise . + + + Returns the account name, in Domain \ Account format, for the account represented by the object. + The account name, in Domain \ Account format. + + + Translates the account name represented by the object into another -derived type. + The target type for the conversion from . The target type must be a type that is considered valid by the method. + + is . + + is not an type. + Some or all identity references could not be translated. + The source account name is too long. + + -or- + + A Win32 error code was returned. + The converted identity. + + + Returns a string representation of this object. + The string representation of this object. + + + Represents a security identifier (SID) and provides marshaling and comparison operations for SIDs. + + + Returns the maximum size, in bytes, of the binary representation of the security identifier. + + + Returns the minimum size, in bytes, of the binary representation of the security identifier. + + + Initializes a new instance of the class by using a specified binary representation of a security identifier (SID). + The byte array that represents the SID. + The byte offset to use as the starting index in . + + + Initializes a new instance of the class by using an integer that represents the binary form of a security identifier (SID). + An integer that represents the binary form of a SID. + + + Initializes a new instance of the class by using the specified well known security identifier (SID) type and domain SID. + One of the enumeration values. This value must not be . + The domain SID. This value is required for the following values. This parameter is ignored for any other values. + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + + Initializes a new instance of the class by using the specified security identifier (SID) in Security Descriptor Definition Language (SDDL) format. + SDDL string for the SID used to create the object. + + + Compares the current object with the specified object. + The object to compare with the current object. + A signed number indicating the relative values of this instance and . + + Return Value Description Less than zero This instance is less than . Zero This instance is equal to . Greater than zero This instance is greater than . + + + Returns a value that indicates whether this object is equal to a specified object. + An object to compare with this object, or . + + if is an object with the same underlying type and value as this object; otherwise, . + + + Indicates whether the specified object is equal to the current object. + The object to compare with the current object. + + if the value of is equal to the value of the current object. + + + Copies the binary representation of the specified security identifier (SID) represented by the class to a byte array. + The byte array to receive the copied SID. + The byte offset to use as the starting index in . + + + Serves as a hash function for the current object. The method is suitable for hashing algorithms and data structures like a hash table. + A hash value for the current object. + + + Returns a value that indicates whether the security identifier (SID) represented by this object is a valid Windows account SID. + + if the SID represented by this object is a valid Windows account SID; otherwise, . + + + Returns a value that indicates whether the security identifier (SID) represented by this object is from the same domain as the specified SID. + The SID to compare with this object. + + if the SID represented by this object is in the same domain as the SID; otherwise, . + + + Returns a value that indicates whether the specified type is a valid translation type for the class. + The type being queried for validity to serve as a conversion from . The following target types are valid: + + - + + - + + if is a valid translation type for the class; otherwise, . + + + Returns a value that indicates whether the object matches the specified well known security identifier (SID) type. + A value to compare with the object. + + if is the SID type for the object; otherwise, . + + + Compares two objects to determine whether they are equal. They are considered equal if they have the same canonical representation as the one returned by the property or if they are both . + The left operand to use for the equality comparison. This parameter can be . + The right operand to use for the equality comparison. This parameter can be . + + if and are equal; otherwise, . + + + Compares two objects to determine whether they are not equal. They are considered not equal if they have different canonical name representations than the one returned by the property or if one of the objects is and the other is not. + The left operand to use for the inequality comparison. This parameter can be . + The right operand to use for the inequality comparison. This parameter can be . + + if and are not equal; otherwise, . + + + Returns the security identifier (SID), in Security Descriptor Definition Language (SDDL) format, for the account represented by the object. An example of the SDDL format is S-1-5-9. + The SID, in SDDL format, for the account represented by the object. + + + Translates the account name represented by the object into another -derived type. + The target type for the conversion from . The target type must be a type that is considered valid by the method. + + is . + + is not an type. + Some or all identity references could not be translated. + A Win32 error code was returned. + The converted identity. + + + Returns the account domain security identifier (SID) portion from the SID represented by the object if the SID represents a Windows account SID. If the SID does not represent a Windows account SID, this property returns . + The account domain SID portion from the SID represented by the object if the SID represents a Windows account SID; otherwise, it returns . + + + Returns the length, in bytes, of the security identifier (SID) represented by the object. + The length, in bytes, of the SID represented by the object. + + + Returns an uppercase Security Descriptor Definition Language (SDDL) string for the security identifier (SID) represented by this object. + An uppercase SDDL string for the SID represented by the object. + + + Defines the privileges of the user account associated with the access token. + + + The user can change the default owner, primary group, or discretionary access control list (DACL) of the token. + + + The user can change the attributes of the groups in the token. + + + The user can enable or disable privileges in the token. + + + The user can adjust the session identifier of the token. + + + The user has all possible access to the token. + + + The user can attach a primary token to a process. + + + The user can duplicate the token. + + + The user can impersonate a client. + + + The maximum value that can be assigned for the enumeration. + + + The user can query the token. + + + The user can query the source of the token. + + + The user has standard read rights and the privilege for the token. + + + The user has standard write rights and the , and privileges for the token. + + + Defines a set of commonly used security identifiers (SIDs). + + + Indicates a SID that matches the account administrators group. + + + Indicates a SID that matches the certificate administrators group. + + + Indicates a SID that matches the account computer group. + + + Indicates a SID that matches the account controller group. + + + Indicates a SID that matches the account domain administrator group. + + + Indicates a SID that matches the account domain guests group. + + + Indicates a SID that matches the account domain users group. + + + Indicates a SID that matches the enterprise administrators group. + + + Indicates a SID that matches the account guest group. + + + Indicates a SID that matches the account Kerberos target group. + + + Indicates a SID that matches the policy administrators group. + + + Indicates a SID that matches the RAS and IAS server account. + + + Indicates a SID that matches the schema administrators group. + + + Indicates a SID for the anonymous account. + + + Indicates a SID for an authenticated user. + + + Indicates a SID for a batch process. This SID is added to the process of a token when it logs on as a batch job. + + + Indicates a SID that matches the account operators account. + + + Indicates a SID that matches the administrator account. + + + Indicates a SID that matches the Windows Authorization Access group. + + + Indicates a SID that matches the backup operators group. + + + Indicates a SID that matches the domain account. + + + Indicates a SID that matches the guest account. + + + Indicates a SID that allows a user to create incoming forest trusts. It is added to the token of users who are a member of the Incoming Forest Trust Builders built-in group in the root domain of the forest. + + + Indicates a SID that matches the network operators group. + + + Indicates a SID that matches the group of users that have remote access to monitor the computer. + + + Indicates a SID that matches the group of users that have remote access to schedule logging of performance counters on this computer. + + + Indicates a SID that matches the power users group. + + + Indicates a SID that matches pre-Windows 2000 compatible accounts. + + + Indicates a SID that matches the print operators group. + + + Indicates a SID that matches remote desktop users. + + + Indicates a SID that matches the replicator account. + + + Indicates a SID that matches the system operators group. + + + Indicates a SID that matches built-in user accounts. + + + Indicates a creator group server SID. + + + Indicates a SID that matches the creator group of an object. + + + Indicates a creator owner server SID. + + + Indicates a SID that matches the owner or creator of an object. + + + Indicates a SID for a dial-up account. + + + Indicates a SID present when the Microsoft Digest authentication package authenticated the client. + + + Indicates a SID for an enterprise controller. + + + Indicates a SID for an interactive account. This SID is added to the process of a token when it logs on interactively. + + + Indicates a SID that matches a local service. + + + Indicates a local SID. + + + Indicates a SID that matches the local system. + + + Indicates a SID that matches logon IDs. + + + Indicates the maximum defined SID in the enumeration. + + + Indicates a SID that matches a network service. + + + Indicates a SID for a network account. This SID is added to the process of a token when it logs on across a network. + + + Indicates a SID for the Windows NT authority. + + + Indicates a SID present when the Microsoft NTLM authentication package authenticated the client. + + + Indicates a null SID. + + + Indicates a SID present when the user authenticated across a forest with the selective authentication option enabled. If this SID is present, then cannot be present. + + + Indicates a proxy SID. + + + Indicates a SID that matches remote logons. + + + Indicates a SID for restricted code. + + + Indicates a SID present when the Secure Channel (SSL/TLS) authentication package authenticated the client. + + + Indicates a SID for self. + + + Indicates a SID for a service. This SID is added to the process of a token when it logs on as a service. + + + Indicates a SID that matches a terminal server account. + + + Indicates a SID present when the user authenticated from within the forest or across a trust that does not have the selective authentication option enabled. If this SID is present, then cannot be present. + + + Indicates a SID that matches an account read-only controllers group. + + + Indicates a SID that matches the application package authority. + + + Indicates a SID that applies to all app containers. + + + Indicates a SID that matches the built-in DCOM certification services access group. + + + Indicates a SID that allows a user to use cryptographic operations. It is added to the token of users who are a member of the CryptoOperators built-in group. + + + Indicates a SID that matches the distributed COM user group. + + + Indicates a SID that matches an event log readers group. + + + Indicates a SID that matches the Internet built-in user group. + + + Indicates a SID is present in a server that can issue Terminal Server licenses. + + + Indicates a SID that matches a cacheable principals group. + + + Indicates a SID for documents library capability for app containers. + + + Indicates a SID for Windows credentials capability for app containers. + + + Indicates a SID of Internet client and server capability for app containers. + + + Indicates a SID of Internet client capability for app containers. + + + Indicates a SID for music library capability for app containers. + + + Indicates a SID for pictures library capability for app containers. + + + Indicates a SID of private network client and server capability for app containers. + + + Indicates a SID for removable storage capability for app containers. + + + Indicates a SID for shared user certificates capability for app containers. + + + Indicates a SID for videos library capability for app containers. + + + Indicates a SID that matches a console logon group. + + + Indicates a SID that matches a creator and owner rights group. + + + Indicates a SID that matches an enterprise wide read-only controllers group. + + + Indicates a SID that matches a high level of trust label. + + + Indicates a SID that matches the Internet user group. + + + Indicates a SID that matches a local logon group. + + + Indicates a SID that matches an low level of trust label. + + + Indicates a SID that matches an medium level of trust label. + + + Indicates a SID that matches the medium plus integrity label. + + + Indicates a SID that matches a read-only enterprise domain controller. + + + Indicates a SID that matches a non-cacheable principals group. + + + Indicates a SID that matches a system label. + + + Indicates a SID that matches a certificate for the given organization. + + + Indicates a SID that matches an untrusted label. + + + Indicates a SID that matches a write restricted code group. + + + Indicates a SID that matches everyone. + + + Specifies the type of Windows account used. + + + An anonymous account. + + + A Windows guest account. + + + A standard user account. + + + A Windows system account. + + + Specifies common roles to be used with . + + + Account operators manage the user accounts on a computer or domain. + + + Administrators have complete and unrestricted access to the computer or domain. + + + Backup operators can override security restrictions for the sole purpose of backing up or restoring files. + + + Guests are more restricted than users. + + + Power users possess most administrative permissions with some restrictions. Thus, power users can run legacy applications, in addition to certified applications. + + + Print operators can take control of a printer. + + + Replicators support file replication in a domain. + + + System operators manage a particular computer. + + + Users are prevented from making accidental or intentional system-wide changes. Thus, users can run certified applications, but not most legacy applications. + + + Represents a Windows user. + + + Identifies the name of the default issuer. + + + Initializes a new instance of the class for the user represented by the specified Windows account token. + The account token for the user on whose behalf the code is running. + + is 0. + + -or- + + is duplicated and invalid for impersonation. + The caller does not have the correct permissions. + + -or- + + A Win32 error occurred. + + + Initializes a new instance of the class for the user represented by the specified Windows account token and the specified authentication type. + The account token for the user on whose behalf the code is running. + (Informational use only.) The type of authentication used to identify the user. + + is 0. + + -or- + + is duplicated and invalid for impersonation. + The caller does not have the correct permissions. + + -or- + + A Win32 error occurred. + + + Initializes a new instance of the class for the user represented by the specified Windows account token, the specified authentication type, and the specified Windows account type. + The account token for the user on whose behalf the code is running. + (Informational use only.) The type of authentication used to identify the user. + One of the enumeration values. + + is 0. + + -or- + + is duplicated and invalid for impersonation. + The caller does not have the correct permissions. + + -or- + + A Win32 error occurred. + + + Initializes a new instance of the class for the user represented by the specified Windows account token, the specified authentication type, the specified Windows account type, and the specified authentication status. + The account token for the user on whose behalf the code is running. + (Informational use only.) The type of authentication used to identify the user. + One of the enumeration values. + + to indicate that the user is authenticated; otherwise, . + + is 0. + + -or- + + is duplicated and invalid for impersonation. + The caller does not have the correct permissions. + + -or- + + A Win32 error occurred. + + + Initializes a new instance of the class for the user represented by information in a stream. + The object containing the account information for the user. + An object that indicates the stream characteristics. + A cannot be serialized across processes. + The caller does not have the correct permissions. + + -or- + + A Win32 error occurred. + + + Initializes a new instance of the class by using the specified object. + The object from which to construct the new instance of . + + + Initializes a new instance of the class for the user represented by the specified User Principal Name (UPN). + The UPN for the user on whose behalf the code is running. + Windows returned the Windows NT status code STATUS_ACCESS_DENIED. + There is insufficient memory available. + The caller does not have the correct permissions. + + -or- + + The computer is not attached to a Windows 2003 or later domain. + + -or- + + The computer is not running Windows 2003 or later. + + -or- + + The user is not a member of the domain the computer is attached to. + + + Creates a new object that is a copy of the current instance. + A copy of the current instance. + + + Releases all resources used by the . + + + Releases the unmanaged resources used by the and optionally releases the managed resources. + + to release both managed and unmanaged resources; to release only unmanaged resources. + + + Returns a object that you can use as a sentinel value in your code to represent an anonymous user. The property value does not represent the built-in anonymous identity used by the Windows operating system. + An object that represents an anonymous user. + + + Returns a object that represents the current Windows user. + The caller does not have the correct permissions. + An object that represents the current user. + + + Returns a object that represents the Windows identity for either the thread or the process, depending on the value of the parameter. + + to return the only if the thread is currently impersonating; to return the of the thread if it is impersonating or the of the process if the thread is not currently impersonating. + An object that represents a Windows user. + + + Returns a object that represents the current Windows user, using the specified desired token access level. + A bitwise combination of the enumeration values. + An object that represents the current user. + + + Runs the specified action as the impersonated Windows identity. Instead of using an impersonated method call and running your function in , you can use and provide your function directly as a parameter. + The SafeAccessTokenHandle of the impersonated Windows identity. + The System.Action to run. + + + Runs the specified function as the impersonated Windows identity. Instead of using an impersonated method call and running your function in , you can use and provide your function directly as a parameter. + The SafeAccessTokenHandle of the impersonated Windows identity. + The System.Func to run. + The type of object used by and returned by the function. + The result of the function. + + + Runs the specified asynchronous action as the impersonated Windows identity. + The handle of the impersonated Windows identity. + The function to run. + A task that represents the asynchronous operation of the provided . + + + Runs the specified asynchronous action as the impersonated Windows identity. + The handle of the impersonated Windows identity. + The function to run. + The type of the object to return. + A task that represents the asynchronous operation of . + + + Implements the interface and is called back by the deserialization event when deserialization is complete. + The source of the deserialization event. + + + Sets the object with the logical context information needed to recreate an instance of this execution context. + An object containing the information required to serialize the . + An object containing the source and destination of the serialized stream associated with the . + + + Gets this for this instance. + Returns a . + + + Gets the type of authentication used to identify the user. + Windows returned the Windows NT status code STATUS_ACCESS_DENIED. + There is insufficient memory available. + The caller does not have the correct permissions. + + -or- + + The computer is not attached to a Windows 2003 or later domain. + + -or- + + The computer is not running Windows 2003 or later. + + -or- + + The user is not a member of the domain the computer is attached to. + The type of authentication used to identify the user. + + + Gets all claims for the user represented by this Windows identity. + A collection of claims for this object. + + + Gets claims that have the property key. + A collection of claims that have the property key. + + + Gets the groups the current Windows user belongs to. + An object representing the groups the current Windows user belongs to. + + + Gets the impersonation level for the user. + One of the enumeration values that specifies the impersonation level. + + + Gets a value that indicates whether the user account is identified as an anonymous account by the system. + + if the user account is an anonymous account; otherwise, . + + + Gets a value indicating whether the user has been authenticated by Windows. + + if the user was authenticated; otherwise, . + + + Gets a value indicating whether the user account is identified as a account by the system. + + if the user account is a account; otherwise, . + + + Gets a value indicating whether the user account is identified as a account by the system. + + if the user account is a account; otherwise, . + + + Gets the user's Windows logon name. + The Windows logon name of the user on whose behalf the code is being run. + + + Gets the security identifier (SID) for the token owner. + An object for the token owner. + + + Gets the Windows account token for the user. + The handle of the access token associated with the current execution thread. + + + Gets the security identifier (SID) for the user. + An object for the user. + + + Gets claims that have the property key. + A collection of claims that have the property key. + + + Enables code to check the Windows group membership of a Windows user. + + + Initializes a new instance of the class by using the specified object. + The object from which to construct the new instance of . + + is . + + + Determines whether the current principal belongs to the Windows user group with the specified relative identifier (RID). + The RID of the Windows user group in which to check for the principal's membership status. + + if the current principal is a member of the specified Windows user group, that is, in a particular role; otherwise, . + + + Determines whether the current principal belongs to the Windows user group with the specified security identifier (SID). + A that uniquely identifies a Windows user group. + + is . + Windows returned a Win32 error. + + if the current principal is a member of the specified Windows user group; otherwise, . + + + Determines whether the current principal belongs to the Windows user group with the specified . + One of the values. + + is not a valid value. + + if the current principal is a member of the specified Windows user group; otherwise, . + + + Determines whether the current principal belongs to the Windows user group with the specified name. + The name of the Windows user group for which to check membership. + + if the current principal is a member of the specified Windows user group; otherwise, . + + + Gets all Windows device claims from this principal. + A collection of all Windows device claims from this principal. + + + Gets the identity of the current principal. + The object of the current principal. + + + Gets all Windows user claims from this principal. + A collection of all Windows user claims from this principal. + + + \ No newline at end of file diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Windows.Forms.dll b/SOURCE/Application/Plugins/ModellingWizard/System.Windows.Forms.dll new file mode 100644 index 0000000..bd228e5 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.Windows.Forms.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Xaml.dll b/SOURCE/Application/Plugins/ModellingWizard/System.Xaml.dll new file mode 100644 index 0000000..1066396 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.Xaml.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Xml.Linq.dll b/SOURCE/Application/Plugins/ModellingWizard/System.Xml.Linq.dll new file mode 100644 index 0000000..ca60786 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.Xml.Linq.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.Xml.dll b/SOURCE/Application/Plugins/ModellingWizard/System.Xml.dll new file mode 100644 index 0000000..1ac0ee4 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.Xml.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/System.dll b/SOURCE/Application/Plugins/ModellingWizard/System.dll new file mode 100644 index 0000000..d8f3840 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/System.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/WindowsBase.dll b/SOURCE/Application/Plugins/ModellingWizard/WindowsBase.dll new file mode 100644 index 0000000..449fee4 Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/WindowsBase.dll differ diff --git a/SOURCE/Application/Plugins/ModellingWizard/WindowsFormsIntegration.dll b/SOURCE/Application/Plugins/ModellingWizard/WindowsFormsIntegration.dll new file mode 100644 index 0000000..3d0991c Binary files /dev/null and b/SOURCE/Application/Plugins/ModellingWizard/WindowsFormsIntegration.dll differ diff --git a/SOURCE/Application/Program.cs b/SOURCE/Application/Program.cs new file mode 100644 index 0000000..dd58947 --- /dev/null +++ b/SOURCE/Application/Program.cs @@ -0,0 +1,19 @@ +using System; +using System.Windows.Forms; + +namespace App +{ + static class Program + { + /// + /// Der Haupteinstiegspunkt für die Anwendung. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/SOURCE/Application/Properties/AssemblyInfo.cs b/SOURCE/Application/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1637e48 --- /dev/null +++ b/SOURCE/Application/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("Application")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Application")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("165d011d-d27b-48f5-995d-bac062f41986")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// indem Sie "*" wie unten gezeigt eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SOURCE/Application/Properties/Resources.Designer.cs b/SOURCE/Application/Properties/Resources.Designer.cs new file mode 100644 index 0000000..e978574 --- /dev/null +++ b/SOURCE/Application/Properties/Resources.Designer.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion: 4.0.30319.42000 +// +// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn +// der Code neu generiert wird. +// +//------------------------------------------------------------------------------ + + +namespace App.Properties +{ + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse + // über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Application.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/SOURCE/Application/Properties/Resources.resx b/SOURCE/Application/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/SOURCE/Application/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SOURCE/Application/Properties/Settings.Designer.cs b/SOURCE/Application/Properties/Settings.Designer.cs new file mode 100644 index 0000000..6ef77d2 --- /dev/null +++ b/SOURCE/Application/Properties/Settings.Designer.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + + +namespace App.Properties +{ + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/SOURCE/Application/Properties/Settings.settings b/SOURCE/Application/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/SOURCE/Application/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SOURCE/Application/logo.ico b/SOURCE/Application/logo.ico new file mode 100644 index 0000000..22c6acf Binary files /dev/null and b/SOURCE/Application/logo.ico differ diff --git a/SOURCE/Application/packages.config b/SOURCE/Application/packages.config new file mode 100644 index 0000000..53cee4c --- /dev/null +++ b/SOURCE/Application/packages.config @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/SOURCE/Plugin/.gitignore b/SOURCE/Plugin/.gitignore new file mode 100644 index 0000000..022ebf8 --- /dev/null +++ b/SOURCE/Plugin/.gitignore @@ -0,0 +1,5 @@ +.vs/ +obj/ +packages/ +Plugins/ + diff --git a/SOURCE/Plugin/AML.ico b/SOURCE/Plugin/AML.ico new file mode 100644 index 0000000..7ef373c Binary files /dev/null and b/SOURCE/Plugin/AML.ico differ diff --git a/SOURCE/Plugin/About.xaml b/SOURCE/Plugin/About.xaml new file mode 100644 index 0000000..ad3ecdf --- /dev/null +++ b/SOURCE/Plugin/About.xaml @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Visit our GitHub-Repository to learn more about this. + + + + + + + + + + + + + + © TINF20C DHBW Stuttgart 2022 + + + + + This Plugin uses third-party software for the convertions of IODD and GSDML. All Rights are reserved by the corresponding copyright owner. + + + + Visit ModellingWizard + on GitHub to get more informations about this project. + + + + + + + + + + + \ No newline at end of file diff --git a/SOURCE/Plugin/About.xaml.cs b/SOURCE/Plugin/About.xaml.cs new file mode 100644 index 0000000..ef771f9 --- /dev/null +++ b/SOURCE/Plugin/About.xaml.cs @@ -0,0 +1,41 @@ + +using System.Reflection; +using System.Windows; +using System.Windows.Navigation; + +namespace Aml.Editor.Plugin +{ + /// + /// Interaction logic for About.xaml + /// + public partial class About : Window + { + public About() + { + this.DataContext = this; + InitializeComponent(); + + var assembly = Assembly.GetCallingAssembly(); + + txtVersion.Text = "Version " + assembly.GetName().Version.ToString(); + + + } + + private void Close_Click(object sender, RoutedEventArgs e) + { + this.Close(); + } + + public string Version + { + get; + set; + } + + private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) + { + System.Diagnostics.Process.Start(e.Uri.ToString()); + } + } +} diff --git a/SOURCE/Plugin/AnimationClass.cs b/SOURCE/Plugin/AnimationClass.cs new file mode 100644 index 0000000..6f04467 --- /dev/null +++ b/SOURCE/Plugin/AnimationClass.cs @@ -0,0 +1,158 @@ +using Aml.Editor.Plugin.Properties; +using System; +using System.Drawing; +using System.IO; +using System.Windows.Forms; + +namespace Aml.Editor.Plugin +{ + class AnimationClass + { + public Panel PanelNumber { get; set; } + public Button ButtonNumber { get; set; } + public WebBrowser Webbrowser { get; set; } + public TextBox TextboxName { get; set; } + public PictureBox PictureboxNumber { get; set; } + public Button DisplayBtn { get; set; } + public DataGridView dataGridView { get; set; } + public string words { get; set; } + // public TreeNode Node { get; set; } + + + public AnimationClass() + { + + } + + // Method for window size maximum and minimum + public void WindowSizeChanger(Panel panelNumber, Button buttonNumber) + { + PanelNumber = panelNumber; + ButtonNumber = buttonNumber; + if (panelNumber.Size == panelNumber.MaximumSize) + { + panelNumber.Size = panelNumber.MinimumSize; + buttonNumber.Image = Resources.icons8_expand_arrow_24; + } + else + { + panelNumber.Size = panelNumber.MaximumSize; + buttonNumber.Image = Resources.icons8_collapse_arrow_24; + } + } + + public void WindowSizeChanger(Panel panelNumber) + { + PanelNumber = panelNumber; + // Node = node; + if (panelNumber.Size == panelNumber.MaximumSize) + { + panelNumber.Size = panelNumber.MinimumSize; + //Node.Image = Resources.icons8_expand_arrow_24; + } + else + { + panelNumber.Size = panelNumber.MaximumSize; + //Node.Image = Resources.icons8_collapse_arrow_24; + } + } + + public string OpenFileDialog(TextBox textboxName) + { + TextboxName = textboxName; + + OpenFileDialog open = new OpenFileDialog(); + open.Filter = "Document Files(*.pdf; *.doc;*.jpg; *.jpeg; *.gif; *.bmp; *.png;)|*.pdf; *.doc;*.jpg; *.jpeg; *.gif; *.bmp; *.png;"; + if (open.ShowDialog() == DialogResult.OK) + { + textboxName.Text = open.FileName; + + } + string nameOfFile = Path.GetFileName(open.FileName); + return nameOfFile; + } + + public void OpenFileDialog(TextBox textboxName, Button pdfDisplayBtn) + { + TextboxName = textboxName; + DisplayBtn = pdfDisplayBtn; + WebBrowser webbrowser = new WebBrowser(); + OpenFileDialog open = new OpenFileDialog(); + open.Filter = "Files(*.pdf; *.doc;)|*.pdf; *.doc;"; + if (open.ShowDialog() == DialogResult.OK) + { + textboxName.Text = open.FileName; + pdfDisplayBtn.Visible = true; + pdfDisplayBtn.Text = Path.GetFileName(open.FileName); + + } + } + // method for opening IEC-CDD urls + public void ManualOpener(string btnText) + { + string mainUrl = "https://cdd.iec.ch/CDD/IEC62683/iec62683.nsf/PropertiesAllVersions/0112-2---62683%23"; + string lastUrl = "?OpenDocument"; + string midUrl = btnText.Substring(15); + string finalUrl = mainUrl + midUrl + lastUrl; + + System.Diagnostics.Process.Start(finalUrl); + } + + + // Open Dialog Box related method that takes parmeters of textbox name and the picture box number. + public void OpenFileDialog(TextBox textboxName, PictureBox pictureBoxNumber) + { + TextboxName = textboxName; + PictureboxNumber = pictureBoxNumber; + OpenFileDialog open = new OpenFileDialog(); + open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp; *.png;)|*.jpg; *.jpeg; *.gif; *.bmp; *.png;"; + if (open.ShowDialog() == DialogResult.OK) + { + textboxName.Text = open.FileName; + pictureBoxNumber.Image = new Bitmap(open.FileName); + } + } + + public void OpenFileDialog(TextBox textboxName, PictureBox pictureBoxNumber, Button displayButton) + { + TextboxName = textboxName; + PictureboxNumber = pictureBoxNumber; + DisplayBtn = displayButton; + OpenFileDialog open = new OpenFileDialog(); + open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp; *.png;)|*.jpg; *.jpeg; *.gif; *.bmp; *.png;"; + if (open.ShowDialog() == DialogResult.OK) + { + textboxName.Text = open.FileName; + pictureBoxNumber.Image = new Bitmap(open.FileName); + displayButton.Visible = true; + displayButton.Text = Path.GetFileName(open.FileName); + } + } + + // this method dispaly all hidden buttons with the Refsemantic Id in them. + public void DispalySemanticBtn(Button refSemanticBtn, DataGridView dataGrids, string word) + { + words = word; + DisplayBtn = refSemanticBtn; + dataGridView = dataGrids; + + DisplayBtn.Visible = true; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + try + { + foreach (DataGridViewRow attribute in dataGridView.Rows) + { + if (attribute.Cells[1].Value.ToString().Equals(words)) + { + DisplayBtn.Text = attribute.Cells[0].Value.ToString(); + break; + } + } + } + catch (Exception exc) + { + MessageBox.Show(exc.Message); + } + } + } +} diff --git a/SOURCE/Plugin/AutomationMLDataTables.cs b/SOURCE/Plugin/AutomationMLDataTables.cs new file mode 100644 index 0000000..3434204 --- /dev/null +++ b/SOURCE/Plugin/AutomationMLDataTables.cs @@ -0,0 +1,169 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Drawing; +using System.Windows.Forms; + +namespace Aml.Editor.Plugin +{ + class AutomationMLDataTables + { + public DataTable AMLAttributeParameters() + { + DataTable AMLAttributeParameters = new DataTable(); + + AMLAttributeParameters.Columns.Add("AttributeName"); + AMLAttributeParameters.Columns.Add("Value"); + AMLAttributeParameters.Columns.Add("Default"); + AMLAttributeParameters.Columns.Add("Unit"); + AMLAttributeParameters.Columns.Add("DataType"); + AMLAttributeParameters.Columns.Add("Semantic", typeof(ComboBox)); + /*AMLAttributeParameters.Columns.Add("Reference"); + AMLAttributeParameters.Columns.Add("Description");*/ + + return AMLAttributeParameters; + } + + public void CreateDataTableWithColumns(DataTable dataRowName, DataGridView dataGridViewName, + KeyValuePair>> pair) + { + KeyValuePair>> Pair = pair; + + DataTable DataRowName = dataRowName; + DataGridView DataGridViewName = dataGridViewName; + + + + foreach (var valueList in Pair.Value) + { + + + foreach (var item in valueList) + { + List listofRefsemantics = new List(); + DataRow row = DataRowName.NewRow(); + + /*row["AttributeName"] = item.Name; + row["Value"] = item.Value; + row["Default"] = item.Default; + row["Unit"] = item.Unit; + row["DataType"] = null;*/ + int num = DataGridViewName.Rows.Add(); + + + if (item.Name == "Manufacturer" || item.Name == "Model" || item.Name == "ManufacturerURI" || item.Name == "DeviceClass" || item.Name == "ProductCode") + { + DataGridViewName.Rows[num].Cells[0].Value = item.Name; + DataGridViewName.Rows[num].Cells[0].Style.ForeColor = Color.Red; + } + else + { + DataGridViewName.Rows[num].Cells[0].Value = item.Name; + } + + DataGridViewName.Rows[num].Cells[1].Value = item.Value; + DataGridViewName.Rows[num].Cells[2].Value = item.Default; + DataGridViewName.Rows[num].Cells[3].Value = item.Unit; + DataGridViewName.Rows[num].Cells[4].Value = item.DataType; + try + { + foreach (var value in item.RefSemanticList.Elements) + { + listofRefsemantics.Add(value.FirstAttribute.Value.ToString()); + } + } + catch (Exception) + { + + } + + DataGridViewComboBoxCell dgvcbc = (DataGridViewComboBoxCell)DataGridViewName.Rows[num].Cells[5]; + dgvcbc.Items.Clear(); + + foreach (var items in listofRefsemantics) + { + dgvcbc.Items.Add(items); + } + + + + + DataRowName.Rows.Add(row); + + + + break; + } + + + } + + } + public void CheckForSameNameTextOfInternalAttributes(DataTable dataRowName, DataGridView dataGridViewName, KeyValuePair> pair) + { + KeyValuePair> Pair = pair; + DataTable DataRowName = dataRowName; + DataGridView DataGridViewName = dataGridViewName; + foreach (DataGridViewRow eachrow in DataGridViewName.Rows) + { + try + { + /* if (eachrow.Cells[0].Value.Equals(item.Name)) + { + + }*/ + } + catch (Exception) { } + } + } + public void CreateDataTableWithColumns(DataTable dataRowName, DataGridView dataGridViewName, KeyValuePair> pair) + { + KeyValuePair> Pair = pair; + DataTable DataRowName = new DataTable(); + DataRowName = dataRowName; + DataGridView DataGridViewName = dataGridViewName; + + foreach (var item in Pair.Value) + { + + DataRow row = DataRowName.NewRow(); + + + row["AttributeName"] = item.AttributeName; + row["Value"] = item.Values; + row["Default"] = item.Default; + row["Unit"] = item.Units; + row["DataType"] = item.DataType; + row["Semantic"] = item.Semantic; + row["Reference"] = item.Reference; + row["Description"] = item.Description; + DataRowName.Rows.Add(row); + + + + + /* break;*/ + + + + } + foreach (DataRow IDT in DataRowName.Rows) + { + + int num = DataGridViewName.Rows.Add(); + DataGridViewName.Rows[num].Cells[0].Value = IDT["AttributeName"].ToString(); + DataGridViewName.Rows[num].Cells[1].Value = IDT["Value"].ToString(); + DataGridViewName.Rows[num].Cells[2].Value = IDT["Default"].ToString(); + DataGridViewName.Rows[num].Cells[3].Value = IDT["Unit"].ToString(); + DataGridViewName.Rows[num].Cells[4].Value = IDT["DataType"].ToString(); + DataGridViewName.Rows[num].Cells[5].Value = IDT["Semantic"].ToString(); + DataGridViewName.Rows[num].Cells[6].Value = IDT["Reference"].ToString(); + // DataGridViewName.Rows[num].Cells[7].Value = IDT["Description"].ToString(); + + } + // For each loop creating the rows in the data table + + } + + } +} diff --git a/SOURCE/Plugin/ClassDiagram1.cd b/SOURCE/Plugin/ClassDiagram1.cd new file mode 100644 index 0000000..d63f632 --- /dev/null +++ b/SOURCE/Plugin/ClassDiagram1.cd @@ -0,0 +1,40 @@ + + + + + + AEAAAAAAACCAAAwEAAAAgABEAASAAAGAAACEAAAEAEE= + SearchAMLLibraryFile.cs + + + + + + AAAAAAgAAAAEAAAAAAABAQBAAgAAEAEBAAAAAEIBACA= + SearchAMLComponentFile.cs + + + + + + f+Lfxtcfg3/IeTb7yP335u3/aqvH3RPMf9bi+vq9ra4= + DeviceDescription.cs + + + + + + + + + + + + + + SAAAAAAAgAgCAAAAAAAAEIAAAAABAACAJAAAAAAAAAA= + MWData.cs + + + + \ No newline at end of file diff --git a/SOURCE/Plugin/ClassDiagram2.cd b/SOURCE/Plugin/ClassDiagram2.cd new file mode 100644 index 0000000..14cd726 --- /dev/null +++ b/SOURCE/Plugin/ClassDiagram2.cd @@ -0,0 +1,141 @@ + + + + + + IAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQAAA= + About.xaml.cs + + + + + + + AAAAAAAAGCAAAEAEAAAAAAAAAEAAAAAACCQJAAAAQAA= + AnimationClass.cs + + + + + + AAAAIAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAA= + AutomationMLDataTables.cs + + + + + + EgAAAACABAEggAAEIAAAIAQAAAAAAAACAAAgAAAAAAA= + ClassOfListsFromDataGridViews.cs + + + + + + EgAAAACABAMigAAEIAAAIAQAAAAAEAACAAAgAAAAAAA= + ClassOfListsFromReferencefile.cs + + + + + + f+Lfxtcfg3/IeTb7yP335u3/aqvH3RPMf9bi+vq9ra4= + DeviceDescription.cs + + + + + + AIBAExAAAgQBAAIgEAEIUIRAEIASCgAgAAgAAEAAAEA= + ModellingWizard.xaml.cs + + + + + + + + + + AgAAAAAAAACAAAAAAAAQAAAAQAAAgEAAAAggAAAAAAA= + MWController.cs + + + + + + SAAAAAAAgAgCAAAAAAAAEIAAAAABAACAJAAAAAAAAAA= + MWData.cs + + + + + + AQABEAAAAAAAAgAAQCAICACAAEAEAAAAAEACAAQEAAA= + MWDevice.cs + + + + + + ABAAAAAAAAAAAAAEAAAAAAAQAAAAAAAAAAAgAAAAAAA= + MWDevice.cs + + + + + + AAAAEAAEAAACAAAEBAAAAAAAAAgQAAAAAAAAAAAAAAA= + MWDevice.cs + + + + + + BAAAAAAAAAAAAAAEAAAAAAAQAAAAAAAAEAAgAAAAAAA= + MWDevice.cs + + + + + + BAAAAAAAAAAAAAAEAAAAAAAQAAAAAAAAEAAgAAAAAAg= + MWDevice.cs + + + + + + AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAACAJAAAAAAAA= + MWDevice.cs + + + + + + EgAAAACAAAMgAIAEAAAAIAAAAAAAAAAAEAAgAAAAAAA= + MWDevice.cs + + + + + + AAAAAAgAAAAEAAAAAAABAQBAAgAAEAEBAAAAAEIBACA= + SearchAMLComponentFile.cs + + + + + + AEAAAAAAACCAAAwEAAAAgABEAASAAAGAAACEAAAEAEE= + SearchAMLLibraryFile.cs + + + + + + IAAAAAAAAAABAAAAAAABEJAAQQkAAIAAgAAAAAAAAIE= + + + + \ No newline at end of file diff --git a/SOURCE/Plugin/ClassOfListsFromDataGridViews.cs b/SOURCE/Plugin/ClassOfListsFromDataGridViews.cs new file mode 100644 index 0000000..ec5a3e7 --- /dev/null +++ b/SOURCE/Plugin/ClassOfListsFromDataGridViews.cs @@ -0,0 +1,59 @@ +namespace Aml.Editor.Plugin +{ + class ClassOfListsFromDataGridViews + { + public string Name { get; set; } + public string Value { get; set; } + public string Default { get; set; } + public string Unit { get; set; } + public string Semantic { get; set; } + public string Reference { get; set; } + public string Description { get; set; } + public string CopyRight { get; set; } + public string AttributePath { get; set; } + public string RefBaseClassPath { get; set; } + public string ID { get; set; } + public string ReferencedClassName { get; set; } + //public CAEXSequence RefSemanticList { get; set; } + + + + + public ClassOfListsFromDataGridViews() + { + // RefSemanticList = new List>(); + } + + public ClassOfListsFromDataGridViews(string name, string value, + string _default, string unit, + string reference, string description, + string copyRight, string semantic, string + attributePath, string refBaseClassPath, + string id, string referencedClassName /*CAEXSequence refSemanticList*/) + : this() + { + this.Name = name; + this.Value = value; + this.Default = _default; + this.Unit = unit; + this.Reference = reference; + this.Description = description; + this.CopyRight = copyRight; + this.Semantic = semantic; + this.AttributePath = attributePath; + this.RefBaseClassPath = refBaseClassPath; + this.ID = id; + this.ReferencedClassName = referencedClassName; + //this.RefSemanticList = refSemanticList; + + } + + public override string ToString() + { + return "ClassOfListsFromReferencefile(" + Name + "=" + Value + "=" + Default + "=" + Unit + "=" + Reference + "=" + + Description + "=" + CopyRight + "=" + Semantic + "=" + AttributePath + "=" + RefBaseClassPath + "=" + ID + + "=" + ReferencedClassName + ")"; + } + + } +} diff --git a/SOURCE/Plugin/ClassOfListsFromReferencefile.cs b/SOURCE/Plugin/ClassOfListsFromReferencefile.cs new file mode 100644 index 0000000..2c92822 --- /dev/null +++ b/SOURCE/Plugin/ClassOfListsFromReferencefile.cs @@ -0,0 +1,63 @@ +using Aml.Engine.CAEX; + +namespace Aml.Editor.Plugin +{ + public class ClassOfListsFromReferencefile + { + public string Name { get; set; } + public string Value { get; set; } + public string Default { get; set; } + public string Unit { get; set; } + public string Semantic { get; set; } + public string Reference { get; set; } + public string Description { get; set; } + public string CopyRight { get; set; } + public string AttributePath { get; set; } + public string RefBaseClassPath { get; set; } + public string ID { get; set; } + public string ReferencedClassName { get; set; } + public CAEXSequence RefSemanticList { get; set; } + public string SupportesRoleClassType { get; set; } + public string DataType { get; set; } + + + //public List listofparameters { get; set; } + + public ClassOfListsFromReferencefile() + { + // RefSemanticList = new List>(); + } + + public ClassOfListsFromReferencefile(string name, string value, + string _default, string unit, + string reference, string description, + string copyRight, string semantic, string + attributePath, string refBaseClassPath, + string id, string referencedClassName, CAEXSequence refSemanticList, string supportesRoleClassType, string dataType) + : this() + { + this.Name = name; + this.Value = value; + this.Default = _default; + this.Unit = unit; + this.Reference = reference; + this.Description = description; + this.CopyRight = copyRight; + this.Semantic = semantic; + this.AttributePath = attributePath; + this.RefBaseClassPath = refBaseClassPath; + this.ID = id; + this.ReferencedClassName = referencedClassName; + this.RefSemanticList = refSemanticList; + this.SupportesRoleClassType = supportesRoleClassType; + this.DataType = dataType; + } + + public override string ToString() + { + return "ClassOfListsFromReferencefile(" + Name + "=" + Value + "=" + Default + "=" + Unit + "=" + Reference + "=" + + Description + "=" + CopyRight + "=" + Semantic + "=" + AttributePath + "=" + RefBaseClassPath + "=" + ID + + "=" + ReferencedClassName + "=" + RefSemanticList + "=" + SupportesRoleClassType + "=" + DataType + ")"; + } + } +} diff --git a/SOURCE/Plugin/Code Documentation/Doxyfile b/SOURCE/Plugin/Code Documentation/Doxyfile new file mode 100644 index 0000000..cc7eb44 --- /dev/null +++ b/SOURCE/Plugin/Code Documentation/Doxyfile @@ -0,0 +1,2577 @@ +# Doxyfile 1.8.17 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "Modeling Wizard Plugin for AutomationML Editor" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = Version2.0.0.0 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = Plugin + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = "C:\Modelling Wizard\Code Documentation" + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. + +OUTPUT_TEXT_DIRECTION = None + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = YES + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files), VHDL, tcl. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is +# Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# (including Cygwin) ands Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = "C:\Modelling Wizard" + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen +# C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f, *.for, *.tcl, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.doc \ + *.txt \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files +# were built. This is equivalent to specifying the "-p" option to a clang tool, +# such as clang-check. These options will then be passed to the parser. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: https://developer.apple.com/xcode/), introduced with OSX +# 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = YES + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/ + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /