summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJannis Voelker <jannis.voelker@basyskom.com>2023-10-27 15:18:54 +0200
committerJannis Voelker <jannis.voelker@basyskom.com>2023-12-06 08:31:29 +0100
commitbba934aebc0cc37f012cea446258ec9b2cc106c9 (patch)
tree8406d53363d368fa78825975727925abc7530271
parent925ea2eda7778d5e7766e19e6c39a034f436b873 (diff)
Add encoding and decoding support for Variant and DataValue
This change adds support for the built-in types Variant and DataValue to QOpcUaBinaryDataEncoding and QOpcUaGenericStructHandler. Structures containing fields of these types can now be decoded and encoded. Change-Id: If3f5dd18910f668f61bf37eed10b5d5f947e2f31 Reviewed-by: Frank Meerkoetter <frank.meerkoetter@basyskom.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
-rw-r--r--src/opcua/CMakeLists.txt1
-rw-r--r--src/opcua/client/qopcuabinarydataencoding.cpp6
-rw-r--r--src/opcua/client/qopcuabinarydataencoding.h352
-rw-r--r--src/opcua/client/qopcuadatavalue.cpp74
-rw-r--r--src/opcua/client/qopcuadatavalue.h13
-rw-r--r--src/opcua/client/qopcuagenericstructhandlerprivate.cpp12
-rw-r--r--src/opcua/client/qopcuavariant.cpp214
-rw-r--r--src/opcua/client/qopcuavariant.h87
-rw-r--r--src/plugins/opcua/open62541/qopen62541valueconverter.cpp5
-rw-r--r--tests/auto/qopcuaclient/tst_client.cpp77
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.bsd4
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.csv6
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.tt2pro2
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.uabin20262 -> 22874 bytes
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.xml208
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.xsd17
-rw-r--r--tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.c344
-rw-r--r--tests/open62541-testserver/generated/qtopcuatestmodel_nodeids.h6
-rw-r--r--tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.c29
-rw-r--r--tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.h21
-rw-r--r--tests/open62541-testserver/generated/types_qtopcuatestmodel_generated_handling.h31
-rw-r--r--tests/open62541-testserver/testserver.cpp44
-rw-r--r--tools/datatypecodegenerator/stringidentifier.cpp7
23 files changed, 1404 insertions, 156 deletions
diff --git a/src/opcua/CMakeLists.txt b/src/opcua/CMakeLists.txt
index 9fbe63a..d78195c 100644
--- a/src/opcua/CMakeLists.txt
+++ b/src/opcua/CMakeLists.txt
@@ -75,6 +75,7 @@ qt_internal_add_module(OpcUa
client/qopcuawriteresult.cpp client/qopcuawriteresult.h
client/qopcuaxvalue.cpp client/qopcuaxvalue.h
client/qopcuadiagnosticinfo.cpp client/qopcuadiagnosticinfo.h
+ client/qopcuavariant.cpp client/qopcuavariant.h
core/qopcuaplugin.cpp core/qopcuaplugin.h
core/qopcuaprovider.cpp core/qopcuaprovider.h
qopcuaglobal.h
diff --git a/src/opcua/client/qopcuabinarydataencoding.cpp b/src/opcua/client/qopcuabinarydataencoding.cpp
index 6835478..6ee00f5 100644
--- a/src/opcua/client/qopcuabinarydataencoding.cpp
+++ b/src/opcua/client/qopcuabinarydataencoding.cpp
@@ -117,6 +117,12 @@ QT_BEGIN_NAMESPACE
\row
\li QOpcUaEnumField
\li EnumField
+ \row
+ \li QOpcUaVariant
+ \li Variant
+ \row
+ \li QOpcUaDataValue
+ \li DataValue
\endtable
*/
diff --git a/src/opcua/client/qopcuabinarydataencoding.h b/src/opcua/client/qopcuabinarydataencoding.h
index 9574b46..d785e6c 100644
--- a/src/opcua/client/qopcuabinarydataencoding.h
+++ b/src/opcua/client/qopcuabinarydataencoding.h
@@ -20,6 +20,8 @@
#include <QtOpcUa/qopcuastructuredefinition.h>
#include <QtOpcUa/qopcuaenumdefinition.h>
#include <QtOpcUa/qopcuadiagnosticinfo.h>
+#include <QtOpcUa/qopcuadatavalue.h>
+#include <QtOpcUa/qopcuavariant.h>
#include <QtCore/qdatetime.h>
#include <QtCore/qendian.h>
@@ -60,6 +62,18 @@ private:
template <typename T>
T upperBound();
+ template <typename T, QOpcUa::Types OVERLAY = QOpcUa::Types::Undefined>
+ inline bool encodeValueArrayOrScalar(const QOpcUaVariant &var) {
+ return var.isArray() ? encodeArray<T, OVERLAY>(var.value().value<QList<T>>())
+ : encode<T, OVERLAY>(var.value().value<T>());
+ }
+
+ template <typename T, QOpcUa::Types OVERLAY = QOpcUa::Types::Undefined>
+ inline QVariant decodeValueArrayOrScalar(bool isArray, bool &success) {
+ return isArray ? QVariant::fromValue(decodeArray<T, OVERLAY>(success)) :
+ QVariant::fromValue(decode<T, OVERLAY>(success));
+ }
+
QByteArray *m_data{nullptr};
int m_offset{0};
};
@@ -706,6 +720,174 @@ inline QOpcUaDiagnosticInfo QOpcUaBinaryDataEncoding::decode<QOpcUaDiagnosticInf
return temp;
}
+template <>
+inline QOpcUaVariant QOpcUaBinaryDataEncoding::decode<QOpcUaVariant>(bool &success);
+
+template <>
+inline QOpcUaDataValue QOpcUaBinaryDataEncoding::decode<QOpcUaDataValue>(bool &success) {
+ QOpcUaDataValue temp;
+
+ const auto encodingMask = decode<quint8>(success);
+ if (!success)
+ return {};
+
+ if (encodingMask & (1 << 0)) {
+ temp.setValue(decode<QOpcUaVariant>(success));
+ if (!success)
+ return {};
+ }
+
+ if (encodingMask & (1 << 1)) {
+ temp.setStatusCode(decode<QOpcUa::UaStatusCode>(success));
+ if (!success)
+ return {};
+ }
+
+ if (encodingMask & (1 << 2)) {
+ temp.setSourceTimestamp(decode<QDateTime>(success));
+ if (!success)
+ return {};
+ }
+
+ if (encodingMask & (1 << 3)) {
+ temp.setSourcePicoseconds(decode<quint16>(success));
+ if (!success)
+ return {};
+ }
+
+ if (encodingMask & (1 << 4)) {
+ temp.setServerTimestamp(decode<QDateTime>(success));
+ if (!success)
+ return {};
+ }
+
+ if (encodingMask & (1 << 5)) {
+ temp.setServerPicoseconds(decode<quint16>(success));
+ if (!success)
+ return {};
+ }
+
+ return temp;
+}
+
+template <>
+inline QOpcUaVariant QOpcUaBinaryDataEncoding::decode<QOpcUaVariant>(bool &success) {
+ QOpcUaVariant temp;
+
+ const auto encodingMask = decode<quint8>(success);
+ if (!success)
+ return {};
+
+ const bool hasArrayDimensions = encodingMask & (1 << 6);
+ const bool isArray = encodingMask & (1 << 7);
+ const auto type = QOpcUaVariant::ValueType(encodingMask & 0x1F);
+
+ // Decode value
+
+ QVariant value;
+
+ switch (type) {
+ case QOpcUaVariant::ValueType::Boolean:
+ value = decodeValueArrayOrScalar<bool>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::SByte:
+ value = decodeValueArrayOrScalar<qint8>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::Byte:
+ value = decodeValueArrayOrScalar<quint8>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::Int16:
+ value = decodeValueArrayOrScalar<qint16>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::UInt16:
+ value = decodeValueArrayOrScalar<quint16>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::Int32:
+ value = decodeValueArrayOrScalar<qint32>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::UInt32:
+ value = decodeValueArrayOrScalar<quint32>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::Int64:
+ value = decodeValueArrayOrScalar<qint64>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::UInt64:
+ value = decodeValueArrayOrScalar<quint64>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::Float:
+ value = decodeValueArrayOrScalar<float>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::Double:
+ value = decodeValueArrayOrScalar<double>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::String:
+ value = decodeValueArrayOrScalar<QString>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::DateTime:
+ value = decodeValueArrayOrScalar<QDateTime>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::Guid:
+ value = decodeValueArrayOrScalar<QUuid>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::ByteString:
+ value = decodeValueArrayOrScalar<QByteArray>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::XmlElement:
+ value = decodeValueArrayOrScalar<QString>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::NodeId:
+ value = decodeValueArrayOrScalar<QString, QOpcUa::Types::NodeId>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::ExpandedNodeId:
+ value = decodeValueArrayOrScalar<QOpcUaExpandedNodeId>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::StatusCode:
+ value = decodeValueArrayOrScalar<QOpcUa::UaStatusCode>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::QualifiedName:
+ value = decodeValueArrayOrScalar<QOpcUaQualifiedName>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::LocalizedText:
+ value = decodeValueArrayOrScalar<QOpcUaLocalizedText>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::ExtensionObject:
+ value = decodeValueArrayOrScalar<QOpcUaExtensionObject>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::DataValue:
+ value = decodeValueArrayOrScalar<QOpcUaDataValue>(isArray, success);
+ break;
+ case QOpcUaVariant::ValueType::Variant:
+ if (!isArray)
+ return {}; // Variant must not contain a scalar variant as value
+ value = QVariant::fromValue(decodeArray<QOpcUaVariant>(success));
+ break;
+ case QOpcUaVariant::ValueType::DiagnosticInfo:
+ value = decodeValueArrayOrScalar<QOpcUaDiagnosticInfo>(isArray, success);
+ break;
+ default:
+ break;
+ }
+
+ // 26-31 are reserved and shall be treated as ByteString when encountered
+ // See OPC UA 1.05, Part 6, 5.2.2.16
+ auto resultType = type;
+ if (static_cast<quint16>(type) >= 26 && static_cast<quint16>(type) <= 31) {
+ value = decodeValueArrayOrScalar<QByteArray>(isArray, success);
+ resultType = QOpcUaVariant::ValueType::ByteString;
+ }
+
+ if (!success)
+ return {};
+
+ QList<qint32> arrayDimensions;
+ if (hasArrayDimensions)
+ arrayDimensions = decodeArray<qint32>(success);
+
+ temp.setValue(value, resultType, isArray, arrayDimensions);
+
+ return temp;
+}
+
template<typename T, QOpcUa::Types OVERLAY>
inline bool QOpcUaBinaryDataEncoding::encode(const T &src)
{
@@ -1295,6 +1477,176 @@ inline bool QOpcUaBinaryDataEncoding::encode<QOpcUaDiagnosticInfo>(const QOpcUaD
return true;
}
+template <>
+inline bool QOpcUaBinaryDataEncoding::encode<QOpcUaVariant>(const QOpcUaVariant &src);
+
+template <>
+inline bool QOpcUaBinaryDataEncoding::encode<QOpcUaDataValue>(const QOpcUaDataValue &src)
+{
+ if (src.value().isValid() && !src.value().canConvert<QOpcUaVariant>()) {
+ qWarning() << "Unable to convert DataValue value type != QOpcUaVariant";
+ return false;
+ }
+
+ quint8 encodingMask = 0;
+ if (src.value().isValid())
+ encodingMask |= (1 << 0);
+ if (src.statusCode() != QOpcUa::UaStatusCode::Good)
+ encodingMask |= (1 << 1);
+ if (src.sourceTimestamp().isValid())
+ encodingMask |= (1 << 2);
+ if (src.serverTimestamp().isValid())
+ encodingMask |= (1 << 3);
+ if (src.sourcePicoseconds())
+ encodingMask |= (1 << 4);
+ if (src.serverPicoseconds())
+ encodingMask |= (1 << 5);
+
+ if (!encode<quint8>(encodingMask))
+ return false;
+
+ // Encode value
+ if (src.value().isValid()) {
+ if (!encode<QOpcUaVariant>(src.value().value<QOpcUaVariant>()))
+ return false;
+ }
+
+ if (src.statusCode() != QOpcUa::UaStatusCode::Good) {
+ if (!encode<QOpcUa::UaStatusCode>(src.statusCode()))
+ return false;
+ }
+
+ if (src.sourceTimestamp().isValid()) {
+ if (!encode<QDateTime>(src.sourceTimestamp()))
+ return false;
+ }
+
+ if (src.sourcePicoseconds()) {
+ if (!encode<quint16>(src.sourcePicoseconds()))
+ return false;
+ }
+
+ if (src.serverTimestamp().isValid()) {
+ if (!encode<QDateTime>(src.serverTimestamp()))
+ return false;
+ }
+
+ if (src.serverPicoseconds()) {
+ if (!encode<quint16>(src.serverPicoseconds()))
+ return false;
+ }
+
+ return true;
+}
+
+template <>
+inline bool QOpcUaBinaryDataEncoding::encode<QOpcUaVariant>(const QOpcUaVariant &src)
+{
+ quint8 encodingMask = static_cast<quint8>(src.type());
+ if (!src.arrayDimensions().isEmpty())
+ encodingMask |= (1 << 6);
+ if (src.isArray())
+ encodingMask |= (1 << 7);
+
+ if (!encode<quint8>(encodingMask))
+ return false;
+
+ bool success = true;
+ switch (src.type()) {
+ case QOpcUaVariant::ValueType::Boolean:
+ success = encodeValueArrayOrScalar<bool>(src);
+ break;
+ case QOpcUaVariant::ValueType::SByte:
+ success = encodeValueArrayOrScalar<qint8>(src);
+ break;
+ case QOpcUaVariant::ValueType::Byte:
+ success = encodeValueArrayOrScalar<quint8>(src);
+ break;
+ case QOpcUaVariant::ValueType::Int16:
+ success = encodeValueArrayOrScalar<qint16>(src);
+ break;
+ case QOpcUaVariant::ValueType::UInt16:
+ success = encodeValueArrayOrScalar<quint16>(src);
+ break;
+ case QOpcUaVariant::ValueType::Int32:
+ success = encodeValueArrayOrScalar<qint32>(src);
+ break;
+ case QOpcUaVariant::ValueType::UInt32:
+ success = encodeValueArrayOrScalar<quint32>(src);
+ break;
+ case QOpcUaVariant::ValueType::Int64:
+ success = encodeValueArrayOrScalar<qint64>(src);
+ break;
+ case QOpcUaVariant::ValueType::UInt64:
+ success = encodeValueArrayOrScalar<quint32>(src);
+ break;
+ case QOpcUaVariant::ValueType::Float:
+ success = encodeValueArrayOrScalar<float>(src);
+ break;
+ case QOpcUaVariant::ValueType::Double:
+ success = encodeValueArrayOrScalar<double>(src);
+ break;
+ case QOpcUaVariant::ValueType::String:
+ success = encodeValueArrayOrScalar<QString>(src);
+ break;
+ case QOpcUaVariant::ValueType::DateTime:
+ success = encodeValueArrayOrScalar<QDateTime>(src);
+ break;
+ case QOpcUaVariant::ValueType::Guid:
+ success = encodeValueArrayOrScalar<QUuid>(src);
+ break;
+ case QOpcUaVariant::ValueType::ByteString:
+ success = encodeValueArrayOrScalar<QByteArray>(src);
+ break;
+ case QOpcUaVariant::ValueType::XmlElement:
+ success = encodeValueArrayOrScalar<QString>(src);
+ break;
+ case QOpcUaVariant::ValueType::NodeId:
+ success = encodeValueArrayOrScalar<QString, QOpcUa::Types::NodeId>(src);
+ break;
+ case QOpcUaVariant::ValueType::ExpandedNodeId:
+ success = encodeValueArrayOrScalar<QOpcUaExpandedNodeId>(src);
+ break;
+ case QOpcUaVariant::ValueType::StatusCode:
+ success = encodeValueArrayOrScalar<QOpcUa::UaStatusCode>(src);
+ break;
+ case QOpcUaVariant::ValueType::QualifiedName:
+ success = encodeValueArrayOrScalar<QOpcUaQualifiedName>(src);
+ break;
+ case QOpcUaVariant::ValueType::LocalizedText:
+ success = encodeValueArrayOrScalar<QOpcUaLocalizedText>(src);
+ break;
+ case QOpcUaVariant::ValueType::ExtensionObject:
+ success = encodeValueArrayOrScalar<QOpcUaExtensionObject>(src);
+ break;
+ case QOpcUaVariant::ValueType::DataValue:
+ success = encodeValueArrayOrScalar<QOpcUaDataValue>(src);
+ break;
+ case QOpcUaVariant::ValueType::Variant:
+ if (!src.isArray()) {
+ qWarning() << "Unable to convert Variant value, a Variant must not contain a scalar variant";
+ return false;
+ }
+ success = encode<QOpcUaVariant>(src);
+ break;
+ case QOpcUaVariant::ValueType::DiagnosticInfo:
+ success = encodeValueArrayOrScalar<QOpcUaDiagnosticInfo>(src);
+ break;
+ default:
+ break;
+ }
+
+ if (!success)
+ return false;
+
+ if (!src.arrayDimensions().isEmpty()) {
+ if (!encodeArray<qint32>(src.arrayDimensions()))
+ return false;
+ }
+
+ return true;
+}
+
QT_END_NAMESPACE
#endif // QOPCUABINARYDATAENCODING_H
diff --git a/src/opcua/client/qopcuadatavalue.cpp b/src/opcua/client/qopcuadatavalue.cpp
index 80fb051..682691e 100644
--- a/src/opcua/client/qopcuadatavalue.cpp
+++ b/src/opcua/client/qopcuadatavalue.cpp
@@ -17,7 +17,9 @@ class QOpcUaDataValueData : public QSharedData
{
public:
QDateTime serverTimestamp;
+ quint16 serverPicoseconds = 0;
QDateTime sourceTimestamp;
+ quint16 sourcePicoseconds = 0;
QOpcUa::UaStatusCode statusCode {QOpcUa::UaStatusCode::Good};
QVariant value;
};
@@ -72,6 +74,9 @@ QVariant QOpcUaDataValue::value() const
/*!
Sets the value to \a value.
+
+ If this data value is to be used with \l QOpcUaBinaryDataEncoding or
+ \l QOpcUaGenericStructHandler, the value's type must be \l QOpcUaVariant.
*/
void QOpcUaDataValue::setValue(const QVariant &value)
{
@@ -80,6 +85,14 @@ void QOpcUaDataValue::setValue(const QVariant &value)
}
/*!
+ Returns a QVariant containing this data value.
+*/
+QOpcUaDataValue::operator QVariant() const
+{
+ return QVariant::fromValue(*this);
+}
+
+/*!
Returns the status code for this data value. If the status code is not \l {QOpcUa::UaStatusCode} {Good}, the
value and the timestamps are invalid.
*/
@@ -115,6 +128,26 @@ void QOpcUaDataValue::setSourceTimestamp(const QDateTime &sourceTimestamp)
}
/*!
+ \since 6.7
+
+ Returns the number of 10 picosecond intervals for the source timestamp.
+*/
+quint16 QOpcUaDataValue::sourcePicoseconds() const
+{
+ return data->sourcePicoseconds;
+}
+
+/*!
+ \since 6.7
+
+ Sets the number of 10 picosecond intervals for the source timestamp to \a sourcePicoseconds.
+*/
+void QOpcUaDataValue::setSourcePicoseconds(quint16 sourcePicoseconds)
+{
+ data->sourcePicoseconds = sourcePicoseconds;
+}
+
+/*!
Returns the server timestamp for \l value().
*/
QDateTime QOpcUaDataValue::serverTimestamp() const
@@ -131,4 +164,45 @@ void QOpcUaDataValue::setServerTimestamp(const QDateTime &serverTimestamp)
data->serverTimestamp = serverTimestamp;
}
+/*!
+ \since 6.7
+
+ Returns the number of 10 picosecond intervals for the server timestamp.
+*/
+quint16 QOpcUaDataValue::serverPicoseconds() const
+{
+ return data->serverPicoseconds;
+}
+
+/*!
+ \since 6.7
+
+ Sets the number of 10 picosecond intervals for the server timestamp to \a serverPicoseconds.
+*/
+void QOpcUaDataValue::setServerPicoseconds(quint16 serverPicoseconds)
+{
+ data->serverPicoseconds = serverPicoseconds;
+}
+
+/*!
+ \fn bool QOpcUaDataValue::operator!=(const QOpcUaDataValue &lhs, const QOpcUaDataValue &rhs) noexcept
+
+ Returns \c true if \a lhs is not equal to \a rhs.
+*/
+
+/*!
+ \fn bool QOpcUaDataValue::operator==(const QOpcUaDataValue &lhs, const QOpcUaDataValue &rhs) noexcept
+
+ Returns \c true if \a lhs is equal to \a rhs.
+*/
+bool operator==(const QOpcUaDataValue &lhs, const QOpcUaDataValue &rhs) noexcept
+{
+ return lhs.data->serverTimestamp == rhs.data->serverTimestamp &&
+ lhs.data->serverPicoseconds == rhs.data->serverPicoseconds &&
+ lhs.data->sourceTimestamp == rhs.data->sourceTimestamp &&
+ lhs.data->sourcePicoseconds == rhs.data->sourcePicoseconds &&
+ lhs.data->statusCode == rhs.data->statusCode &&
+ lhs.data->value == rhs.data->value;
+}
+
QT_END_NAMESPACE
diff --git a/src/opcua/client/qopcuadatavalue.h b/src/opcua/client/qopcuadatavalue.h
index d0ab499..f382e1c 100644
--- a/src/opcua/client/qopcuadatavalue.h
+++ b/src/opcua/client/qopcuadatavalue.h
@@ -17,6 +17,11 @@ public:
QOpcUaDataValue();
QOpcUaDataValue(const QOpcUaDataValue &other);
QOpcUaDataValue &operator=(const QOpcUaDataValue &other);
+ friend Q_OPCUA_EXPORT bool operator==(const QOpcUaDataValue &lhs, const QOpcUaDataValue &rhs) noexcept;
+ friend inline bool operator!=(const QOpcUaDataValue &lhs, const QOpcUaDataValue &rhs) noexcept
+ {
+ return !(lhs == rhs);
+ }
~QOpcUaDataValue();
void swap(QOpcUaDataValue &other) noexcept
@@ -25,15 +30,23 @@ public:
QDateTime serverTimestamp() const;
void setServerTimestamp(const QDateTime &serverTimestamp);
+ quint16 serverPicoseconds() const;
+ void setServerPicoseconds(quint16 serverPicoseconds);
+
QDateTime sourceTimestamp() const;
void setSourceTimestamp(const QDateTime &sourceTimestamp);
+ quint16 sourcePicoseconds() const;
+ void setSourcePicoseconds(quint16 sourcePicoseconds);
+
QOpcUa::UaStatusCode statusCode() const;
void setStatusCode(QOpcUa::UaStatusCode statusCode);
QVariant value() const;
void setValue(const QVariant &value);
+ operator QVariant() const;
+
private:
QExplicitlySharedDataPointer<QOpcUaDataValueData> data;
};
diff --git a/src/opcua/client/qopcuagenericstructhandlerprivate.cpp b/src/opcua/client/qopcuagenericstructhandlerprivate.cpp
index 20b3f67..9bd92ba 100644
--- a/src/opcua/client/qopcuagenericstructhandlerprivate.cpp
+++ b/src/opcua/client/qopcuagenericstructhandlerprivate.cpp
@@ -337,6 +337,12 @@ QVariant QOpcUaGenericStructHandlerPrivate::decodeKnownTypesInternal(QOpcUaBinar
return decodeArrayOrScalar<QOpcUaDiagnosticInfo>(decoder, valueRank, success);
}
+ if (dataTypeId == QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::DataValue))
+ return decodeArrayOrScalar<QOpcUaDataValue>(decoder, valueRank, success);
+
+ if (dataTypeId == QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::BaseDataType))
+ return decodeArrayOrScalar<QOpcUaVariant>(decoder, valueRank, success);
+
// Enumeration
const auto enumType = m_enumsByTypeId.constFind(dataTypeId);
if (enumType != m_enumsByTypeId.constEnd()) {
@@ -605,6 +611,12 @@ bool QOpcUaGenericStructHandlerPrivate::encodeKnownTypesInternal(QOpcUaBinaryDat
return encodeArrayOrScalar<QOpcUaDiagnosticInfo>(encoder, valueRank, value);
}
+ if (dataTypeId == QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::DataValue))
+ return encodeArrayOrScalar<QOpcUaDataValue>(encoder, valueRank, value);
+
+ if (dataTypeId == QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::BaseDataType))
+ return encodeArrayOrScalar<QOpcUaVariant>(encoder, valueRank, value);
+
const auto enumType = m_enumsByTypeId.constFind(dataTypeId);
if (enumType != m_enumsByTypeId.constEnd()) {
if (enumType->isAbstract) {
diff --git a/src/opcua/client/qopcuavariant.cpp b/src/opcua/client/qopcuavariant.cpp
new file mode 100644
index 0000000..5f4c3b7
--- /dev/null
+++ b/src/opcua/client/qopcuavariant.cpp
@@ -0,0 +1,214 @@
+// Copyright (C) 2023 basysKom GmbH, opensource@basyskom.com
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qopcuavariant.h"
+#include <QtCore/qdatetime.h>
+#include <QtCore/quuid.h>
+
+QT_BEGIN_NAMESPACE
+
+class QOpcUaVariantData : public QSharedData
+{
+public:
+ QVariant value;
+ QOpcUaVariant::ValueType valueType = QOpcUaVariant::ValueType::Unknown;
+ QList<qint32> arrayDimensions;
+ bool isArray = false;
+};
+
+QT_DEFINE_QSDP_SPECIALIZATION_DTOR(QOpcUaVariantData)
+
+/*!
+ \class QOpcUaVariant
+ \inmodule QtOpcUa
+ \since 6.7
+ \brief The OPC UA Variant.
+
+ The OPC UA variant is an union of all built-in OPC UA types and also contains
+ information about the array dimensions associated with the value.
+ This class is currently only supported by \l QOpcUaBinaryDataEncoding and
+ \l QOpcUaGenericStructHandler.
+*/
+
+/*!
+ \enum QOpcUaVariant::ValueType
+
+ This enum contains the possible value types of an OPC UA variant.
+
+ \value Unknown
+ \value Boolean
+ \value SByte
+ \value Byte
+ \value Int16
+ \value UInt16
+ \value Int32
+ \value UInt32,
+ \value Int64
+ \value UInt64
+ \value Float
+ \value Double
+ \value String
+ \value DateTime
+ \value Guid
+ \value ByteString
+ \value XmlElement
+ \value NodeId
+ \value ExpandedNodeId
+ \value StatusCode
+ \value QualifiedName
+ \value LocalizedText
+ \value ExtensionObject
+ \value DataValue
+ \value Variant
+ \value DiagnosticInfo
+*/
+
+/*!
+ \fn QOpcUaVariant::QOpcUaVariant(QOpcUaVariant &&other)
+
+ Move-constructs a new OPC UA variant from \a other.
+
+ \note The moved-from object \a other is placed in a
+ partially-formed state, in which the only valid operations are
+ destruction and assignment of a new value.
+*/
+
+/*!
+ \fn QOpcUaVariant &QOpcUaVariant::operator=(QOpcUaVariant &&other)
+
+ Move-assigns \a other to this QOpcUaVariant instance.
+
+ \note The moved-from object \a other is placed in a
+ partially-formed state, in which the only valid operations are
+ destruction and assignment of a new value.
+*/
+
+/*!
+ \fn void QOpcUaVariant::swap(QOpcUaVariant &other)
+
+ Swaps enum definition object \a other with this OPC UA variant
+ object. This operation is very fast and never fails.
+*/
+
+/*!
+ \fn bool QOpcUaVariant::operator!=(const QOpcUaVariant &lhs, const QOpcUaVariant &rhs) noexcept
+
+ Returns \c true if \a lhs is not equal to \a rhs.
+*/
+
+/*!
+ \fn bool QOpcUaVariant::operator==(const QOpcUaVariant &lhs, const QOpcUaVariant &rhs) noexcept
+
+ Returns \c true if \a lhs is equal to \a rhs.
+*/
+
+/*!
+ Default constructs a new OPC UA variant.
+*/
+QOpcUaVariant::QOpcUaVariant()
+ : data(new QOpcUaVariantData)
+{
+}
+
+/*!
+ Constructs a new OPC UA variant and sets \a value, \a type, \a isArray and \a arrayDimensions
+*/
+QOpcUaVariant::QOpcUaVariant(const QVariant &value, ValueType type, bool isArray, const QList<qint32> &arrayDimensions)
+ : data(new QOpcUaVariantData)
+{
+ setValue(value, type, isArray, arrayDimensions);
+}
+
+/*!
+ Constructs a new OPC UA variant from \a other.
+*/
+QOpcUaVariant::QOpcUaVariant(const QOpcUaVariant &other)
+ : data(new QOpcUaVariantData)
+{
+ data->value = other.data->value;
+ data->valueType = other.data->valueType;
+ data->arrayDimensions = other.data->arrayDimensions;
+ data->isArray = other.data->isArray;
+}
+
+/*!
+ Destroys this OPC UA variant.
+*/
+QOpcUaVariant::~QOpcUaVariant()
+{
+}
+
+/*!
+ Sets the values from \a rhs in this OPC UA variant.
+*/
+QOpcUaVariant &QOpcUaVariant::operator=(const QOpcUaVariant &rhs)
+{
+ if (this != &rhs)
+ data.operator=(rhs.data);
+ return *this;
+}
+
+
+bool operator==(const QOpcUaVariant &lhs, const QOpcUaVariant &rhs) noexcept
+{
+ return lhs.data->value == rhs.data->value &&
+ lhs.data->valueType == rhs.data->valueType &&
+ lhs.data->arrayDimensions == rhs.data->arrayDimensions &&
+ lhs.data->isArray == rhs.data->isArray;
+}
+
+/*!
+ Returns the value of this OPC UA variant.
+*/
+QVariant QOpcUaVariant::value() const
+{
+ return data->value;
+}
+
+/*!
+ Sets the value of this OPC UA variant to \a value, the type to \a type, isArray to \a isArray and the
+ array dimensions to \a arrayDimensions.
+
+ Array values must be passed as a \l QList of \a type.
+*/
+void QOpcUaVariant::setValue(const QVariant &value, ValueType type, bool isArray, const QList<qint32> &arrayDimensions)
+{
+ data->value = value;
+ data->valueType = type;
+ data->isArray = isArray;
+ data->arrayDimensions = arrayDimensions;
+}
+
+/*!
+ Returns the value type of this OPC UA variant.
+*/
+QOpcUaVariant::ValueType QOpcUaVariant::type() const
+{
+ return data->valueType;
+}
+
+/*!
+ Returns \c true if this OPC UA variant contains an array value.
+*/
+bool QOpcUaVariant::isArray() const
+{
+ return data->isArray;
+}
+
+/*!
+ Returns the array dimensions of this OPC UA variant.
+*/
+QList<qint32> QOpcUaVariant::arrayDimensions() const
+{
+ return data->arrayDimensions;
+}
+
+/*!
+ Returns a \l QVariant containing this OPC UA variant.
+*/
+QOpcUaVariant::operator QVariant() const
+{
+ return QVariant::fromValue(*this);
+}
+
+QT_END_NAMESPACE
diff --git a/src/opcua/client/qopcuavariant.h b/src/opcua/client/qopcuavariant.h
new file mode 100644
index 0000000..7037c2d
--- /dev/null
+++ b/src/opcua/client/qopcuavariant.h
@@ -0,0 +1,87 @@
+// Copyright (C) 2023 basysKom GmbH, opensource@basyskom.com
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QOPCUAVARIANT_H
+#define QOPCUAVARIANT_H
+
+#include <QtOpcUa/qopcuaglobal.h>
+
+#include <QtCore/qlist.h>
+#include <QtCore/qshareddata.h>
+#include <QtCore/qvariant.h>
+
+QT_BEGIN_NAMESPACE
+
+class QOpcUaVariantData;
+
+QT_DECLARE_QSDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaVariantData, Q_OPCUA_EXPORT)
+
+class QOpcUaVariant
+{
+public:
+ enum class ValueType {
+ Unknown = 0,
+ Boolean = 1,
+ SByte = 2,
+ Byte = 3,
+ Int16 = 4,
+ UInt16 = 5,
+ Int32 = 6,
+ UInt32 = 7,
+ Int64 = 8,
+ UInt64 = 9,
+ Float = 10,
+ Double = 11,
+ String = 12,
+ DateTime = 13,
+ Guid = 14,
+ ByteString = 15,
+ XmlElement = 16,
+ NodeId = 17,
+ ExpandedNodeId = 18,
+ StatusCode = 19,
+ QualifiedName = 20,
+ LocalizedText = 21,
+ ExtensionObject = 22,
+ DataValue = 23,
+ Variant = 24,
+ DiagnosticInfo = 25
+ };
+
+ Q_OPCUA_EXPORT QOpcUaVariant();
+ Q_OPCUA_EXPORT QOpcUaVariant(const QVariant &value, ValueType type, bool isArray = false,
+ const QList<qint32> &arrayDimensions = {});
+ Q_OPCUA_EXPORT QOpcUaVariant(const QOpcUaVariant &other);
+ Q_OPCUA_EXPORT ~QOpcUaVariant();
+ void swap(QOpcUaVariant &other) noexcept
+ { data.swap(other.data); }
+ QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QOpcUaVariant)
+ QOpcUaVariant(QOpcUaVariant &&other) noexcept = default;
+ Q_OPCUA_EXPORT QOpcUaVariant &operator=(const QOpcUaVariant &rhs);
+ friend Q_OPCUA_EXPORT bool operator==(const QOpcUaVariant &lhs, const QOpcUaVariant &rhs) noexcept;
+ friend inline bool operator!=(const QOpcUaVariant &lhs, const QOpcUaVariant &rhs) noexcept
+ {
+ return !(lhs == rhs);
+ }
+
+ Q_OPCUA_EXPORT QVariant value() const;
+ Q_OPCUA_EXPORT void setValue(const QVariant &value, ValueType type, bool isArray = false,
+ const QList<qint32> &arrayDimensions = {});
+
+ Q_OPCUA_EXPORT ValueType type() const;
+ Q_OPCUA_EXPORT bool isArray() const;
+ Q_OPCUA_EXPORT QList<qint32> arrayDimensions() const;
+
+ Q_OPCUA_EXPORT operator QVariant() const;
+
+private:
+ QSharedDataPointer<QOpcUaVariantData> data;
+};
+
+Q_DECLARE_SHARED(QOpcUaVariant)
+
+QT_END_NAMESPACE
+
+Q_DECLARE_METATYPE(QOpcUaVariant)
+
+#endif // QOPCUAVARIANT_H
diff --git a/src/plugins/opcua/open62541/qopen62541valueconverter.cpp b/src/plugins/opcua/open62541/qopen62541valueconverter.cpp
index b481405..a48e2d3 100644
--- a/src/plugins/opcua/open62541/qopen62541valueconverter.cpp
+++ b/src/plugins/opcua/open62541/qopen62541valueconverter.cpp
@@ -392,6 +392,11 @@ QOpcUaDataValue scalarToQt<QOpcUaDataValue, UA_DataValue>(const UA_DataValue *da
} else {
result.setStatusCode(QOpcUa::UaStatusCode::Good);
}
+ if (data->hasServerPicoseconds)
+ result.setServerPicoseconds(data->serverPicoseconds);
+ if (data->hasSourcePicoseconds)
+ result.setSourcePicoseconds(data->sourcePicoseconds);
+
return result;
}
diff --git a/tests/auto/qopcuaclient/tst_client.cpp b/tests/auto/qopcuaclient/tst_client.cpp
index 35733ff..b7fe080 100644
--- a/tests/auto/qopcuaclient/tst_client.cpp
+++ b/tests/auto/qopcuaclient/tst_client.cpp
@@ -178,6 +178,8 @@ QList<QOpcUaStructureDefinition> testStructureDefinitions = {};
QList<QOpcUaEnumField> testEnumFields = {};
QList<QOpcUaEnumDefinition> testEnumDefinitions = {};
QList<QOpcUaDiagnosticInfo> testDiagnosticInfos = {};
+QList<QOpcUaVariant> testVariants = {};
+QList<QOpcUaDataValue> testDataValues = {};
void populateDataTypeDefinitionTestData()
{
@@ -263,6 +265,30 @@ void populateDiagnosticInfoTestData()
testDiagnosticInfos = { diagnosticInfo, diagnosticInfo2 };
}
+void populateVariantTestData()
+{
+ QOpcUaVariant v1;
+ v1.setValue(QList<QString>{ "Test1", "Test2", "Test3", "Test4"}, QOpcUaVariant::ValueType::String, true, { 2, 2 });
+
+ QOpcUaVariant v2;
+ v2.setValue(23, QOpcUaVariant::ValueType::Int16);
+
+ testVariants = { v1, v2 };
+}
+
+void populateDataValuesTestData()
+{
+ QOpcUaDataValue d1;
+ d1.setServerTimestamp(QDateTime::currentDateTime());
+ d1.setServerPicoseconds(23);
+ d1.setSourceTimestamp(QDateTime::currentDateTime());
+ d1.setSourcePicoseconds(42);
+ d1.setStatusCode(QOpcUa::UaStatusCode::BadInternalError);
+ d1.setValue(testVariants.at(0));
+
+ testDataValues = { d1 };
+}
+
QList<QOpcUaMonitoringParameters::EventFilter> testEventFilters = {};
void populateEventFilterTestData()
@@ -5822,12 +5848,13 @@ void Tst_QOpcUaClient::decodeGenericStruct()
QOpcUaReadItem readStructWithOptField(QStringLiteral("ns=4;i=6010"));
QOpcUaReadItem readStructWithoutOptField(QStringLiteral("ns=4;i=6002"));
QOpcUaReadItem readStructWithDiagnosticInfo(QStringLiteral("ns=4;i=6006"));
+ QOpcUaReadItem readStructWithDataValue(QStringLiteral("ns=4;i=6027"));
QSignalSpy readSpy(opcuaClient, &QOpcUaClient::readNodeAttributesFinished);
const auto readDispatch = opcuaClient->readNodeAttributes({readNestedStruct, readUnion1, readUnion2,
readStructWithOptField, readStructWithoutOptField,
- readStructWithDiagnosticInfo});
+ readStructWithDiagnosticInfo, readStructWithDataValue});
QCOMPARE(readDispatch, true);
readSpy.wait();
@@ -5837,13 +5864,14 @@ void Tst_QOpcUaClient::decodeGenericStruct()
QCOMPARE(readSpy.at(0).at(1).value<QOpcUa::UaStatusCode>(), QOpcUa::UaStatusCode::Good);
auto results = readSpy.at(0).at(0).value<QList<QOpcUaReadResult>>();
- QCOMPARE(results.size(), 6);
+ QCOMPARE(results.size(), 7);
QCOMPARE(results.at(0).statusCode(), QOpcUa::UaStatusCode::Good);
QCOMPARE(results.at(1).statusCode(), QOpcUa::UaStatusCode::Good);
QCOMPARE(results.at(2).statusCode(), QOpcUa::UaStatusCode::Good);
QCOMPARE(results.at(3).statusCode(), QOpcUa::UaStatusCode::Good);
QCOMPARE(results.at(4).statusCode(), QOpcUa::UaStatusCode::Good);
QCOMPARE(results.at(5).statusCode(), QOpcUa::UaStatusCode::Good);
+ QCOMPARE(results.at(6).statusCode(), QOpcUa::UaStatusCode::Good);
bool decodeSuccess = false;
@@ -5939,6 +5967,30 @@ void Tst_QOpcUaClient::decodeGenericStruct()
QCOMPARE(decodedData.fields().value("DiagnosticInfoArrayMember").value<QList<QOpcUaDiagnosticInfo>>(), testDiagnosticInfos);
QCOMPARE(decodeSuccess, true);
}
+
+ {
+ auto dataValueExt = results.at(6).value().value<QOpcUaExtensionObject>();
+ auto decodedData = decoder.decode(dataValueExt, decodeSuccess);
+ qDebug() << decodedData;
+ QCOMPARE(decodeSuccess, true);
+
+ QVERIFY(decodedData.fields().contains("DataValueMember"));
+ const auto dv = decodedData.fields().value("DataValueMember").value<QOpcUaDataValue>();
+ QCOMPARE(dv.statusCode(), QOpcUa::UaStatusCode::BadInternalError);
+ QCOMPARE(dv.serverTimestamp(), QDateTime::fromMSecsSinceEpoch(1698655307000));
+ QCOMPARE(dv.sourceTimestamp(), QDateTime::fromMSecsSinceEpoch(1698655306000));
+ QCOMPARE(dv.sourcePicoseconds(), 42);
+ QCOMPARE(dv.serverPicoseconds(), 23);
+ const auto v = dv.value().value<QOpcUaVariant>();
+ QCOMPARE(v.value(), (QList<QString>{"TestString 1", "TestString 2", "TestString 3", "TestString 4"}));
+ QCOMPARE(v.arrayDimensions(), (QList<qint32>{ 2, 2 }));
+
+ QVERIFY(decodedData.fields().contains("VariantMember"));
+ const auto var = decodedData.fields().value("VariantMember").value<QOpcUaVariant>();
+ QVERIFY(var.arrayDimensions().isEmpty());
+ QCOMPARE(var.type(), QOpcUaVariant::ValueType::UInt64);
+ QCOMPARE(var.value(), 42);
+ }
}
void Tst_QOpcUaClient::encodeGenericStruct()
@@ -6102,6 +6154,25 @@ void Tst_QOpcUaClient::encodeGenericStruct()
QScopedPointer<QOpcUaNode> node(opcuaClient->node("ns=4;i=6006"));
WRITE_VALUE_ATTRIBUTE(node, ext, QOpcUa::Types::ExtensionObject);
}
+
+ {
+ auto value = handler.createGenericStructValueForTypeId("ns=4;i=3010");
+ value.fieldsRef()["DataValueMember"] = testDataValues.at(0);
+ value.fieldsRef()["VariantMember"] = testVariants.at(0);
+
+ QOpcUaExtensionObject ext;
+ success = handler.encode(value, ext);
+ QCOMPARE(success, true);
+ QCOMPARE(ext.encodingTypeId(), value.structureDefinition().defaultEncodingId());
+
+ const auto decoded = handler.decode(ext, success);
+
+ QCOMPARE(decoded.fields().value("DataValueMember"), testDataValues.at(0));
+ QCOMPARE(decoded.fields().value("VariantMember"), testVariants.at(0));
+
+ QScopedPointer<QOpcUaNode> node(opcuaClient->node("ns=4;i=6027"));
+ WRITE_VALUE_ATTRIBUTE(node, ext, QOpcUa::Types::ExtensionObject);
+ }
}
void Tst_QOpcUaClient::encodeCustomGenericStruct()
@@ -6308,6 +6379,8 @@ int main(int argc, char *argv[])
{
populateDataTypeDefinitionTestData();
populateDiagnosticInfoTestData();
+ populateVariantTestData();
+ populateDataValuesTestData();
populateEventFilterTestData();
QCoreApplication app(argc, argv);
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.bsd b/tests/open62541-testserver/TestModel/qtopcuatestmodel.bsd
index 89f4d86..84784e1 100644
--- a/tests/open62541-testserver/TestModel/qtopcuatestmodel.bsd
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.bsd
@@ -21,6 +21,10 @@
<opc:Field TypeName="opc:Int32" Name="NoOfNestedStructArrayMember"/>
<opc:Field LengthField="NoOfNestedStructArrayMember" TypeName="tns:QtInnerTestStructType" Name="NestedStructArrayMember"/>
</opc:StructuredType>
+ <opc:StructuredType BaseType="tns:QtAbstractBaseStruct" Name="QtTestStructWithDataValue">
+ <opc:Field TypeName="ua:DataValue" Name="DataValueMember"/>
+ <opc:Field TypeName="ua:Variant" Name="VariantMember"/>
+ </opc:StructuredType>
<opc:StructuredType BaseType="tns:QtAbstractBaseStruct" Name="QtTestStructWithDiagnosticInfo">
<opc:Field TypeName="ua:DiagnosticInfo" Name="DiagnosticInfoMember"/>
<opc:Field TypeName="opc:Int32" Name="NoOfDiagnosticInfoArrayMember"/>
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.csv b/tests/open62541-testserver/TestModel/qtopcuatestmodel.csv
index c619189..d3ab868 100644
--- a/tests/open62541-testserver/TestModel/qtopcuatestmodel.csv
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.csv
@@ -6,6 +6,7 @@ QtStructWithOptionalFieldType,3006,DataType
MyDoubleSubtype,3007,DataType
QtAbstractBaseStruct,3008,DataType
QtTestStructWithDiagnosticInfo,3009,DataType
+QtTestStructWithDataValue,3010,DataType
QtTestStructType_Encoding_DefaultBinary,5001,Object
QtTestStructType_Encoding_DefaultXml,5002,Object
QtTestStructWithDiagnosticInfo_Encoding_DefaultBinary,5003,Object
@@ -19,12 +20,16 @@ QtStructWithOptionalFieldType_Encoding_DefaultBinary,5010,Object
QtStructWithOptionalFieldType_Encoding_DefaultXml,5011,Object
QtAbstractBaseStruct_Encoding_DefaultXml,5012,Object
QtTestStructWithDiagnosticInfo_Encoding_DefaultXml,5013,Object
+QtTestStructWithDataValue_Encoding_DefaultBinary,5014,Object
+QtTestStructWithDataValue_Encoding_DefaultXml,5015,Object
QtTestEnumeration_EnumStrings,6001,Variable
DecoderTestNodes_StructWihoutOptionalField,6002,Variable
DecoderTestNodes_UnionWithSecondMember,6003,Variable
BinarySchema_TypeDictionary_BinarySchema_QtTestStructWithDiagnosticInfo,6004,Variable
XmlSchema_TypeDictionary_XmlSchema_QtTestStructWithDiagnosticInfo,6005,Variable
DecoderTestNodes_StructWithDiagnosticInfo,6006,Variable
+BinarySchema_TypeDictionary_BinarySchema_QtTestStructWithDataValue,6007,Variable
+XmlSchema_TypeDictionary_XmlSchema_QtTestStructWithDataValue,6008,Variable
DecoderTestNodes_NestedStruct,6009,Variable
DecoderTestNodes_StructWithOptionalField,6010,Variable
DecoderTestNodes_UnionWithFirstMember,6011,Variable
@@ -42,3 +47,4 @@ BinarySchema_TypeDictionary_BinarySchema_QtTestUnionType,6022,Variable
XmlSchema_TypeDictionary_XmlSchema_QtTestUnionType,6023,Variable
BinarySchema_TypeDictionary_BinarySchema_QtAbstractBaseStruct,6024,Variable
XmlSchema_TypeDictionary_XmlSchema_QtAbstractBaseStruct,6025,Variable
+DecoderTestNodes_StructWithDataValue,6027,Variable
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.tt2pro b/tests/open62541-testserver/TestModel/qtopcuatestmodel.tt2pro
index 651e9c7..fc78646 100644
--- a/tests/open62541-testserver/TestModel/qtopcuatestmodel.tt2pro
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.tt2pro
@@ -1,6 +1,6 @@
###########################
# UaModeler Project File #
-# Generated at 23.08.2023 #
+# Generated at 30.10.2023 #
###########################
PROJECTNAME = QtOpcUaTestModel
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.ua b/tests/open62541-testserver/TestModel/qtopcuatestmodel.ua
index 15c64c2..9c205d9 100644
--- a/tests/open62541-testserver/TestModel/qtopcuatestmodel.ua
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.ua
Binary files differ
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.xml b/tests/open62541-testserver/TestModel/qtopcuatestmodel.xml
index 483cde8..0c3d980 100644
--- a/tests/open62541-testserver/TestModel/qtopcuatestmodel.xml
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.xml
@@ -10,6 +10,7 @@
<Alias Alias="ByteString">i=15</Alias>
<Alias Alias="QualifiedName">i=20</Alias>
<Alias Alias="LocalizedText">i=21</Alias>
+ <Alias Alias="DataValue">i=23</Alias>
<Alias Alias="DiagnosticInfo">i=25</Alias>
<Alias Alias="Organizes">i=35</Alias>
<Alias Alias="HasModellingRule">i=37</Alias>
@@ -26,10 +27,11 @@
<Alias Alias="QtStructWithOptionalFieldType">ns=1;i=3006</Alias>
<Alias Alias="MyDoubleSubtype">ns=1;i=3007</Alias>
<Alias Alias="QtTestStructWithDiagnosticInfo">ns=1;i=3009</Alias>
+ <Alias Alias="QtTestStructWithDataValue">ns=1;i=3010</Alias>
</Aliases>
<Extensions>
<Extension>
- <ua:ModelInfo Tool="UaModeler" Hash="+meaQ+dmQrll0fzxsafyig==" Version="1.6.5"/>
+ <ua:ModelInfo Tool="UaModeler" Hash="qZsRDNMvSev9uTurYnwSsA==" Version="1.6.5"/>
</Extension>
</Extensions>
<UADataType NodeId="ns=1;i=3002" BrowseName="1:QtTestEnumeration">
@@ -212,6 +214,40 @@
<uax:String>//xs:element[@name='QtTestStructType']</uax:String>
</Value>
</UAVariable>
+ <UADataType NodeId="ns=1;i=3010" BrowseName="1:QtTestStructWithDataValue">
+ <DisplayName>QtTestStructWithDataValue</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5014</Reference>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5015</Reference>
+ <Reference ReferenceType="HasSubtype" IsForward="false">ns=1;i=3008</Reference>
+ </References>
+ <Definition Name="1:QtTestStructWithDataValue">
+ <Field DataType="DataValue" Name="DataValueMember"/>
+ <Field Name="VariantMember"/>
+ </Definition>
+ </UADataType>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6012" NodeId="ns=1;i=6007" BrowseName="1:QtTestStructWithDataValue">
+ <DisplayName>QtTestStructWithDataValue</DisplayName>
+ <References>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6012</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5014</Reference>
+ </References>
+ <Value>
+ <uax:String>QtTestStructWithDataValue</uax:String>
+ </Value>
+ </UAVariable>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6014" NodeId="ns=1;i=6008" BrowseName="1:QtTestStructWithDataValue">
+ <DisplayName>QtTestStructWithDataValue</DisplayName>
+ <References>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6014</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5015</Reference>
+ </References>
+ <Value>
+ <uax:String>//xs:element[@name='QtTestStructWithDataValue']</uax:String>
+ </Value>
+ </UAVariable>
<UADataType NodeId="ns=1;i=3009" BrowseName="1:QtTestStructWithDiagnosticInfo">
<DisplayName>QtTestStructWithDiagnosticInfo</DisplayName>
<References>
@@ -227,9 +263,9 @@
<UAVariable DataType="String" ParentNodeId="ns=1;i=6012" NodeId="ns=1;i=6004" BrowseName="1:QtTestStructWithDiagnosticInfo">
<DisplayName>QtTestStructWithDiagnosticInfo</DisplayName>
<References>
- <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6012</Reference>
<Reference ReferenceType="HasTypeDefinition">i=69</Reference>
<Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5003</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6012</Reference>
</References>
<Value>
<uax:String>QtTestStructWithDiagnosticInfo</uax:String>
@@ -238,9 +274,9 @@
<UAVariable DataType="String" ParentNodeId="ns=1;i=6014" NodeId="ns=1;i=6005" BrowseName="1:QtTestStructWithDiagnosticInfo">
<DisplayName>QtTestStructWithDiagnosticInfo</DisplayName>
<References>
- <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6014</Reference>
<Reference ReferenceType="HasTypeDefinition">i=69</Reference>
<Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5013</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6014</Reference>
</References>
<Value>
<uax:String>//xs:element[@name='QtTestStructWithDiagnosticInfo']</uax:String>
@@ -290,6 +326,7 @@
<Reference ReferenceType="HasComponent">ns=1;i=6016</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6018</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6020</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6007</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6004</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6022</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">i=93</Reference>
@@ -330,25 +367,29 @@
XBlTmFtZT0idG5zOlF0SW5uZXJUZXN0U3RydWN0VHlwZSIgTmFtZT0iTmVzdGVkU3RydWN0Q
XJyYXlNZW1iZXIiLz4KIDwvb3BjOlN0cnVjdHVyZWRUeXBlPgogPG9wYzpTdHJ1Y3R1cmVkV
HlwZSBCYXNlVHlwZT0idG5zOlF0QWJzdHJhY3RCYXNlU3RydWN0IiBOYW1lPSJRdFRlc3RTd
- HJ1Y3RXaXRoRGlhZ25vc3RpY0luZm8iPgogIDxvcGM6RmllbGQgVHlwZU5hbWU9InVhOkRpY
- Wdub3N0aWNJbmZvIiBOYW1lPSJEaWFnbm9zdGljSW5mb01lbWJlciIvPgogIDxvcGM6Rmllb
- GQgVHlwZU5hbWU9Im9wYzpJbnQzMiIgTmFtZT0iTm9PZkRpYWdub3N0aWNJbmZvQXJyYXlNZ
- W1iZXIiLz4KICA8b3BjOkZpZWxkIExlbmd0aEZpZWxkPSJOb09mRGlhZ25vc3RpY0luZm9Bc
- nJheU1lbWJlciIgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJbmZvIiBOYW1lPSJEaWFnbm9zd
- GljSW5mb0FycmF5TWVtYmVyIi8+CiA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4KIDxvcGM6U3Ryd
- WN0dXJlZFR5cGUgQmFzZVR5cGU9InVhOlVuaW9uIiBOYW1lPSJRdFRlc3RVbmlvblR5cGUiP
- gogIDxvcGM6RmllbGQgVHlwZU5hbWU9Im9wYzpVSW50MzIiIE5hbWU9IlN3aXRjaEZpZWxkI
- i8+CiAgPG9wYzpGaWVsZCBTd2l0Y2hGaWVsZD0iU3dpdGNoRmllbGQiIFR5cGVOYW1lPSJvc
- GM6SW50NjQiIFN3aXRjaFZhbHVlPSIxIiBOYW1lPSJNZW1iZXIxIi8+CiAgPG9wYzpGaWVsZ
- CBTd2l0Y2hGaWVsZD0iU3dpdGNoRmllbGQiIFR5cGVOYW1lPSJ0bnM6UXRJbm5lclRlc3RTd
- HJ1Y3RUeXBlIiBTd2l0Y2hWYWx1ZT0iMiIgTmFtZT0iTWVtYmVyMiIvPgogPC9vcGM6U3Ryd
- WN0dXJlZFR5cGU+CiA8b3BjOkVudW1lcmF0ZWRUeXBlIExlbmd0aEluQml0cz0iMzIiIE5hb
- WU9IlF0VGVzdEVudW1lcmF0aW9uIj4KICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJVb
- mtub3duIiBWYWx1ZT0iMCIvPgogIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkZpcnN0T
- 3B0aW9uIiBWYWx1ZT0iMSIvPgogIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlNlY29uZ
- E9wdGlvbiIgVmFsdWU9IjIiLz4KICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJUaGlyZ
- E9wdGlvbiIgVmFsdWU9IjMiLz4KIDwvb3BjOkVudW1lcmF0ZWRUeXBlPgo8L29wYzpUeXBlR
- GljdGlvbmFyeT4K</uax:ByteString>
+ HJ1Y3RXaXRoRGF0YVZhbHVlIj4KICA8b3BjOkZpZWxkIFR5cGVOYW1lPSJ1YTpEYXRhVmFsd
+ WUiIE5hbWU9IkRhdGFWYWx1ZU1lbWJlciIvPgogIDxvcGM6RmllbGQgVHlwZU5hbWU9InVhO
+ lZhcmlhbnQiIE5hbWU9IlZhcmlhbnRNZW1iZXIiLz4KIDwvb3BjOlN0cnVjdHVyZWRUeXBlP
+ gogPG9wYzpTdHJ1Y3R1cmVkVHlwZSBCYXNlVHlwZT0idG5zOlF0QWJzdHJhY3RCYXNlU3Ryd
+ WN0IiBOYW1lPSJRdFRlc3RTdHJ1Y3RXaXRoRGlhZ25vc3RpY0luZm8iPgogIDxvcGM6Rmllb
+ GQgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJbmZvIiBOYW1lPSJEaWFnbm9zdGljSW5mb01lb
+ WJlciIvPgogIDxvcGM6RmllbGQgVHlwZU5hbWU9Im9wYzpJbnQzMiIgTmFtZT0iTm9PZkRpY
+ Wdub3N0aWNJbmZvQXJyYXlNZW1iZXIiLz4KICA8b3BjOkZpZWxkIExlbmd0aEZpZWxkPSJOb
+ 09mRGlhZ25vc3RpY0luZm9BcnJheU1lbWJlciIgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJb
+ mZvIiBOYW1lPSJEaWFnbm9zdGljSW5mb0FycmF5TWVtYmVyIi8+CiA8L29wYzpTdHJ1Y3R1c
+ mVkVHlwZT4KIDxvcGM6U3RydWN0dXJlZFR5cGUgQmFzZVR5cGU9InVhOlVuaW9uIiBOYW1lP
+ SJRdFRlc3RVbmlvblR5cGUiPgogIDxvcGM6RmllbGQgVHlwZU5hbWU9Im9wYzpVSW50MzIiI
+ E5hbWU9IlN3aXRjaEZpZWxkIi8+CiAgPG9wYzpGaWVsZCBTd2l0Y2hGaWVsZD0iU3dpdGNoR
+ mllbGQiIFR5cGVOYW1lPSJvcGM6SW50NjQiIFN3aXRjaFZhbHVlPSIxIiBOYW1lPSJNZW1iZ
+ XIxIi8+CiAgPG9wYzpGaWVsZCBTd2l0Y2hGaWVsZD0iU3dpdGNoRmllbGQiIFR5cGVOYW1lP
+ SJ0bnM6UXRJbm5lclRlc3RTdHJ1Y3RUeXBlIiBTd2l0Y2hWYWx1ZT0iMiIgTmFtZT0iTWVtY
+ mVyMiIvPgogPC9vcGM6U3RydWN0dXJlZFR5cGU+CiA8b3BjOkVudW1lcmF0ZWRUeXBlIExlb
+ md0aEluQml0cz0iMzIiIE5hbWU9IlF0VGVzdEVudW1lcmF0aW9uIj4KICA8b3BjOkVudW1lc
+ mF0ZWRWYWx1ZSBOYW1lPSJVbmtub3duIiBWYWx1ZT0iMCIvPgogIDxvcGM6RW51bWVyYXRlZ
+ FZhbHVlIE5hbWU9IkZpcnN0T3B0aW9uIiBWYWx1ZT0iMSIvPgogIDxvcGM6RW51bWVyYXRlZ
+ FZhbHVlIE5hbWU9IlNlY29uZE9wdGlvbiIgVmFsdWU9IjIiLz4KICA8b3BjOkVudW1lcmF0Z
+ WRWYWx1ZSBOYW1lPSJUaGlyZE9wdGlvbiIgVmFsdWU9IjMiLz4KIDwvb3BjOkVudW1lcmF0Z
+ WRUeXBlPgo8L29wYzpUeXBlRGljdGlvbmFyeT4K</uax:ByteString>
</Value>
</UAVariable>
<UAVariable DataType="String" ParentNodeId="ns=1;i=6012" NodeId="ns=1;i=6013" BrowseName="NamespaceUri">
@@ -371,6 +412,7 @@
<Reference ReferenceType="HasComponent">ns=1;i=6017</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6019</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6021</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6008</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6005</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6023</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">i=92</Reference>
@@ -457,38 +499,54 @@
FR5cGUiIG5pbGxhYmxlPSJ0cnVlIi8+CiAgPC94czpzZXF1ZW5jZT4KIDwveHM6Y29tcGxle
FR5cGU+CiA8eHM6ZWxlbWVudCB0eXBlPSJ0bnM6TGlzdE9mUXRUZXN0U3RydWN0VHlwZSIgb
mFtZT0iTGlzdE9mUXRUZXN0U3RydWN0VHlwZSIgbmlsbGFibGU9InRydWUiLz4KIDx4czpjb
- 21wbGV4VHlwZSBuYW1lPSJRdFRlc3RTdHJ1Y3RXaXRoRGlhZ25vc3RpY0luZm8iPgogIDx4c
- zpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPgogICA8eHM6ZXh0ZW5zaW9uIGJhc2U9I
- nRuczpRdEFic3RyYWN0QmFzZVN0cnVjdCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgPHhzO
- mVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiIHR5cGU9InVhOkRpYWdub3N0a
- WNJbmZvIiBuYW1lPSJEaWFnbm9zdGljSW5mb01lbWJlciIvPgogICAgIDx4czplbGVtZW50I
- G1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljS
- W5mbyIgbmFtZT0iRGlhZ25vc3RpY0luZm9BcnJheU1lbWJlciIvPgogICAgPC94czpzZXF1Z
- W5jZT4KICAgPC94czpleHRlbnNpb24+CiAgPC94czpjb21wbGV4Q29udGVudD4KIDwveHM6Y
- 29tcGxleFR5cGU+CiA8eHM6ZWxlbWVudCB0eXBlPSJ0bnM6UXRUZXN0U3RydWN0V2l0aERpY
- Wdub3N0aWNJbmZvIiBuYW1lPSJRdFRlc3RTdHJ1Y3RXaXRoRGlhZ25vc3RpY0luZm8iLz4KI
- Dx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZRdFRlc3RTdHJ1Y3RXaXRoRGlhZ25vc3RpY
- 0luZm8iPgogIDx4czpzZXF1ZW5jZT4KICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtY
- XhPY2N1cnM9InVuYm91bmRlZCIgdHlwZT0idG5zOlF0VGVzdFN0cnVjdFdpdGhEaWFnbm9zd
- GljSW5mbyIgbmFtZT0iUXRUZXN0U3RydWN0V2l0aERpYWdub3N0aWNJbmZvIiBuaWxsYWJsZ
- T0idHJ1ZSIvPgogIDwveHM6c2VxdWVuY2U+CiA8L3hzOmNvbXBsZXhUeXBlPgogPHhzOmVsZ
- W1lbnQgdHlwZT0idG5zOkxpc3RPZlF0VGVzdFN0cnVjdFdpdGhEaWFnbm9zdGljSW5mbyIgb
- mFtZT0iTGlzdE9mUXRUZXN0U3RydWN0V2l0aERpYWdub3N0aWNJbmZvIiBuaWxsYWJsZT0id
- HJ1ZSIvPgogPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlF0VGVzdFVuaW9uVHlwZSI+CiAgPHhzO
- nNlcXVlbmNlPgogICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIgd
- HlwZT0ieHM6dW5zaWduZWRJbnQiIG5hbWU9IlN3aXRjaEZpZWxkIi8+CiAgIDx4czpjaG9pY
- 2U+CiAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIgdHlwZT0ie
- HM6bG9uZyIgbmFtZT0iTWVtYmVyMSIvPgogICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwI
- iBtYXhPY2N1cnM9IjEiIHR5cGU9InRuczpRdElubmVyVGVzdFN0cnVjdFR5cGUiIG5hbWU9I
- k1lbWJlcjIiLz4KICAgPC94czpjaG9pY2U+CiAgPC94czpzZXF1ZW5jZT4KIDwveHM6Y29tc
- GxleFR5cGU+CiA8eHM6ZWxlbWVudCB0eXBlPSJ0bnM6UXRUZXN0VW5pb25UeXBlIiBuYW1lP
- SJRdFRlc3RVbmlvblR5cGUiLz4KIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZRdFRlc
- 3RVbmlvblR5cGUiPgogIDx4czpzZXF1ZW5jZT4KICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzP
- SIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgdHlwZT0idG5zOlF0VGVzdFVuaW9uVHlwZSIgb
- mFtZT0iUXRUZXN0VW5pb25UeXBlIiBuaWxsYWJsZT0idHJ1ZSIvPgogIDwveHM6c2VxdWVuY
- 2U+CiA8L3hzOmNvbXBsZXhUeXBlPgogPHhzOmVsZW1lbnQgdHlwZT0idG5zOkxpc3RPZlF0V
- GVzdFVuaW9uVHlwZSIgbmFtZT0iTGlzdE9mUXRUZXN0VW5pb25UeXBlIiBuaWxsYWJsZT0id
- HJ1ZSIvPgo8L3hzOnNjaGVtYT4K</uax:ByteString>
+ 21wbGV4VHlwZSBuYW1lPSJRdFRlc3RTdHJ1Y3RXaXRoRGF0YVZhbHVlIj4KICA8eHM6Y29tc
+ GxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4KICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6U
+ XRBYnN0cmFjdEJhc2VTdHJ1Y3QiPgogICAgPHhzOnNlcXVlbmNlPgogICAgIDx4czplbGVtZ
+ W50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIiB0eXBlPSJ1YTpEYXRhVmFsdWUiIG5hb
+ WU9IkRhdGFWYWx1ZU1lbWJlciIvPgogICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgb
+ WF4T2NjdXJzPSIxIiB0eXBlPSJ1YTpWYXJpYW50IiBuYW1lPSJWYXJpYW50TWVtYmVyIi8+C
+ iAgICA8L3hzOnNlcXVlbmNlPgogICA8L3hzOmV4dGVuc2lvbj4KICA8L3hzOmNvbXBsZXhDb
+ 250ZW50PgogPC94czpjb21wbGV4VHlwZT4KIDx4czplbGVtZW50IHR5cGU9InRuczpRdFRlc
+ 3RTdHJ1Y3RXaXRoRGF0YVZhbHVlIiBuYW1lPSJRdFRlc3RTdHJ1Y3RXaXRoRGF0YVZhbHVlI
+ i8+CiA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUXRUZXN0U3RydWN0V2l0aERhdGFWY
+ Wx1ZSI+CiAgPHhzOnNlcXVlbmNlPgogICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1he
+ E9jY3Vycz0idW5ib3VuZGVkIiB0eXBlPSJ0bnM6UXRUZXN0U3RydWN0V2l0aERhdGFWYWx1Z
+ SIgbmFtZT0iUXRUZXN0U3RydWN0V2l0aERhdGFWYWx1ZSIgbmlsbGFibGU9InRydWUiLz4KI
+ CA8L3hzOnNlcXVlbmNlPgogPC94czpjb21wbGV4VHlwZT4KIDx4czplbGVtZW50IHR5cGU9I
+ nRuczpMaXN0T2ZRdFRlc3RTdHJ1Y3RXaXRoRGF0YVZhbHVlIiBuYW1lPSJMaXN0T2ZRdFRlc
+ 3RTdHJ1Y3RXaXRoRGF0YVZhbHVlIiBuaWxsYWJsZT0idHJ1ZSIvPgogPHhzOmNvbXBsZXhUe
+ XBlIG5hbWU9IlF0VGVzdFN0cnVjdFdpdGhEaWFnbm9zdGljSW5mbyI+CiAgPHhzOmNvbXBsZ
+ XhDb250ZW50IG1peGVkPSJmYWxzZSI+CiAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOlF0Q
+ WJzdHJhY3RCYXNlU3RydWN0Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICA8eHM6ZWxlbWVud
+ CBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIgdHlwZT0idWE6RGlhZ25vc3RpY0luZm8iI
+ G5hbWU9IkRpYWdub3N0aWNJbmZvTWVtYmVyIi8+CiAgICAgPHhzOmVsZW1lbnQgbWluT2Njd
+ XJzPSIwIiBtYXhPY2N1cnM9IjEiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBuY
+ W1lPSJEaWFnbm9zdGljSW5mb0FycmF5TWVtYmVyIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogI
+ CA8L3hzOmV4dGVuc2lvbj4KICA8L3hzOmNvbXBsZXhDb250ZW50PgogPC94czpjb21wbGV4V
+ HlwZT4KIDx4czplbGVtZW50IHR5cGU9InRuczpRdFRlc3RTdHJ1Y3RXaXRoRGlhZ25vc3RpY
+ 0luZm8iIG5hbWU9IlF0VGVzdFN0cnVjdFdpdGhEaWFnbm9zdGljSW5mbyIvPgogPHhzOmNvb
+ XBsZXhUeXBlIG5hbWU9Ikxpc3RPZlF0VGVzdFN0cnVjdFdpdGhEaWFnbm9zdGljSW5mbyI+C
+ iAgPHhzOnNlcXVlbmNlPgogICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vyc
+ z0idW5ib3VuZGVkIiB0eXBlPSJ0bnM6UXRUZXN0U3RydWN0V2l0aERpYWdub3N0aWNJbmZvI
+ iBuYW1lPSJRdFRlc3RTdHJ1Y3RXaXRoRGlhZ25vc3RpY0luZm8iIG5pbGxhYmxlPSJ0cnVlI
+ i8+CiAgPC94czpzZXF1ZW5jZT4KIDwveHM6Y29tcGxleFR5cGU+CiA8eHM6ZWxlbWVudCB0e
+ XBlPSJ0bnM6TGlzdE9mUXRUZXN0U3RydWN0V2l0aERpYWdub3N0aWNJbmZvIiBuYW1lPSJMa
+ XN0T2ZRdFRlc3RTdHJ1Y3RXaXRoRGlhZ25vc3RpY0luZm8iIG5pbGxhYmxlPSJ0cnVlIi8+C
+ iA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUXRUZXN0VW5pb25UeXBlIj4KICA8eHM6c2VxdWVuY
+ 2U+CiAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIiB0eXBlPSJ4c
+ zp1bnNpZ25lZEludCIgbmFtZT0iU3dpdGNoRmllbGQiLz4KICAgPHhzOmNob2ljZT4KICAgI
+ Dx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIiB0eXBlPSJ4czpsb25nI
+ iBuYW1lPSJNZW1iZXIxIi8+CiAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY
+ 3Vycz0iMSIgdHlwZT0idG5zOlF0SW5uZXJUZXN0U3RydWN0VHlwZSIgbmFtZT0iTWVtYmVyM
+ iIvPgogICA8L3hzOmNob2ljZT4KICA8L3hzOnNlcXVlbmNlPgogPC94czpjb21wbGV4VHlwZ
+ T4KIDx4czplbGVtZW50IHR5cGU9InRuczpRdFRlc3RVbmlvblR5cGUiIG5hbWU9IlF0VGVzd
+ FVuaW9uVHlwZSIvPgogPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlF0VGVzdFVuaW9uV
+ HlwZSI+CiAgPHhzOnNlcXVlbmNlPgogICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1he
+ E9jY3Vycz0idW5ib3VuZGVkIiB0eXBlPSJ0bnM6UXRUZXN0VW5pb25UeXBlIiBuYW1lPSJRd
+ FRlc3RVbmlvblR5cGUiIG5pbGxhYmxlPSJ0cnVlIi8+CiAgPC94czpzZXF1ZW5jZT4KIDwve
+ HM6Y29tcGxleFR5cGU+CiA8eHM6ZWxlbWVudCB0eXBlPSJ0bnM6TGlzdE9mUXRUZXN0VW5pb
+ 25UeXBlIiBuYW1lPSJMaXN0T2ZRdFRlc3RVbmlvblR5cGUiIG5pbGxhYmxlPSJ0cnVlIi8+C
+ jwveHM6c2NoZW1hPgo=</uax:ByteString>
</Value>
</UAVariable>
<UAVariable DataType="String" ParentNodeId="ns=1;i=6014" NodeId="ns=1;i=6015" BrowseName="NamespaceUri">
@@ -508,10 +566,11 @@
<Reference ReferenceType="HasTypeDefinition">i=61</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6009</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6002</Reference>
+ <Reference ReferenceType="Organizes">ns=1;i=6027</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6006</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6010</Reference>
- <Reference ReferenceType="HasComponent">ns=1;i=6003</Reference>
<Reference ReferenceType="HasComponent">ns=1;i=6011</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6003</Reference>
</References>
</UAObject>
<UAVariable DataType="QtTestStructType" NodeId="ns=1;i=6009" BrowseName="1:NestedStruct" AccessLevel="3">
@@ -521,13 +580,20 @@
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
</References>
</UAVariable>
- <UAVariable DataType="QtStructWithOptionalFieldType" NodeId="ns=1;i=6002" BrowseName="1:StructWihoutOptionalField" AccessLevel="3">
- <DisplayName>StructWihoutOptionalField</DisplayName>
+ <UAVariable SymbolicName="StructWihoutOptionalField" DataType="QtStructWithOptionalFieldType" NodeId="ns=1;i=6002" BrowseName="1:StructWithoutOptionalField" AccessLevel="3">
+ <DisplayName>StructWithoutOptionalField</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
</References>
</UAVariable>
+ <UAVariable DataType="QtTestStructWithDataValue" NodeId="ns=1;i=6027" BrowseName="1:StructWithDataValue" AccessLevel="3">
+ <DisplayName>StructWithDataValue</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
+ <Reference ReferenceType="Organizes" IsForward="false">ns=1;i=5009</Reference>
+ </References>
+ </UAVariable>
<UAVariable DataType="QtTestStructWithDiagnosticInfo" NodeId="ns=1;i=6006" BrowseName="1:StructWithDiagnosticInfo" AccessLevel="3">
<DisplayName>StructWithDiagnosticInfo</DisplayName>
<References>
@@ -542,15 +608,15 @@
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
</References>
</UAVariable>
- <UAVariable DataType="QtTestUnionType" NodeId="ns=1;i=6003" BrowseName="1:UnionWithSecondMember" AccessLevel="3">
- <DisplayName>UnionWithSecondMember</DisplayName>
+ <UAVariable DataType="QtTestUnionType" NodeId="ns=1;i=6011" BrowseName="1:UnionWithFirstMember" AccessLevel="3">
+ <DisplayName>UnionWithFirstMember</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
</References>
</UAVariable>
- <UAVariable DataType="QtTestUnionType" NodeId="ns=1;i=6011" BrowseName="1:UnionWithFirstMember" AccessLevel="3">
- <DisplayName>UnionWithFirstMember</DisplayName>
+ <UAVariable DataType="QtTestUnionType" NodeId="ns=1;i=6003" BrowseName="1:UnionWithSecondMember" AccessLevel="3">
+ <DisplayName>UnionWithSecondMember</DisplayName>
<References>
<Reference ReferenceType="HasTypeDefinition">i=63</Reference>
<Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
@@ -575,8 +641,8 @@
<UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=5003" BrowseName="Default Binary">
<DisplayName>Default Binary</DisplayName>
<References>
- <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3009</Reference>
<Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3009</Reference>
<Reference ReferenceType="HasDescription">ns=1;i=6004</Reference>
</References>
</UAObject>
@@ -647,9 +713,25 @@
<UAObject SymbolicName="DefaultXml" NodeId="ns=1;i=5013" BrowseName="Default XML">
<DisplayName>Default XML</DisplayName>
<References>
- <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3009</Reference>
<Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3009</Reference>
<Reference ReferenceType="HasDescription">ns=1;i=6005</Reference>
</References>
</UAObject>
+ <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=5014" BrowseName="Default Binary">
+ <DisplayName>Default Binary</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3010</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6007</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultXml" NodeId="ns=1;i=5015" BrowseName="Default XML">
+ <DisplayName>Default XML</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3010</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6008</Reference>
+ </References>
+ </UAObject>
</UANodeSet>
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.xsd b/tests/open62541-testserver/TestModel/qtopcuatestmodel.xsd
index 0ba049b..95900d0 100644
--- a/tests/open62541-testserver/TestModel/qtopcuatestmodel.xsd
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.xsd
@@ -77,6 +77,23 @@
</xs:sequence>
</xs:complexType>
<xs:element type="tns:ListOfQtTestStructType" name="ListOfQtTestStructType" nillable="true"/>
+ <xs:complexType name="QtTestStructWithDataValue">
+ <xs:complexContent mixed="false">
+ <xs:extension base="tns:QtAbstractBaseStruct">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" type="ua:DataValue" name="DataValueMember"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="ua:Variant" name="VariantMember"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element type="tns:QtTestStructWithDataValue" name="QtTestStructWithDataValue"/>
+ <xs:complexType name="ListOfQtTestStructWithDataValue">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:QtTestStructWithDataValue" name="QtTestStructWithDataValue" nillable="true"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element type="tns:ListOfQtTestStructWithDataValue" name="ListOfQtTestStructWithDataValue" nillable="true"/>
<xs:complexType name="QtTestStructWithDiagnosticInfo">
<xs:complexContent mixed="false">
<xs:extension base="tns:QtAbstractBaseStruct">
diff --git a/tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.c b/tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.c
index ec5a9b4..09f7e90 100644
--- a/tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.c
+++ b/tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.c
@@ -141,11 +141,79 @@ UA_NODEID_NUMERIC(ns[1], 5006LU)
);
}
-/* QtTestStructWithDiagnosticInfo - ns=1;i=3009 */
+/* QtTestStructWithDataValue - ns=1;i=3010 */
static UA_StatusCode function_namespace_qtopcuatestmodel_generated_6_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructWithDataValue");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_DATATYPE,
+UA_NODEID_NUMERIC(ns[1], 3010LU),
+UA_NODEID_NUMERIC(ns[1], 3008LU),
+UA_NODEID_NUMERIC(ns[0], 45LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestStructWithDataValue"),
+ UA_NODEID_NULL,
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_DATATYPEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_6_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 3010LU)
+);
+}
+
+/* Default XML - ns=1;i=5015 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_7_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5015LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default XML"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5015LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3010LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_7_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5015LU)
+);
+}
+
+/* Default Binary - ns=1;i=5014 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_8_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5014LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default Binary"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5014LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3010LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_8_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5014LU)
+);
+}
+
+/* QtTestStructWithDiagnosticInfo - ns=1;i=3009 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_9_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructWithDiagnosticInfo");
retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_DATATYPE,
UA_NODEID_NUMERIC(ns[1], 3009LU),
@@ -157,7 +225,7 @@ UA_QUALIFIEDNAME(ns[1], "QtTestStructWithDiagnosticInfo"),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_6_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_9_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 3009LU)
);
@@ -165,7 +233,7 @@ UA_NODEID_NUMERIC(ns[1], 3009LU)
/* Default XML - ns=1;i=5013 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_7_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_10_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_ObjectAttributes attr = UA_ObjectAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
@@ -180,7 +248,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5013LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_7_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_10_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 5013LU)
);
@@ -188,7 +256,7 @@ UA_NODEID_NUMERIC(ns[1], 5013LU)
/* Default Binary - ns=1;i=5003 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_8_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_11_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_ObjectAttributes attr = UA_ObjectAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
@@ -203,7 +271,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5003LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_8_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_11_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 5003LU)
);
@@ -211,7 +279,7 @@ UA_NODEID_NUMERIC(ns[1], 5003LU)
/* QtStructWithOptionalFieldType - ns=1;i=3006 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_9_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_12_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "QtStructWithOptionalFieldType");
@@ -225,7 +293,7 @@ UA_QUALIFIEDNAME(ns[1], "QtStructWithOptionalFieldType"),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_9_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_12_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 3006LU)
);
@@ -233,7 +301,7 @@ UA_NODEID_NUMERIC(ns[1], 3006LU)
/* Default XML - ns=1;i=5011 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_10_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_13_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_ObjectAttributes attr = UA_ObjectAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
@@ -248,7 +316,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5011LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_10_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_13_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 5011LU)
);
@@ -256,7 +324,7 @@ UA_NODEID_NUMERIC(ns[1], 5011LU)
/* Default Binary - ns=1;i=5010 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_11_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_14_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_ObjectAttributes attr = UA_ObjectAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
@@ -271,7 +339,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5010LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_11_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_14_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 5010LU)
);
@@ -279,7 +347,7 @@ UA_NODEID_NUMERIC(ns[1], 5010LU)
/* QtInnerTestStructType - ns=1;i=3004 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_12_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_15_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "QtInnerTestStructType");
@@ -293,7 +361,7 @@ UA_QUALIFIEDNAME(ns[1], "QtInnerTestStructType"),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_12_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_15_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 3004LU)
);
@@ -301,7 +369,7 @@ UA_NODEID_NUMERIC(ns[1], 3004LU)
/* Default XML - ns=1;i=5005 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_13_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_16_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_ObjectAttributes attr = UA_ObjectAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
@@ -316,7 +384,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5005LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_13_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_16_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 5005LU)
);
@@ -324,7 +392,7 @@ UA_NODEID_NUMERIC(ns[1], 5005LU)
/* Default Binary - ns=1;i=5004 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_14_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_17_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_ObjectAttributes attr = UA_ObjectAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
@@ -339,7 +407,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5004LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_14_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_17_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 5004LU)
);
@@ -347,7 +415,7 @@ UA_NODEID_NUMERIC(ns[1], 5004LU)
/* QtTestStructType - ns=1;i=3003 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_15_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_18_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructType");
@@ -361,7 +429,7 @@ UA_QUALIFIEDNAME(ns[1], "QtTestStructType"),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_15_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_18_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 3003LU)
);
@@ -369,7 +437,7 @@ UA_NODEID_NUMERIC(ns[1], 3003LU)
/* Default XML - ns=1;i=5002 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_16_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_19_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_ObjectAttributes attr = UA_ObjectAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
@@ -384,7 +452,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5002LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_16_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_19_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 5002LU)
);
@@ -392,7 +460,7 @@ UA_NODEID_NUMERIC(ns[1], 5002LU)
/* Default Binary - ns=1;i=5001 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_17_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_20_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_ObjectAttributes attr = UA_ObjectAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
@@ -407,7 +475,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5001LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_17_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_20_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 5001LU)
);
@@ -415,7 +483,7 @@ UA_NODEID_NUMERIC(ns[1], 5001LU)
/* MyDoubleSubtype - ns=1;i=3007 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_18_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_21_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "MyDoubleSubtype");
@@ -429,7 +497,7 @@ UA_QUALIFIEDNAME(ns[1], "MyDoubleSubtype"),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_18_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_21_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 3007LU)
);
@@ -437,7 +505,7 @@ UA_NODEID_NUMERIC(ns[1], 3007LU)
/* QtTestEnumeration - ns=1;i=3002 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_19_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_22_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "QtTestEnumeration");
@@ -451,7 +519,7 @@ UA_QUALIFIEDNAME(ns[1], "QtTestEnumeration"),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_19_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_22_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 3002LU)
);
@@ -459,7 +527,7 @@ UA_NODEID_NUMERIC(ns[1], 3002LU)
/* EnumStrings - ns=1;i=6001 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_20_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_23_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -489,7 +557,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6001LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_20_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_23_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6001LU)
);
@@ -497,7 +565,7 @@ UA_NODEID_NUMERIC(ns[1], 6001LU)
/* DecoderTestNodes - ns=1;i=5009 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_21_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_24_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_ObjectAttributes attr = UA_ObjectAttributes_default;
attr.displayName = UA_LOCALIZEDTEXT("", "DecoderTestNodes");
@@ -511,15 +579,43 @@ UA_NODEID_NUMERIC(ns[0], 61LU),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_21_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_24_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 5009LU)
);
}
+/* StructWithDataValue - ns=1;i=6027 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_25_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 3;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[1], 3010LU);
+attr.displayName = UA_LOCALIZEDTEXT("", "StructWithDataValue");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6027LU),
+UA_NODEID_NUMERIC(ns[1], 5009LU),
+UA_NODEID_NUMERIC(ns[0], 35LU),
+UA_QUALIFIEDNAME(ns[1], "StructWithDataValue"),
+UA_NODEID_NUMERIC(ns[0], 63LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_25_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6027LU)
+);
+}
+
/* UnionWithFirstMember - ns=1;i=6011 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_22_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_26_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -539,7 +635,7 @@ UA_NODEID_NUMERIC(ns[0], 63LU),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_22_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_26_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6011LU)
);
@@ -547,7 +643,7 @@ UA_NODEID_NUMERIC(ns[1], 6011LU)
/* StructWithOptionalField - ns=1;i=6010 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_23_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_27_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -567,7 +663,7 @@ UA_NODEID_NUMERIC(ns[0], 63LU),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_23_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_27_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6010LU)
);
@@ -575,7 +671,7 @@ UA_NODEID_NUMERIC(ns[1], 6010LU)
/* NestedStruct - ns=1;i=6009 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_24_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_28_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -595,7 +691,7 @@ UA_NODEID_NUMERIC(ns[0], 63LU),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_24_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_28_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6009LU)
);
@@ -603,7 +699,7 @@ UA_NODEID_NUMERIC(ns[1], 6009LU)
/* StructWithDiagnosticInfo - ns=1;i=6006 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_25_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_29_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -623,7 +719,7 @@ UA_NODEID_NUMERIC(ns[0], 63LU),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_25_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_29_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6006LU)
);
@@ -631,7 +727,7 @@ UA_NODEID_NUMERIC(ns[1], 6006LU)
/* UnionWithSecondMember - ns=1;i=6003 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_26_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_30_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -651,15 +747,15 @@ UA_NODEID_NUMERIC(ns[0], 63LU),
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_26_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_30_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6003LU)
);
}
-/* StructWihoutOptionalField - ns=1;i=6002 */
+/* StructWithoutOptionalField - ns=1;i=6002 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_27_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_31_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -668,29 +764,29 @@ attr.accessLevel = 3;
/* Value rank inherited */
attr.valueRank = -2;
attr.dataType = UA_NODEID_NUMERIC(ns[1], 3006LU);
-attr.displayName = UA_LOCALIZEDTEXT("", "StructWihoutOptionalField");
+attr.displayName = UA_LOCALIZEDTEXT("", "StructWithoutOptionalField");
retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
UA_NODEID_NUMERIC(ns[1], 6002LU),
UA_NODEID_NUMERIC(ns[1], 5009LU),
UA_NODEID_NUMERIC(ns[0], 47LU),
-UA_QUALIFIEDNAME(ns[1], "StructWihoutOptionalField"),
+UA_QUALIFIEDNAME(ns[1], "StructWithoutOptionalField"),
UA_NODEID_NUMERIC(ns[0], 63LU),
(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_27_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_31_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6002LU)
);
}
/* TypeDictionary - ns=1;i=6014 */
-static const UA_Byte variablenode_ns_1_i_6014_variant_DataContents_byteArray[6075] = {60, 120, 115, 58, 115, 99, 104, 101, 109, 97, 32, 101, 108, 101, 109, 101, 110, 116, 70, 111, 114, 109, 68, 101, 102, 97, 117, 108, 116, 61, 34, 113, 117, 97, 108, 105, 102, 105, 101, 100, 34, 32, 116, 97, 114, 103, 101, 116, 78, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 32, 120, 109, 108, 110, 115, 58, 116, 110, 115, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 32, 120, 109, 108, 110, 115, 58, 117, 97, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 50, 48, 48, 56, 47, 48, 50, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 32, 120, 109, 108, 110, 115, 58, 120, 115, 61, 34, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48, 48, 49, 47, 88, 77, 76, 83, 99, 104, 101, 109, 97, 34, 62, 10, 32, 60, 120, 115, 58, 105, 109, 112, 111, 114, 116, 32, 110, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 50, 48, 48, 56, 47, 48, 50, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 47, 62, 10, 32, 60, 120, 115, 58, 115, 105, 109, 112, 108, 101, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 62, 10, 32, 32, 60, 120, 115, 58, 114, 101, 115, 116, 114, 105, 99, 116, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 120, 115, 58, 115, 116, 114, 105, 110, 103, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 85, 110, 107, 110, 111, 119, 110, 95, 48, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 70, 105, 114, 115, 116, 79, 112, 116, 105, 111, 110, 95, 49, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 83, 101, 99, 111, 110, 100, 79, 112, 116, 105, 111, 110, 95, 50, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 84, 104, 105, 114, 100, 79, 112, 116, 105, 111, 110, 95, 51, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 114, 101, 115, 116, 114, 105, 99, 116, 105, 111, 110, 62, 10, 32, 60, 47, 120, 115, 58, 115, 105, 109, 112, 108, 101, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 47, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 32, 109, 105, 120, 101, 100, 61, 34, 102, 97, 108, 115, 101, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 100, 111, 117, 98, 108, 101, 34, 32, 110, 97, 109, 101, 61, 34, 68, 111, 117, 98, 108, 101, 83, 117, 98, 116, 121, 112, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 62, 10, 32, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 117, 110, 115, 105, 103, 110, 101, 100, 73, 110, 116, 34, 32, 110, 97, 109, 101, 61, 34, 69, 110, 99, 111, 100, 105, 110, 103, 77, 97, 115, 107, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 100, 111, 117, 98, 108, 101, 34, 32, 110, 97, 109, 101, 61, 34, 77, 97, 110, 100, 97, 116, 111, 114, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 100, 111, 117, 98, 108, 101, 34, 32, 110, 97, 109, 101, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 32, 109, 105, 120, 101, 100, 61, 34, 102, 97, 108, 115, 101, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 115, 116, 114, 105, 110, 103, 34, 32, 110, 97, 109, 101, 61, 34, 83, 116, 114, 105, 110, 103, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 34, 32, 110, 97, 109, 101, 61, 34, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 76, 105, 115, 116, 79, 102, 73, 110, 116, 54, 52, 34, 32, 110, 97, 109, 101, 61, 34, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 69, 110, 117, 109, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 62, 10, 32, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 62, 10, 32, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 32, 109, 105, 120, 101, 100, 61, 34, 102, 97, 108, 115, 101, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 76, 105, 115, 116, 79, 102, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 62, 10, 32, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 117, 110, 115, 105, 103, 110, 101, 100, 73, 110, 116, 34, 32, 110, 97, 109, 101, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 99, 104, 111, 105, 99, 101, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 108, 111, 110, 103, 34, 32, 110, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 49, 34, 47, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 50, 34, 47, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 99, 104, 111, 105, 99, 101, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 60, 47, 120, 115, 58, 115, 99, 104, 101, 109, 97, 62, 10};
+static const UA_Byte variablenode_ns_1_i_6014_variant_DataContents_byteArray[6932] = {60, 120, 115, 58, 115, 99, 104, 101, 109, 97, 32, 101, 108, 101, 109, 101, 110, 116, 70, 111, 114, 109, 68, 101, 102, 97, 117, 108, 116, 61, 34, 113, 117, 97, 108, 105, 102, 105, 101, 100, 34, 32, 116, 97, 114, 103, 101, 116, 78, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 32, 120, 109, 108, 110, 115, 58, 116, 110, 115, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 32, 120, 109, 108, 110, 115, 58, 117, 97, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 50, 48, 48, 56, 47, 48, 50, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 32, 120, 109, 108, 110, 115, 58, 120, 115, 61, 34, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48, 48, 49, 47, 88, 77, 76, 83, 99, 104, 101, 109, 97, 34, 62, 10, 32, 60, 120, 115, 58, 105, 109, 112, 111, 114, 116, 32, 110, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 50, 48, 48, 56, 47, 48, 50, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 47, 62, 10, 32, 60, 120, 115, 58, 115, 105, 109, 112, 108, 101, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 62, 10, 32, 32, 60, 120, 115, 58, 114, 101, 115, 116, 114, 105, 99, 116, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 120, 115, 58, 115, 116, 114, 105, 110, 103, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 85, 110, 107, 110, 111, 119, 110, 95, 48, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 70, 105, 114, 115, 116, 79, 112, 116, 105, 111, 110, 95, 49, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 83, 101, 99, 111, 110, 100, 79, 112, 116, 105, 111, 110, 95, 50, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 84, 104, 105, 114, 100, 79, 112, 116, 105, 111, 110, 95, 51, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 114, 101, 115, 116, 114, 105, 99, 116, 105, 111, 110, 62, 10, 32, 60, 47, 120, 115, 58, 115, 105, 109, 112, 108, 101, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 47, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 32, 109, 105, 120, 101, 100, 61, 34, 102, 97, 108, 115, 101, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 100, 111, 117, 98, 108, 101, 34, 32, 110, 97, 109, 101, 61, 34, 68, 111, 117, 98, 108, 101, 83, 117, 98, 116, 121, 112, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 62, 10, 32, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 117, 110, 115, 105, 103, 110, 101, 100, 73, 110, 116, 34, 32, 110, 97, 109, 101, 61, 34, 69, 110, 99, 111, 100, 105, 110, 103, 77, 97, 115, 107, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 100, 111, 117, 98, 108, 101, 34, 32, 110, 97, 109, 101, 61, 34, 77, 97, 110, 100, 97, 116, 111, 114, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 100, 111, 117, 98, 108, 101, 34, 32, 110, 97, 109, 101, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 32, 109, 105, 120, 101, 100, 61, 34, 102, 97, 108, 115, 101, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 115, 116, 114, 105, 110, 103, 34, 32, 110, 97, 109, 101, 61, 34, 83, 116, 114, 105, 110, 103, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 34, 32, 110, 97, 109, 101, 61, 34, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 76, 105, 115, 116, 79, 102, 73, 110, 116, 54, 52, 34, 32, 110, 97, 109, 101, 61, 34, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 69, 110, 117, 109, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 62, 10, 32, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 32, 109, 105, 120, 101, 100, 61, 34, 102, 97, 108, 115, 101, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 32, 110, 97, 109, 101, 61, 34, 68, 97, 116, 97, 86, 97, 108, 117, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 86, 97, 114, 105, 97, 110, 116, 34, 32, 110, 97, 109, 101, 61, 34, 86, 97, 114, 105, 97, 110, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 62, 10, 32, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 62, 10, 32, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 32, 109, 105, 120, 101, 100, 61, 34, 102, 97, 108, 115, 101, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 76, 105, 115, 116, 79, 102, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 62, 10, 32, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 117, 110, 115, 105, 103, 110, 101, 100, 73, 110, 116, 34, 32, 110, 97, 109, 101, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 99, 104, 111, 105, 99, 101, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 108, 111, 110, 103, 34, 32, 110, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 49, 34, 47, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 50, 34, 47, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 99, 104, 111, 105, 99, 101, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 60, 47, 120, 115, 58, 115, 99, 104, 101, 109, 97, 62, 10};
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_28_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_32_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -702,7 +798,7 @@ attr.dataType = UA_NODEID_NUMERIC(ns[0], 15LU);
UA_ByteString *variablenode_ns_1_i_6014_variant_DataContents = UA_ByteString_new();
if (!variablenode_ns_1_i_6014_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
UA_ByteString_init(variablenode_ns_1_i_6014_variant_DataContents);
-variablenode_ns_1_i_6014_variant_DataContents->length = 6075;
+variablenode_ns_1_i_6014_variant_DataContents->length = 6932;
variablenode_ns_1_i_6014_variant_DataContents->data = (UA_Byte *)(void*)(uintptr_t)variablenode_ns_1_i_6014_variant_DataContents_byteArray;
UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6014_variant_DataContents, &UA_TYPES[UA_TYPES_BYTESTRING]);
attr.displayName = UA_LOCALIZEDTEXT("", "TypeDictionary");
@@ -722,7 +818,7 @@ UA_ByteString_delete(variablenode_ns_1_i_6014_variant_DataContents);
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_28_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_32_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6014LU)
);
@@ -730,7 +826,7 @@ UA_NODEID_NUMERIC(ns[1], 6014LU)
/* QtAbstractBaseStruct - ns=1;i=6025 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_29_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_33_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -757,7 +853,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6025LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_29_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_33_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6025LU)
);
@@ -765,7 +861,7 @@ UA_NODEID_NUMERIC(ns[1], 6025LU)
/* QtTestUnionType - ns=1;i=6023 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_30_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_34_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -792,7 +888,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6023LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_30_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_34_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6023LU)
);
@@ -800,7 +896,7 @@ UA_NODEID_NUMERIC(ns[1], 6023LU)
/* QtTestStructType - ns=1;i=6021 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_31_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_35_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -827,7 +923,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6021LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_31_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_35_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6021LU)
);
@@ -835,7 +931,7 @@ UA_NODEID_NUMERIC(ns[1], 6021LU)
/* QtStructWithOptionalFieldType - ns=1;i=6019 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_32_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_36_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -862,7 +958,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6019LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_32_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_36_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6019LU)
);
@@ -870,7 +966,7 @@ UA_NODEID_NUMERIC(ns[1], 6019LU)
/* QtInnerTestStructType - ns=1;i=6017 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_33_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_37_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -897,7 +993,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6017LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_33_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_37_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6017LU)
);
@@ -905,7 +1001,7 @@ UA_NODEID_NUMERIC(ns[1], 6017LU)
/* NamespaceUri - ns=1;i=6015 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_34_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_38_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -931,15 +1027,50 @@ UA_String_delete(variablenode_ns_1_i_6015_variant_DataContents);
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_34_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_38_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6015LU)
);
}
+/* QtTestStructWithDataValue - ns=1;i=6008 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_39_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6008_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6008_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6008_variant_DataContents);
+*variablenode_ns_1_i_6008_variant_DataContents = UA_STRING_ALLOC("//xs:element[@name='QtTestStructWithDataValue']");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6008_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructWithDataValue");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6008LU),
+UA_NODEID_NUMERIC(ns[1], 6014LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestStructWithDataValue"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6008_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6008LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5015LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_39_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6008LU)
+);
+}
+
/* QtTestStructWithDiagnosticInfo - ns=1;i=6005 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_35_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_40_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -966,18 +1097,18 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6005LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_35_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_40_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6005LU)
);
}
/* TypeDictionary - ns=1;i=6012 */
-static const UA_Byte variablenode_ns_1_i_6012_variant_DataContents_byteArray[2880] = {60, 111, 112, 99, 58, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 32, 120, 109, 108, 110, 115, 58, 120, 115, 105, 61, 34, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48, 48, 49, 47, 88, 77, 76, 83, 99, 104, 101, 109, 97, 45, 105, 110, 115, 116, 97, 110, 99, 101, 34, 32, 120, 109, 108, 110, 115, 58, 116, 110, 115, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 34, 32, 68, 101, 102, 97, 117, 108, 116, 66, 121, 116, 101, 79, 114, 100, 101, 114, 61, 34, 76, 105, 116, 116, 108, 101, 69, 110, 100, 105, 97, 110, 34, 32, 120, 109, 108, 110, 115, 58, 111, 112, 99, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 66, 105, 110, 97, 114, 121, 83, 99, 104, 101, 109, 97, 47, 34, 32, 120, 109, 108, 110, 115, 58, 117, 97, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 34, 32, 84, 97, 114, 103, 101, 116, 78, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 34, 62, 10, 32, 60, 111, 112, 99, 58, 73, 109, 112, 111, 114, 116, 32, 78, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 34, 47, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 117, 97, 58, 69, 120, 116, 101, 110, 115, 105, 111, 110, 79, 98, 106, 101, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 47, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 68, 111, 117, 98, 108, 101, 34, 32, 78, 97, 109, 101, 61, 34, 68, 111, 117, 98, 108, 101, 83, 117, 98, 116, 121, 112, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 66, 105, 116, 34, 32, 78, 97, 109, 101, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 83, 112, 101, 99, 105, 102, 105, 101, 100, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 61, 34, 51, 49, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 66, 105, 116, 34, 32, 78, 97, 109, 101, 61, 34, 82, 101, 115, 101, 114, 118, 101, 100, 49, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 68, 111, 117, 98, 108, 101, 34, 32, 78, 97, 109, 101, 61, 34, 77, 97, 110, 100, 97, 116, 111, 114, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 83, 112, 101, 99, 105, 102, 105, 101, 100, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 68, 111, 117, 98, 108, 101, 34, 32, 78, 97, 109, 101, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 67, 104, 97, 114, 65, 114, 114, 97, 121, 34, 32, 78, 97, 109, 101, 61, 34, 83, 116, 114, 105, 110, 103, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 34, 32, 78, 97, 109, 101, 61, 34, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 34, 32, 78, 97, 109, 101, 61, 34, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 78, 111, 79, 102, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 70, 105, 101, 108, 100, 61, 34, 78, 111, 79, 102, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 54, 52, 34, 32, 78, 97, 109, 101, 61, 34, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 78, 97, 109, 101, 61, 34, 69, 110, 117, 109, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 78, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 78, 111, 79, 102, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 70, 105, 101, 108, 100, 61, 34, 78, 111, 79, 102, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 78, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 78, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 78, 111, 79, 102, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 70, 105, 101, 108, 100, 61, 34, 78, 111, 79, 102, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 78, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 117, 97, 58, 85, 110, 105, 111, 110, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 85, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 54, 52, 34, 32, 83, 119, 105, 116, 99, 104, 86, 97, 108, 117, 101, 61, 34, 49, 34, 32, 78, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 49, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 83, 119, 105, 116, 99, 104, 86, 97, 108, 117, 101, 61, 34, 50, 34, 32, 78, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 50, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 84, 121, 112, 101, 32, 76, 101, 110, 103, 116, 104, 73, 110, 66, 105, 116, 115, 61, 34, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 85, 110, 107, 110, 111, 119, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 48, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 70, 105, 114, 115, 116, 79, 112, 116, 105, 111, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 49, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 83, 101, 99, 111, 110, 100, 79, 112, 116, 105, 111, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 50, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 84, 104, 105, 114, 100, 79, 112, 116, 105, 111, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 51, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 84, 121, 112, 101, 62, 10, 60, 47, 111, 112, 99, 58, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 62, 10};
+static const UA_Byte variablenode_ns_1_i_6012_variant_DataContents_byteArray[3114] = {60, 111, 112, 99, 58, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 32, 120, 109, 108, 110, 115, 58, 120, 115, 105, 61, 34, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48, 48, 49, 47, 88, 77, 76, 83, 99, 104, 101, 109, 97, 45, 105, 110, 115, 116, 97, 110, 99, 101, 34, 32, 120, 109, 108, 110, 115, 58, 116, 110, 115, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 34, 32, 68, 101, 102, 97, 117, 108, 116, 66, 121, 116, 101, 79, 114, 100, 101, 114, 61, 34, 76, 105, 116, 116, 108, 101, 69, 110, 100, 105, 97, 110, 34, 32, 120, 109, 108, 110, 115, 58, 111, 112, 99, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 66, 105, 110, 97, 114, 121, 83, 99, 104, 101, 109, 97, 47, 34, 32, 120, 109, 108, 110, 115, 58, 117, 97, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 34, 32, 84, 97, 114, 103, 101, 116, 78, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 34, 62, 10, 32, 60, 111, 112, 99, 58, 73, 109, 112, 111, 114, 116, 32, 78, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 34, 47, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 117, 97, 58, 69, 120, 116, 101, 110, 115, 105, 111, 110, 79, 98, 106, 101, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 47, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 68, 111, 117, 98, 108, 101, 34, 32, 78, 97, 109, 101, 61, 34, 68, 111, 117, 98, 108, 101, 83, 117, 98, 116, 121, 112, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 66, 105, 116, 34, 32, 78, 97, 109, 101, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 83, 112, 101, 99, 105, 102, 105, 101, 100, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 61, 34, 51, 49, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 66, 105, 116, 34, 32, 78, 97, 109, 101, 61, 34, 82, 101, 115, 101, 114, 118, 101, 100, 49, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 68, 111, 117, 98, 108, 101, 34, 32, 78, 97, 109, 101, 61, 34, 77, 97, 110, 100, 97, 116, 111, 114, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 83, 112, 101, 99, 105, 102, 105, 101, 100, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 68, 111, 117, 98, 108, 101, 34, 32, 78, 97, 109, 101, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 67, 104, 97, 114, 65, 114, 114, 97, 121, 34, 32, 78, 97, 109, 101, 61, 34, 83, 116, 114, 105, 110, 103, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 34, 32, 78, 97, 109, 101, 61, 34, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 34, 32, 78, 97, 109, 101, 61, 34, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 78, 111, 79, 102, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 70, 105, 101, 108, 100, 61, 34, 78, 111, 79, 102, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 54, 52, 34, 32, 78, 97, 109, 101, 61, 34, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 78, 97, 109, 101, 61, 34, 69, 110, 117, 109, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 78, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 78, 111, 79, 102, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 70, 105, 101, 108, 100, 61, 34, 78, 111, 79, 102, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 78, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 68, 97, 116, 97, 86, 97, 108, 117, 101, 34, 32, 78, 97, 109, 101, 61, 34, 68, 97, 116, 97, 86, 97, 108, 117, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 86, 97, 114, 105, 97, 110, 116, 34, 32, 78, 97, 109, 101, 61, 34, 86, 97, 114, 105, 97, 110, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 78, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 78, 111, 79, 102, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 70, 105, 101, 108, 100, 61, 34, 78, 111, 79, 102, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 78, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 117, 97, 58, 85, 110, 105, 111, 110, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 85, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 54, 52, 34, 32, 83, 119, 105, 116, 99, 104, 86, 97, 108, 117, 101, 61, 34, 49, 34, 32, 78, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 49, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 83, 119, 105, 116, 99, 104, 86, 97, 108, 117, 101, 61, 34, 50, 34, 32, 78, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 50, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 84, 121, 112, 101, 32, 76, 101, 110, 103, 116, 104, 73, 110, 66, 105, 116, 115, 61, 34, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 85, 110, 107, 110, 111, 119, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 48, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 70, 105, 114, 115, 116, 79, 112, 116, 105, 111, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 49, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 83, 101, 99, 111, 110, 100, 79, 112, 116, 105, 111, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 50, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 84, 104, 105, 114, 100, 79, 112, 116, 105, 111, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 51, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 84, 121, 112, 101, 62, 10, 60, 47, 111, 112, 99, 58, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 62, 10};
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_36_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_41_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -989,7 +1120,7 @@ attr.dataType = UA_NODEID_NUMERIC(ns[0], 15LU);
UA_ByteString *variablenode_ns_1_i_6012_variant_DataContents = UA_ByteString_new();
if (!variablenode_ns_1_i_6012_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
UA_ByteString_init(variablenode_ns_1_i_6012_variant_DataContents);
-variablenode_ns_1_i_6012_variant_DataContents->length = 2880;
+variablenode_ns_1_i_6012_variant_DataContents->length = 3114;
variablenode_ns_1_i_6012_variant_DataContents->data = (UA_Byte *)(void*)(uintptr_t)variablenode_ns_1_i_6012_variant_DataContents_byteArray;
UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6012_variant_DataContents, &UA_TYPES[UA_TYPES_BYTESTRING]);
attr.displayName = UA_LOCALIZEDTEXT("", "TypeDictionary");
@@ -1009,7 +1140,7 @@ UA_ByteString_delete(variablenode_ns_1_i_6012_variant_DataContents);
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_36_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_41_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6012LU)
);
@@ -1017,7 +1148,7 @@ UA_NODEID_NUMERIC(ns[1], 6012LU)
/* QtAbstractBaseStruct - ns=1;i=6024 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_37_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_42_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -1044,7 +1175,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6024LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_37_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_42_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6024LU)
);
@@ -1052,7 +1183,7 @@ UA_NODEID_NUMERIC(ns[1], 6024LU)
/* QtTestUnionType - ns=1;i=6022 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_38_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_43_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -1079,7 +1210,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6022LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_38_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_43_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6022LU)
);
@@ -1087,7 +1218,7 @@ UA_NODEID_NUMERIC(ns[1], 6022LU)
/* QtTestStructType - ns=1;i=6020 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_39_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_44_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -1114,7 +1245,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6020LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_39_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_44_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6020LU)
);
@@ -1122,7 +1253,7 @@ UA_NODEID_NUMERIC(ns[1], 6020LU)
/* QtStructWithOptionalFieldType - ns=1;i=6018 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_40_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_45_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -1149,7 +1280,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6018LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_40_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_45_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6018LU)
);
@@ -1157,7 +1288,7 @@ UA_NODEID_NUMERIC(ns[1], 6018LU)
/* QtInnerTestStructType - ns=1;i=6016 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_41_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_46_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -1184,7 +1315,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6016LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_41_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_46_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6016LU)
);
@@ -1192,7 +1323,7 @@ UA_NODEID_NUMERIC(ns[1], 6016LU)
/* NamespaceUri - ns=1;i=6013 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_42_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_47_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -1218,15 +1349,50 @@ UA_String_delete(variablenode_ns_1_i_6013_variant_DataContents);
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_42_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_47_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6013LU)
);
}
+/* QtTestStructWithDataValue - ns=1;i=6007 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_48_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6007_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6007_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6007_variant_DataContents);
+*variablenode_ns_1_i_6007_variant_DataContents = UA_STRING_ALLOC("QtTestStructWithDataValue");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6007_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructWithDataValue");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6007LU),
+UA_NODEID_NUMERIC(ns[1], 6012LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestStructWithDataValue"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6007_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6007LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5014LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_48_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6007LU)
+);
+}
+
/* QtTestStructWithDiagnosticInfo - ns=1;i=6004 */
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_43_begin(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_49_begin(UA_Server *server, UA_UInt16* ns) {
UA_StatusCode retVal = UA_STATUSCODE_GOOD;
UA_VariableAttributes attr = UA_VariableAttributes_default;
attr.minimumSamplingInterval = 0.000000;
@@ -1253,7 +1419,7 @@ retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6004LU), UA_NO
return retVal;
}
-static UA_StatusCode function_namespace_qtopcuatestmodel_generated_43_finish(UA_Server *server, UA_UInt16* ns) {
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_49_finish(UA_Server *server, UA_UInt16* ns) {
return UA_Server_addNode_finish(server,
UA_NODEID_NUMERIC(ns[1], 6004LU)
);
@@ -1322,6 +1488,18 @@ if((retVal = function_namespace_qtopcuatestmodel_generated_40_begin(server, ns))
if((retVal = function_namespace_qtopcuatestmodel_generated_41_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
if((retVal = function_namespace_qtopcuatestmodel_generated_42_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
if((retVal = function_namespace_qtopcuatestmodel_generated_43_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_44_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_45_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_46_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_47_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_48_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_49_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_49_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_48_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_47_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_46_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_45_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_44_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
if((retVal = function_namespace_qtopcuatestmodel_generated_43_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
if((retVal = function_namespace_qtopcuatestmodel_generated_42_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
if((retVal = function_namespace_qtopcuatestmodel_generated_41_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
diff --git a/tests/open62541-testserver/generated/qtopcuatestmodel_nodeids.h b/tests/open62541-testserver/generated/qtopcuatestmodel_nodeids.h
index 5102890..4ba02a2 100644
--- a/tests/open62541-testserver/generated/qtopcuatestmodel_nodeids.h
+++ b/tests/open62541-testserver/generated/qtopcuatestmodel_nodeids.h
@@ -19,6 +19,7 @@
#define UA_QTOPCUATESTMODELID_MYDOUBLESUBTYPE 3007 /* DataType */
#define UA_QTOPCUATESTMODELID_QTABSTRACTBASESTRUCT 3008 /* DataType */
#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTWITHDIAGNOSTICINFO 3009 /* DataType */
+#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTWITHDATAVALUE 3010 /* DataType */
#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTTYPE_ENCODING_DEFAULTBINARY 5001 /* Object */
#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTTYPE_ENCODING_DEFAULTXML 5002 /* Object */
#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTWITHDIAGNOSTICINFO_ENCODING_DEFAULTBINARY 5003 /* Object */
@@ -32,12 +33,16 @@
#define UA_QTOPCUATESTMODELID_QTSTRUCTWITHOPTIONALFIELDTYPE_ENCODING_DEFAULTXML 5011 /* Object */
#define UA_QTOPCUATESTMODELID_QTABSTRACTBASESTRUCT_ENCODING_DEFAULTXML 5012 /* Object */
#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTWITHDIAGNOSTICINFO_ENCODING_DEFAULTXML 5013 /* Object */
+#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTWITHDATAVALUE_ENCODING_DEFAULTBINARY 5014 /* Object */
+#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTWITHDATAVALUE_ENCODING_DEFAULTXML 5015 /* Object */
#define UA_QTOPCUATESTMODELID_QTTESTENUMERATION_ENUMSTRINGS 6001 /* Variable */
#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWIHOUTOPTIONALFIELD 6002 /* Variable */
#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_UNIONWITHSECONDMEMBER 6003 /* Variable */
#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA_QTTESTSTRUCTWITHDIAGNOSTICINFO 6004 /* Variable */
#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_QTTESTSTRUCTWITHDIAGNOSTICINFO 6005 /* Variable */
#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWITHDIAGNOSTICINFO 6006 /* Variable */
+#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA_QTTESTSTRUCTWITHDATAVALUE 6007 /* Variable */
+#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_QTTESTSTRUCTWITHDATAVALUE 6008 /* Variable */
#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_NESTEDSTRUCT 6009 /* Variable */
#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWITHOPTIONALFIELD 6010 /* Variable */
#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_UNIONWITHFIRSTMEMBER 6011 /* Variable */
@@ -55,4 +60,5 @@
#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_QTTESTUNIONTYPE 6023 /* Variable */
#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA_QTABSTRACTBASESTRUCT 6024 /* Variable */
#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_QTABSTRACTBASESTRUCT 6025 /* Variable */
+#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWITHDATAVALUE 6027 /* Variable */
#endif /* UA_NODEIDS_QTOPCUATESTMODEL_H_ */
diff --git a/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.c b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.c
index d235925..39e9770 100644
--- a/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.c
+++ b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.c
@@ -31,6 +31,23 @@ static UA_DataTypeMember QtStructWithOptionalFieldType_members[2] = {
true /* .isOptional */
},};
+/* QtTestStructWithDataValue */
+static UA_DataTypeMember QtTestStructWithDataValue_members[2] = {
+{
+ UA_TYPENAME("DataValueMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_DATAVALUE], /* .memberType */
+ 0, /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},
+{
+ UA_TYPENAME("VariantMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_VARIANT], /* .memberType */
+ offsetof(UA_QtTestStructWithDataValue, variantMember) - offsetof(UA_QtTestStructWithDataValue, dataValueMember) - sizeof(UA_DataValue), /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},};
+
/* QtTestStructWithDiagnosticInfo */
static UA_DataTypeMember QtTestStructWithDiagnosticInfo_members[2] = {
{
@@ -144,6 +161,18 @@ const UA_DataType UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_COUNT] = {
2, /* .membersSize */
QtStructWithOptionalFieldType_members /* .members */
},
+/* QtTestStructWithDataValue */
+{
+ UA_TYPENAME("QtTestStructWithDataValue") /* .typeName */
+ {4, UA_NODEIDTYPE_NUMERIC, {3010LU}}, /* .typeId */
+ {4, UA_NODEIDTYPE_NUMERIC, {5014LU}}, /* .binaryEncodingId */
+ sizeof(UA_QtTestStructWithDataValue), /* .memSize */
+ UA_DATATYPEKIND_STRUCTURE, /* .typeKind */
+ false, /* .pointerFree */
+ false, /* .overlayable */
+ 2, /* .membersSize */
+ QtTestStructWithDataValue_members /* .members */
+},
/* QtTestStructWithDiagnosticInfo */
{
UA_TYPENAME("QtTestStructWithDiagnosticInfo") /* .typeName */
diff --git a/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.h b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.h
index 1fce089..86e0b8a 100644
--- a/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.h
+++ b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.h
@@ -22,7 +22,7 @@ _UA_BEGIN_DECLS
* Every type is assigned an index in an array containing the type descriptions.
* These descriptions are used during type handling (copying, deletion,
* binary encoding, ...). */
-#define UA_TYPES_QTOPCUATESTMODEL_COUNT 6
+#define UA_TYPES_QTOPCUATESTMODEL_COUNT 7
extern UA_EXPORT const UA_DataType UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_COUNT];
/**
@@ -47,6 +47,17 @@ typedef struct {
#define UA_TYPES_QTOPCUATESTMODEL_QTSTRUCTWITHOPTIONALFIELDTYPE 1
/**
+ * QtTestStructWithDataValue
+ * ^^^^^^^^^^^^^^^^^^^^^^^^^
+ */
+typedef struct {
+ UA_DataValue dataValueMember;
+ UA_Variant variantMember;
+} UA_QtTestStructWithDataValue;
+
+#define UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDATAVALUE 2
+
+/**
* QtTestStructWithDiagnosticInfo
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
*/
@@ -56,7 +67,7 @@ typedef struct {
UA_DiagnosticInfo *diagnosticInfoArrayMember;
} UA_QtTestStructWithDiagnosticInfo;
-#define UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDIAGNOSTICINFO 2
+#define UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDIAGNOSTICINFO 3
/**
* QtTestUnionType
@@ -78,7 +89,7 @@ typedef struct {
} fields;
} UA_QtTestUnionType;
-#define UA_TYPES_QTOPCUATESTMODEL_QTTESTUNIONTYPE 3
+#define UA_TYPES_QTOPCUATESTMODEL_QTTESTUNIONTYPE 4
/**
* QtTestEnumeration
@@ -93,7 +104,7 @@ typedef enum {
} UA_QtTestEnumeration;
UA_STATIC_ASSERT(sizeof(UA_QtTestEnumeration) == sizeof(UA_Int32), enum_must_be_32bit);
-#define UA_TYPES_QTOPCUATESTMODEL_QTTESTENUMERATION 4
+#define UA_TYPES_QTOPCUATESTMODEL_QTTESTENUMERATION 5
/**
* QtTestStructType
@@ -111,7 +122,7 @@ typedef struct {
UA_QtInnerTestStructType *nestedStructArrayMember;
} UA_QtTestStructType;
-#define UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTTYPE 5
+#define UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTTYPE 6
_UA_END_DECLS
diff --git a/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated_handling.h b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated_handling.h
index cb46506..ee54ae2 100644
--- a/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated_handling.h
+++ b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated_handling.h
@@ -78,6 +78,37 @@ UA_QtStructWithOptionalFieldType_delete(UA_QtStructWithOptionalFieldType *p) {
UA_delete(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTSTRUCTWITHOPTIONALFIELDTYPE]);
}
+/* QtTestStructWithDataValue */
+static UA_INLINE void
+UA_QtTestStructWithDataValue_init(UA_QtTestStructWithDataValue *p) {
+ memset(p, 0, sizeof(UA_QtTestStructWithDataValue));
+}
+
+static UA_INLINE UA_QtTestStructWithDataValue *
+UA_QtTestStructWithDataValue_new(void) {
+ return (UA_QtTestStructWithDataValue*)UA_new(&UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDATAVALUE]);
+}
+
+static UA_INLINE UA_StatusCode
+UA_QtTestStructWithDataValue_copy(const UA_QtTestStructWithDataValue *src, UA_QtTestStructWithDataValue *dst) {
+ return UA_copy(src, dst, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDATAVALUE]);
+}
+
+UA_DEPRECATED static UA_INLINE void
+UA_QtTestStructWithDataValue_deleteMembers(UA_QtTestStructWithDataValue *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDATAVALUE]);
+}
+
+static UA_INLINE void
+UA_QtTestStructWithDataValue_clear(UA_QtTestStructWithDataValue *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDATAVALUE]);
+}
+
+static UA_INLINE void
+UA_QtTestStructWithDataValue_delete(UA_QtTestStructWithDataValue *p) {
+ UA_delete(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDATAVALUE]);
+}
+
/* QtTestStructWithDiagnosticInfo */
static UA_INLINE void
UA_QtTestStructWithDiagnosticInfo_init(UA_QtTestStructWithDiagnosticInfo *p) {
diff --git a/tests/open62541-testserver/testserver.cpp b/tests/open62541-testserver/testserver.cpp
index f1e0267..4ec0d61 100644
--- a/tests/open62541-testserver/testserver.cpp
+++ b/tests/open62541-testserver/testserver.cpp
@@ -1327,6 +1327,50 @@ UA_StatusCode TestServer::addEncoderTestModel()
}
}
+ {
+ auto data = UA_QtTestStructWithDataValue_new();
+
+ auto stringArray = static_cast<UA_String *>(UA_Array_new(4, &UA_TYPES[UA_TYPES_STRING]));
+ stringArray[0] = UA_STRING_ALLOC("TestString 1");
+ stringArray[1] = UA_STRING_ALLOC("TestString 2");
+ stringArray[2] = UA_STRING_ALLOC("TestString 3");
+ stringArray[3] = UA_STRING_ALLOC("TestString 4");
+ UA_Variant_setArray(&data->dataValueMember.value, stringArray, 4, &UA_TYPES[UA_TYPES_STRING]);
+
+ data->dataValueMember.value.arrayLength = 4;
+ data->dataValueMember.value.arrayDimensions = static_cast<quint32 *>(UA_Array_new(2, &UA_TYPES[UA_TYPES_UINT32]));
+ data->dataValueMember.value.arrayDimensions[0] = 2;
+ data->dataValueMember.value.arrayDimensions[1] = 2;
+ data->dataValueMember.value.arrayDimensionsSize = 2;
+
+ data->dataValueMember.hasValue = true;
+ data->dataValueMember.status = UA_STATUSCODE_BADINTERNALERROR;
+ data->dataValueMember.hasStatus = true;
+ data->dataValueMember.serverTimestamp = UA_DateTime_fromUnixTime(1698655307);
+ data->dataValueMember.hasServerTimestamp = true;
+ data->dataValueMember.sourceTimestamp = UA_DateTime_fromUnixTime(1698655306);
+ data->dataValueMember.hasSourceTimestamp = true;
+ data->dataValueMember.serverPicoseconds = 23;
+ data->dataValueMember.hasServerPicoseconds = true;
+ data->dataValueMember.sourcePicoseconds = 42;
+ data->dataValueMember.hasSourcePicoseconds = true;
+
+ const quint64 num = 42;
+ UA_Variant_setScalarCopy(&data->variantMember, &num, &UA_TYPES[UA_TYPES_UINT64]);
+
+ UA_Variant var;
+ UA_Variant_init(&var);
+ UA_Variant_setScalar(&var, data, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDATAVALUE]);
+
+ result = UA_Server_writeValue(m_server, UA_NODEID_NUMERIC(4, UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWITHDATAVALUE), var);
+ UA_Variant_clear(&var);
+
+ if (result != UA_STATUSCODE_GOOD) {
+ qWarning() << "Failed to write data value field struct node";
+ return result;
+ }
+ }
+
return result;
}
diff --git a/tools/datatypecodegenerator/stringidentifier.cpp b/tools/datatypecodegenerator/stringidentifier.cpp
index 1a2b9bb..ce45577 100644
--- a/tools/datatypecodegenerator/stringidentifier.cpp
+++ b/tools/datatypecodegenerator/stringidentifier.cpp
@@ -70,13 +70,16 @@ const QList<StringIdentifier::OpcUaPrecodedType> StringIdentifier::opcUaPrecoded
OpcUaPrecodedType("StructureField", "QOpcUaStructureField", "QOpcUaStructureField"),
OpcUaPrecodedType("StructureDefinition", "QOpcUaStructureDefinition", "QOpcUaStructureDefinition"),
OpcUaPrecodedType("EnumField", "QOpcUaEnumField", "QOpcUaEnumField"),
- OpcUaPrecodedType("EnumDefinition", "QOpcUaEnumDefinition", "QOpcUaEnumDefinition")
+ OpcUaPrecodedType("EnumDefinition", "QOpcUaEnumDefinition", "QOpcUaEnumDefinition"),
+ OpcUaPrecodedType("DataValue", "QOpcUaDataValue", "QOpcUaDataValue"),
+ OpcUaPrecodedType("Variant", "QOpcUaVariant", "QOpcUaVariant")
};
const QList<QString> StringIdentifier::buildInTypesWithBitMask = {"DiagnosticInfo",
"LocalizedText",
"Variant",
- "DataValue"};
+ "DataValue",
+ "Variant"};
const QMap<QString, QString> StringIdentifier::typeNameDataTypeConverter
= {{"opc:Bit", "bool"},