diff options
author | Jannis Voelker <jannis.voelker@basyskom.com> | 2023-10-27 15:18:54 +0200 |
---|---|---|
committer | Jannis Voelker <jannis.voelker@basyskom.com> | 2023-12-06 08:31:29 +0100 |
commit | bba934aebc0cc37f012cea446258ec9b2cc106c9 (patch) | |
tree | 8406d53363d368fa78825975727925abc7530271 | |
parent | 925ea2eda7778d5e7766e19e6c39a034f436b873 (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>
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 Binary files differindex 15c64c2..9c205d9 100644 --- a/tests/open62541-testserver/TestModel/qtopcuatestmodel.ua +++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.ua 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"}, |