diff options
Diffstat (limited to 'tests/auto')
55 files changed, 9449 insertions, 254 deletions
diff --git a/tests/auto/corelib/animation/qparallelanimationgroup/BLACKLIST b/tests/auto/corelib/animation/qparallelanimationgroup/BLACKLIST index 3e42a737df..9172149e33 100644 --- a/tests/auto/corelib/animation/qparallelanimationgroup/BLACKLIST +++ b/tests/auto/corelib/animation/qparallelanimationgroup/BLACKLIST @@ -1,2 +1,2 @@ [deleteChildrenWithRunningGroup] -osx-10.13 +macos diff --git a/tests/auto/corelib/animation/qpauseanimation/BLACKLIST b/tests/auto/corelib/animation/qpauseanimation/BLACKLIST index 33cd53d788..714df08b18 100644 --- a/tests/auto/corelib/animation/qpauseanimation/BLACKLIST +++ b/tests/auto/corelib/animation/qpauseanimation/BLACKLIST @@ -1,5 +1,6 @@ [pauseAndPropertyAnimations] -osx +macos [multipleSequentialGroups] -osx - +macos +[noTimerUpdates] +macos diff --git a/tests/auto/corelib/animation/qsequentialanimationgroup/BLACKLIST b/tests/auto/corelib/animation/qsequentialanimationgroup/BLACKLIST index e516c0e826..f07c0ec4a1 100644 --- a/tests/auto/corelib/animation/qsequentialanimationgroup/BLACKLIST +++ b/tests/auto/corelib/animation/qsequentialanimationgroup/BLACKLIST @@ -1,6 +1,6 @@ [finishWithUncontrolledAnimation] windows-10 msvc-2015 -osx-10.13 +macos [groupWithZeroDurationAnimations] -osx-10.13 +macos diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp index e799369c8a..269a59ae41 100644 --- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp +++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp @@ -42,8 +42,6 @@ #include <QtNetwork/QHostInfo> #include <stdlib.h> -typedef void (QProcess::*QProcessFinishedSignal1)(int); -typedef void (QProcess::*QProcessFinishedSignal2)(int, QProcess::ExitStatus); typedef void (QProcess::*QProcessErrorSignal)(QProcess::ProcessError); class tst_QProcess : public QObject @@ -152,7 +150,6 @@ private slots: void failToStartEmptyArgs(); #if QT_DEPRECATED_SINCE(5, 13) - void crashTest2_deprecated(); void restartProcessDeadlock_deprecated(); void waitForReadyReadInAReadyReadSlot_deprecated(); void finishProcessBeforeReadingDone_deprecated(); @@ -350,7 +347,7 @@ void tst_QProcess::crashTest() qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus"); QSignalSpy spy(process.data(), &QProcess::errorOccurred); - QSignalSpy spy2(process.data(), static_cast<QProcessFinishedSignal2>(&QProcess::finished)); + QSignalSpy spy2(process.data(), &QProcess::finished); QVERIFY(spy.isValid()); QVERIFY(spy2.isValid()); @@ -393,13 +390,12 @@ void tst_QProcess::crashTest2() qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus"); QSignalSpy spy(&process, static_cast<QProcessErrorSignal>(&QProcess::errorOccurred)); - QSignalSpy spy2(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished)); + QSignalSpy spy2(&process, &QProcess::finished); QVERIFY(spy.isValid()); QVERIFY(spy2.isValid()); - QObject::connect(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished), - this, &tst_QProcess::exitLoopSlot); + QObject::connect(&process, &QProcess::finished, this, &tst_QProcess::exitLoopSlot); QTestEventLoop::instance().enterLoop(30); if (QTestEventLoop::instance().timeout()) @@ -724,15 +720,14 @@ void tst_QProcess::restartProcessDeadlock() // process in the finished() connected slot causes a deadlock // because of the way QProcessManager uses its locks. QProcess process; - connect(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished), - this, &tst_QProcess::restartProcess); + connect(&process, &QProcess::finished, this, &tst_QProcess::restartProcess); process.start("testProcessEcho/testProcessEcho"); QCOMPARE(process.write("", 1), qlonglong(1)); QVERIFY(process.waitForFinished(5000)); - QObject::disconnect(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished), nullptr, nullptr); + QObject::disconnect(&process, &QProcess::finished, nullptr, nullptr); QCOMPARE(process.write("", 1), qlonglong(1)); QVERIFY(process.waitForFinished(5000)); @@ -931,8 +926,7 @@ public: SoftExitProcess(int n) : waitedForFinished(false), n(n), killing(false) { - connect(this, static_cast<QProcessFinishedSignal2>(&QProcess::finished), - this, &SoftExitProcess::finishedSlot); + connect(this, &QProcess::finished, this, &SoftExitProcess::finishedSlot); switch (n) { case 0: @@ -1177,8 +1171,7 @@ protected: exitCode = 90210; QProcess process; - connect(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished), - this, &TestThread::catchExitCode, Qt::DirectConnection); + connect(&process, &QProcess::finished, this, &TestThread::catchExitCode, Qt::DirectConnection); process.start("testProcessEcho/testProcessEcho"); @@ -1251,8 +1244,7 @@ void tst_QProcess::waitForReadyReadInAReadyReadSlot() { QProcess process; connect(&process, &QIODevice::readyRead, this, &tst_QProcess::waitForReadyReadInAReadyReadSlotSlot); - connect(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished), - this, &tst_QProcess::exitLoopSlot); + connect(&process, &QProcess::finished, this, &tst_QProcess::exitLoopSlot); bytesAvailable = 0; process.start("testProcessEcho/testProcessEcho"); @@ -1490,7 +1482,7 @@ void tst_QProcess::failToStart() QProcess process; QSignalSpy stateSpy(&process, &QProcess::stateChanged); QSignalSpy errorSpy(&process, &QProcess::errorOccurred); - QSignalSpy finishedSpy(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished)); + QSignalSpy finishedSpy(&process, &QProcess::finished); QVERIFY(stateSpy.isValid()); QVERIFY(errorSpy.isValid()); QVERIFY(finishedSpy.isValid()); @@ -1499,10 +1491,6 @@ void tst_QProcess::failToStart() QSignalSpy errorSpy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); QVERIFY(errorSpy2.isValid()); #endif -#if QT_DEPRECATED_SINCE(5, 13) - QSignalSpy finishedSpy2(&process, static_cast<QProcessFinishedSignal1>(&QProcess::finished)); - QVERIFY(finishedSpy2.isValid()); -#endif // OS X and HP-UX have a really low default process limit (~100), so spawning // to many processes here will cause test failures later on. @@ -1548,9 +1536,6 @@ void tst_QProcess::failToStart() #if QT_DEPRECATED_SINCE(5, 6) QCOMPARE(errorSpy2.count(), j * attempts + i + 1); #endif -#if QT_DEPRECATED_SINCE(5, 13) - QCOMPARE(finishedSpy2.count(), 0); -#endif int it = j * attempts + i + 1; @@ -1569,7 +1554,7 @@ void tst_QProcess::failToStartWithWait() QProcess process; QEventLoop loop; QSignalSpy errorSpy(&process, &QProcess::errorOccurred); - QSignalSpy finishedSpy(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished)); + QSignalSpy finishedSpy(&process, &QProcess::finished); QVERIFY(errorSpy.isValid()); QVERIFY(finishedSpy.isValid()); @@ -1577,10 +1562,6 @@ void tst_QProcess::failToStartWithWait() QSignalSpy errorSpy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); QVERIFY(errorSpy2.isValid()); #endif -#if QT_DEPRECATED_SINCE(5, 13) - QSignalSpy finishedSpy2(&process, static_cast<QProcessFinishedSignal1>(&QProcess::finished)); - QVERIFY(finishedSpy2.isValid()); -#endif for (int i = 0; i < 50; ++i) { process.start("/blurp", QStringList() << "-v" << "-debug"); @@ -1592,10 +1573,6 @@ void tst_QProcess::failToStartWithWait() #if QT_DEPRECATED_SINCE(5, 6) QCOMPARE(errorSpy2.count(), i + 1); #endif -#if QT_DEPRECATED_SINCE(5, 13) - QCOMPARE(finishedSpy2.count(), 0); -#endif - } } @@ -1607,7 +1584,7 @@ void tst_QProcess::failToStartWithEventLoop() QProcess process; QEventLoop loop; QSignalSpy errorSpy(&process, &QProcess::errorOccurred); - QSignalSpy finishedSpy(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished)); + QSignalSpy finishedSpy(&process, &QProcess::finished); QVERIFY(errorSpy.isValid()); QVERIFY(finishedSpy.isValid()); @@ -1615,10 +1592,6 @@ void tst_QProcess::failToStartWithEventLoop() QSignalSpy errorSpy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); QVERIFY(errorSpy2.isValid()); #endif -#if QT_DEPRECATED_SINCE(5, 13) - QSignalSpy finishedSpy2(&process, static_cast<QProcessFinishedSignal1>(&QProcess::finished)); - QVERIFY(finishedSpy2.isValid()); -#endif // The error signal may be emitted before start() returns connect(&process, &QProcess::errorOccurred, &loop, &QEventLoop::quit, Qt::QueuedConnection); @@ -1635,9 +1608,6 @@ void tst_QProcess::failToStartWithEventLoop() #if QT_DEPRECATED_SINCE(5, 6) QCOMPARE(errorSpy2.count(), i + 1); #endif -#if QT_DEPRECATED_SINCE(5, 13) - QCOMPARE(finishedSpy2.count(), 0); -#endif } } @@ -1912,7 +1882,7 @@ void tst_QProcess::waitForReadyReadForNonexistantProcess() QProcess process; QSignalSpy errorSpy(&process, &QProcess::errorOccurred); - QSignalSpy finishedSpy(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished)); + QSignalSpy finishedSpy(&process, &QProcess::finished); QVERIFY(errorSpy.isValid()); QVERIFY(finishedSpy.isValid()); @@ -1920,10 +1890,6 @@ void tst_QProcess::waitForReadyReadForNonexistantProcess() QSignalSpy errorSpy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); QVERIFY(errorSpy2.isValid()); #endif -#if QT_DEPRECATED_SINCE(5, 13) - QSignalSpy finishedSpy1(&process, static_cast<QProcessFinishedSignal1>(&QProcess::finished)); - QVERIFY(finishedSpy1.isValid()); -#endif QVERIFY(!process.waitForReadyRead()); // used to crash process.start("doesntexist"); @@ -1935,9 +1901,6 @@ void tst_QProcess::waitForReadyReadForNonexistantProcess() QCOMPARE(errorSpy2.count(), 1); QCOMPARE(errorSpy2.at(0).at(0).toInt(), 0); #endif -#if QT_DEPRECATED_SINCE(5, 13) - QCOMPARE(finishedSpy1.count(), 0); -#endif } void tst_QProcess::setStandardInputFile() @@ -2390,7 +2353,7 @@ void tst_QProcess::onlyOneStartedSignal() QProcess process; QSignalSpy spyStarted(&process, &QProcess::started); - QSignalSpy spyFinished(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished)); + QSignalSpy spyFinished(&process, &QProcess::finished); QVERIFY(spyStarted.isValid()); QVERIFY(spyFinished.isValid()); @@ -2433,8 +2396,7 @@ void tst_QProcess::finishProcessBeforeReadingDone() QProcess process; BlockOnReadStdOut blocker(&process); QEventLoop loop; - connect(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished), - &loop, &QEventLoop::quit); + connect(&process, &QProcess::finished, &loop, &QEventLoop::quit); process.start("testProcessOutput/testProcessOutput"); QVERIFY(process.waitForStarted()); loop.exec(); @@ -2581,52 +2543,20 @@ void tst_QProcess::processEventsInAReadyReadSlot() #if QT_DEPRECATED_SINCE(5, 13) -void tst_QProcess::crashTest2_deprecated() -{ - QProcess process; - process.start("testProcessCrash/testProcessCrash"); - QVERIFY(process.waitForStarted(5000)); - - qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError"); - qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus"); - - QSignalSpy spy(&process, static_cast<QProcessErrorSignal>(&QProcess::errorOccurred)); - QSignalSpy spy2(&process, static_cast<QProcessFinishedSignal2>(&QProcess::finished)); - - QVERIFY(spy.isValid()); - QVERIFY(spy2.isValid()); - - QObject::connect(&process, static_cast<QProcessFinishedSignal1>(&QProcess::finished), - this, &tst_QProcess::exitLoopSlot); - - QTestEventLoop::instance().enterLoop(30); - if (QTestEventLoop::instance().timeout()) - QFAIL("Failed to detect crash : operation timed out"); - - QCOMPARE(spy.count(), 1); - QCOMPARE(*static_cast<const QProcess::ProcessError *>(spy.at(0).at(0).constData()), QProcess::Crashed); - - QCOMPARE(spy2.count(), 1); - QCOMPARE(*static_cast<const QProcess::ExitStatus *>(spy2.at(0).at(1).constData()), QProcess::CrashExit); - - QCOMPARE(process.exitStatus(), QProcess::CrashExit); -} - void tst_QProcess::restartProcessDeadlock_deprecated() { // The purpose of this test is to detect whether restarting a // process in the finished() connected slot causes a deadlock // because of the way QProcessManager uses its locks. QProcess process; - connect(&process, static_cast<QProcessFinishedSignal1>(&QProcess::finished), - this, &tst_QProcess::restartProcess); + connect(&process, &QProcess::finished, this, &tst_QProcess::restartProcess); process.start("testProcessEcho/testProcessEcho"); QCOMPARE(process.write("", 1), qlonglong(1)); QVERIFY(process.waitForFinished(5000)); - QObject::disconnect(&process, static_cast<QProcessFinishedSignal1>(&QProcess::finished), nullptr, nullptr); + QObject::disconnect(&process, &QProcess::finished, nullptr, nullptr); QCOMPARE(process.write("", 1), qlonglong(1)); QVERIFY(process.waitForFinished(5000)); @@ -2638,8 +2568,7 @@ void tst_QProcess::waitForReadyReadInAReadyReadSlot_deprecated() { QProcess process; connect(&process, &QIODevice::readyRead, this, &tst_QProcess::waitForReadyReadInAReadyReadSlotSlot); - connect(&process, static_cast<QProcessFinishedSignal1>(&QProcess::finished), - this, &tst_QProcess::exitLoopSlot); + connect(&process, &QProcess::finished, this, &tst_QProcess::exitLoopSlot); bytesAvailable = 0; process.start("testProcessEcho/testProcessEcho"); @@ -2665,8 +2594,7 @@ void tst_QProcess::finishProcessBeforeReadingDone_deprecated() QProcess process; BlockOnReadStdOut blocker(&process); QEventLoop loop; - connect(&process, static_cast<QProcessFinishedSignal1>(&QProcess::finished), - &loop, &QEventLoop::quit); + connect(&process, &QProcess::finished, &loop, &QEventLoop::quit); process.start("testProcessOutput/testProcessOutput"); QVERIFY(process.waitForStarted()); loop.exec(); diff --git a/tests/auto/corelib/kernel/qelapsedtimer/BLACKLIST b/tests/auto/corelib/kernel/qelapsedtimer/BLACKLIST index 569880e1db..2317cf886c 100644 --- a/tests/auto/corelib/kernel/qelapsedtimer/BLACKLIST +++ b/tests/auto/corelib/kernel/qelapsedtimer/BLACKLIST @@ -1,3 +1,3 @@ [elapsed] -osx-10.13 +macos windows-10 diff --git a/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp b/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp index d402e3f63b..29cff8b469 100644 --- a/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp +++ b/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp @@ -3298,7 +3298,10 @@ void tst_QDataStream::streamRealDataTypes() QCOMPARE(col, color); stream >> rGrad; QCOMPARE(rGrad.style(), radialBrush.style()); +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED QCOMPARE(rGrad.matrix(), radialBrush.matrix()); +QT_WARNING_POP QCOMPARE(rGrad.gradient()->type(), radialBrush.gradient()->type()); QCOMPARE(rGrad.gradient()->stops(), radialBrush.gradient()->stops()); QCOMPARE(rGrad.gradient()->spread(), radialBrush.gradient()->spread()); @@ -3307,7 +3310,10 @@ void tst_QDataStream::streamRealDataTypes() QCOMPARE(((QRadialGradient *)rGrad.gradient())->radius(), ((QRadialGradient *)radialBrush.gradient())->radius()); stream >> cGrad; QCOMPARE(cGrad.style(), conicalBrush.style()); +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED QCOMPARE(cGrad.matrix(), conicalBrush.matrix()); +QT_WARNING_POP QCOMPARE(cGrad.gradient()->type(), conicalBrush.gradient()->type()); QCOMPARE(cGrad.gradient()->stops(), conicalBrush.gradient()->stops()); QCOMPARE(cGrad.gradient()->spread(), conicalBrush.gradient()->spread()); diff --git a/tests/auto/corelib/serialization/qxmlstream/data/duplicatedattributes.ref b/tests/auto/corelib/serialization/qxmlstream/data/duplicatedattributes.ref new file mode 100644 index 0000000000..a578de8bb4 --- /dev/null +++ b/tests/auto/corelib/serialization/qxmlstream/data/duplicatedattributes.ref @@ -0,0 +1,8003 @@ +StartDocument( ) +Invalid( name="a" qualifiedName="a" + Attribute( name="b" qualifiedName="b" value="1" ) + + Attribute( name="b" qualifiedName="b" value="2" ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + + Attribute( ) + ) +ERROR: Attribute 'b' redefined. diff --git a/tests/auto/corelib/serialization/qxmlstream/data/duplicatedattributes.xml b/tests/auto/corelib/serialization/qxmlstream/data/duplicatedattributes.xml new file mode 100644 index 0000000000..5f8b1003e9 --- /dev/null +++ b/tests/auto/corelib/serialization/qxmlstream/data/duplicatedattributes.xml @@ -0,0 +1,1002 @@ +<a +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +b="1" b="2" b="3" b="4" +/> diff --git a/tests/auto/corelib/thread/qsemaphore/BLACKLIST b/tests/auto/corelib/thread/qsemaphore/BLACKLIST index d7af5c420b..f7f6d5149c 100644 --- a/tests/auto/corelib/thread/qsemaphore/BLACKLIST +++ b/tests/auto/corelib/thread/qsemaphore/BLACKLIST @@ -2,9 +2,7 @@ osx [tryAcquireWithTimeout:0.2s] windows -osx-10.12 -osx-10.13 +macos [tryAcquireWithTimeout:2s] windows -osx-10.12 -osx-10.13 +macos diff --git a/tests/auto/corelib/tools/qtimeline/BLACKLIST b/tests/auto/corelib/tools/qtimeline/BLACKLIST index 9794b0059f..961147a3cf 100644 --- a/tests/auto/corelib/tools/qtimeline/BLACKLIST +++ b/tests/auto/corelib/tools/qtimeline/BLACKLIST @@ -2,6 +2,5 @@ windows-10 msvc-2015 osx [frameRate] -osx-10.12 -osx-10.13 +macos diff --git a/tests/auto/gui/image/qimage/tst_qimage.cpp b/tests/auto/gui/image/qimage/tst_qimage.cpp index bc964e0d5c..71aaa23da4 100644 --- a/tests/auto/gui/image/qimage/tst_qimage.cpp +++ b/tests/auto/gui/image/qimage/tst_qimage.cpp @@ -32,7 +32,7 @@ #include <qimage.h> #include <qimagereader.h> #include <qlist.h> -#include <qmatrix.h> +#include <qtransform.h> #include <qrandom.h> #include <stdio.h> @@ -1204,7 +1204,7 @@ void tst_QImage::rotate() // original.save("rotated90_original.png", "png"); // Initialize the matrix manually (do not use rotate) to avoid rounding errors - QMatrix matRotate90; + QTransform matRotate90; matRotate90.rotate(degrees); QImage dest = original; // And rotate it 4 times, then the image should be identical to the original @@ -1218,7 +1218,7 @@ void tst_QImage::rotate() // dest.save("rotated90_result.png","png"); QCOMPARE(original, dest); - // Test with QMatrix::rotate 90 also, since we trust that now + // Test with QTransform::rotate 90 also, since we trust that now matRotate90.rotate(degrees); dest = original; // And rotate it 4 times, then the image should be identical to the original diff --git a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp index ba5df809f2..1d77f70919 100644 --- a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp +++ b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp @@ -32,7 +32,6 @@ #include <qbitmap.h> #include <qimage.h> #include <qimagereader.h> -#include <qmatrix.h> #ifndef QT_NO_WIDGETS #include <qdesktopwidget.h> #include <qsplashscreen.h> diff --git a/tests/auto/gui/kernel/qguimetatype/tst_qguimetatype.cpp b/tests/auto/gui/kernel/qguimetatype/tst_qguimetatype.cpp index 2645bb111e..d60d6643b2 100644 --- a/tests/auto/gui/kernel/qguimetatype/tst_qguimetatype.cpp +++ b/tests/auto/gui/kernel/qguimetatype/tst_qguimetatype.cpp @@ -197,9 +197,14 @@ template<> struct TestValueFactory<QMetaType::QTextLength> { template<> struct TestValueFactory<QMetaType::QTextFormat> { static QTextFormat *create() { return new QTextFormat(QTextFormat::FrameFormat); } }; +#if QT_DEPRECATED_SINCE(5, 15) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED template<> struct TestValueFactory<QMetaType::QMatrix> { static QMatrix *create() { return new QMatrix(10, 20, 30, 40, 50, 60); } }; +QT_WARNING_POP +#endif template<> struct TestValueFactory<QMetaType::QTransform> { static QTransform *create() { return new QTransform(10, 20, 30, 40, 50, 60); } }; diff --git a/tests/auto/gui/kernel/qguivariant/test/tst_qguivariant.cpp b/tests/auto/gui/kernel/qguivariant/test/tst_qguivariant.cpp index 0b9fc3c9ae..8b301c145a 100644 --- a/tests/auto/gui/kernel/qguivariant/test/tst_qguivariant.cpp +++ b/tests/auto/gui/kernel/qguivariant/test/tst_qguivariant.cpp @@ -402,6 +402,9 @@ void tst_QGuiVariant::toString() QCOMPARE( str, result ); } +#if QT_DEPRECATED_SINCE(5, 15) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED void tst_QGuiVariant::matrix() { QVariant variant; @@ -414,6 +417,8 @@ void tst_QGuiVariant::matrix() QVERIFY(mmatrix); QMetaType::destroy(QVariant::Matrix, mmatrix); } +QT_WARNING_POP +#endif void tst_QGuiVariant::matrix4x4() { diff --git a/tests/auto/gui/kernel/qwindow/BLACKLIST b/tests/auto/gui/kernel/qwindow/BLACKLIST index 27463adf99..44a55316ab 100644 --- a/tests/auto/gui/kernel/qwindow/BLACKLIST +++ b/tests/auto/gui/kernel/qwindow/BLACKLIST @@ -2,10 +2,10 @@ opensuse-leap [positioning:default] linux -osx-10.12 ci +macos ci winrt [positioning:fake] -osx-10.12 ci +macos ci [modalWithChildWindow] # QTBUG-66851 # QTBUG-69160 diff --git a/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp b/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp index e19f76d830..3c4f2f2e75 100644 --- a/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp +++ b/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp @@ -3061,6 +3061,9 @@ void tst_QMatrixNxN::columnsAndRows() QVERIFY(m1.row(3) == QVector4D(4, 8, 12, 16)); } +#if QT_DEPRECATED_SINCE(5, 15) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED // Test converting QMatrix objects into QMatrix4x4 and then // checking that transformations in the original perform the // equivalent transformations in the new matrix. @@ -3107,6 +3110,8 @@ void tst_QMatrixNxN::convertQMatrix() QVERIFY(qFuzzyCompare(float(m5.dx()), float(m7.dx()))); QVERIFY(qFuzzyCompare(float(m5.dy()), float(m7.dy()))); } +QT_WARNING_POP +#endif // Test converting QTransform objects into QMatrix4x4 and then // checking that transformations in the original perform the diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp index e05de64be5..9eb62ceab2 100644 --- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp +++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp @@ -1704,8 +1704,11 @@ void tst_QPainter::combinedMatrix() QTransform ct = p.combinedTransform(); #if QT_DEPRECATED_SINCE(5, 13) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED QMatrix cm = p.combinedMatrix(); QCOMPARE(cm, ct.toAffine()); +QT_WARNING_POP #endif QPointF pt = QPointF(0, 0) * ct.toAffine(); @@ -2245,7 +2248,7 @@ void tst_QPainter::clippedPolygon() { QFETCH(QSize, imageSize); QFETCH(QPainterPath, path); - QPolygonF polygon = path.toFillPolygon(); + QPolygonF polygon = path.toFillPolygon(QTransform()); QFETCH(QRect, clipRect); QPainterPath clipPath; clipPath.addRect(clipRect); @@ -3066,7 +3069,7 @@ void tst_QPainter::fpe_steepSlopes_data() const qreal dsin = 0.000014946676875461832484392500630665523431162000633776187896728515625; const qreal dcos = 0.9999999998882984630910186751862056553363800048828125; - const QTransform transform = QTransform(QMatrix(dcos, dsin, -dsin, dcos, 64, 64)); + const QTransform transform = QTransform(dcos, dsin, -dsin, dcos, 64, 64); const QLineF line(2, 2, 2, 6); QTest::newRow("task 207147 aa") << transform << line << true; @@ -4064,7 +4067,7 @@ void tst_QPainter::drawPolygon() path.moveTo(2, 34); path.lineTo(34, 2); - QPolygonF poly = stroker.createStroke(path).toFillPolygon(); + QPolygonF poly = stroker.createStroke(path).toFillPolygon(QTransform()); img.fill(0xffffffff); QPainter p(&img); @@ -4133,7 +4136,10 @@ void tst_QPainter::inactivePainter() p.setClipping(true); #if QT_DEPRECATED_SINCE(5, 13) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED p.combinedMatrix(); +QT_WARNING_POP #endif p.combinedTransform(); @@ -4142,7 +4148,10 @@ void tst_QPainter::inactivePainter() p.device(); #if QT_DEPRECATED_SINCE(5, 13) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED p.deviceMatrix(); +QT_WARNING_POP #endif p.deviceTransform(); @@ -4168,7 +4177,10 @@ void tst_QPainter::inactivePainter() p.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, false); #if QT_DEPRECATED_SINCE(5, 13) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED p.resetMatrix(); +QT_WARNING_POP #endif p.resetTransform(); p.rotate(1); @@ -4186,8 +4198,11 @@ void tst_QPainter::inactivePainter() p.setWindow(QRect(10, 10, 620, 460)); #if QT_DEPRECATED_SINCE(5, 13) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED p.worldMatrix(); p.setWorldMatrix(QMatrix().translate(43, 21), true); +QT_WARNING_POP #endif p.setWorldMatrixEnabled(true); diff --git a/tests/auto/gui/painting/qpathclipper/paths.cpp b/tests/auto/gui/painting/qpathclipper/paths.cpp index 1328befd1b..a814958394 100644 --- a/tests/auto/gui/painting/qpathclipper/paths.cpp +++ b/tests/auto/gui/painting/qpathclipper/paths.cpp @@ -713,9 +713,5 @@ QPainterPath Paths::bezierQuadrant() path.closeSubpath(); } - QMatrix m(2, 0, - 0, 2, - 0, 0); - return path; } diff --git a/tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp b/tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp index 93035af7d3..01853d841a 100644 --- a/tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp +++ b/tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp @@ -152,9 +152,9 @@ void tst_QPathClipper::initTestCase() for (int i = 0; i < paths.size(); ++i) { QRectF bounds = paths[i].boundingRect(); - QMatrix m(1, 0, - 0, 1, - -bounds.center().x(), -bounds.center().y()); + QTransform m(1, 0, + 0, 1, + -bounds.center().x(), -bounds.center().y()); paths[i] = m.map(paths[i]); } diff --git a/tests/auto/gui/painting/qtransform/tst_qtransform.cpp b/tests/auto/gui/painting/qtransform/tst_qtransform.cpp index f9366c9227..78638a7518 100644 --- a/tests/auto/gui/painting/qtransform/tst_qtransform.cpp +++ b/tests/auto/gui/painting/qtransform/tst_qtransform.cpp @@ -331,17 +331,13 @@ void tst_QTransform::mapToPolygon() void tst_QTransform::qhash() { - QMatrix m1; - m1.shear(3.0, 2.0); - m1.rotate(44); + QTransform t1; + t1.shear(3.0, 2.0); + t1.rotate(44); - QMatrix m2 = m1; - - QTransform t1(m1); - QTransform t2(m2); + QTransform t2 = t1; // not really much to test here, so just the bare minimum: - QCOMPARE(qHash(m1), qHash(m2)); QCOMPARE(qHash(t1), qHash(t2)); } @@ -376,6 +372,9 @@ void tst_QTransform::scale() QVERIFY( QTransform::fromScale( 1, 1 ) == QTransform()); } +#if QT_DEPRECATED_SINCE(5, 15) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED void tst_QTransform::matrix() { QMatrix mat1; @@ -414,7 +413,7 @@ void tst_QTransform::matrix() QRect rect(43, 70, 200, 200); QPoint pt(43, 66); - QCOMPARE(tranInv.map(pt), matInv.map(pt)); + QCOMPARE(tranInv.mapRect(rect), matInv.mapRect(rect)); QCOMPARE(tranInv.map(pt), matInv.map(pt)); QPainterPath path; @@ -431,6 +430,8 @@ void tst_QTransform::testOffset() const QMatrix &aff = trans.toAffine(); QCOMPARE((void*)(&aff), (void*)(&trans)); } +QT_WARNING_POP +#endif void tst_QTransform::types() { diff --git a/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp b/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp index da88a868f3..281639c27a 100644 --- a/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp +++ b/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp @@ -32,6 +32,9 @@ #include <qmath.h> #include <qpolygon.h> +#if QT_DEPRECATED_SINCE(5, 15) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED class tst_QWMatrix : public QObject { @@ -324,5 +327,8 @@ void tst_QWMatrix::mapPolygon() } } +QT_WARNING_POP +#endif + QTEST_APPLESS_MAIN(tst_QWMatrix) #include "tst_qwmatrix.moc" diff --git a/tests/auto/gui/qopengl/qopengl.pro b/tests/auto/gui/qopengl/qopengl.pro index 722c99ee0b..604aa59d8a 100644 --- a/tests/auto/gui/qopengl/qopengl.pro +++ b/tests/auto/gui/qopengl/qopengl.pro @@ -4,7 +4,7 @@ CONFIG += testcase TARGET = tst_qopengl -QT += gui-private core-private testlib +QT += opengl gui-private core-private testlib SOURCES += tst_qopengl.cpp diff --git a/tests/auto/gui/qopengl/tst_qopengl.cpp b/tests/auto/gui/qopengl/tst_qopengl.cpp index ede1e58a53..3a7ad6dad5 100644 --- a/tests/auto/gui/qopengl/tst_qopengl.cpp +++ b/tests/auto/gui/qopengl/tst_qopengl.cpp @@ -26,15 +26,14 @@ ** ****************************************************************************/ - +#include <QtOpenGL/QOpenGLPaintDevice> +#include <QtOpenGL/QOpenGLTexture> #include <QtGui/private/qopenglcontext_p.h> #include <QtGui/QOpenGLFramebufferObject> #include <QtGui/QOpenGLFunctions> #include <QtGui/QOpenGLFunctions_4_2_Core> #include <QtGui/QOpenGLVertexArrayObject> #include <QtGui/QOpenGLBuffer> -#include <QtGui/QOpenGLPaintDevice> -#include <QtGui/QOpenGLTexture> #include <QtGui/QPainter> #include <QtGui/QScreen> #include <QtGui/QWindow> diff --git a/tests/auto/gui/rhi/qrhi/data/compile.bat b/tests/auto/gui/rhi/qrhi/data/buildshaders.bat index 5b8a77b833..5b8a77b833 100644 --- a/tests/auto/gui/rhi/qrhi/data/compile.bat +++ b/tests/auto/gui/rhi/qrhi/data/buildshaders.bat diff --git a/tests/auto/gui/rhi/qrhi/data/simple.frag.qsb b/tests/auto/gui/rhi/qrhi/data/simple.frag.qsb Binary files differindex 264b71ec0f..c235108d39 100644 --- a/tests/auto/gui/rhi/qrhi/data/simple.frag.qsb +++ b/tests/auto/gui/rhi/qrhi/data/simple.frag.qsb diff --git a/tests/auto/gui/rhi/qrhi/data/simple.vert.qsb b/tests/auto/gui/rhi/qrhi/data/simple.vert.qsb Binary files differindex 59080b60c6..68cfeb8f1d 100644 --- a/tests/auto/gui/rhi/qrhi/data/simple.vert.qsb +++ b/tests/auto/gui/rhi/qrhi/data/simple.vert.qsb diff --git a/tests/auto/gui/rhi/qrhi/data/simpletextured.frag.qsb b/tests/auto/gui/rhi/qrhi/data/simpletextured.frag.qsb Binary files differindex f302702aa9..397961c238 100644 --- a/tests/auto/gui/rhi/qrhi/data/simpletextured.frag.qsb +++ b/tests/auto/gui/rhi/qrhi/data/simpletextured.frag.qsb diff --git a/tests/auto/gui/rhi/qrhi/data/simpletextured.vert.qsb b/tests/auto/gui/rhi/qrhi/data/simpletextured.vert.qsb Binary files differindex e4f12bfb9e..a9067949a5 100644 --- a/tests/auto/gui/rhi/qrhi/data/simpletextured.vert.qsb +++ b/tests/auto/gui/rhi/qrhi/data/simpletextured.vert.qsb diff --git a/tests/auto/gui/rhi/qrhi/data/textured.frag.qsb b/tests/auto/gui/rhi/qrhi/data/textured.frag.qsb Binary files differindex 0a039137ec..018d732e2f 100644 --- a/tests/auto/gui/rhi/qrhi/data/textured.frag.qsb +++ b/tests/auto/gui/rhi/qrhi/data/textured.frag.qsb diff --git a/tests/auto/gui/rhi/qrhi/data/textured.vert.qsb b/tests/auto/gui/rhi/qrhi/data/textured.vert.qsb Binary files differindex 7853f77943..44454d226e 100644 --- a/tests/auto/gui/rhi/qrhi/data/textured.vert.qsb +++ b/tests/auto/gui/rhi/qrhi/data/textured.vert.qsb diff --git a/tests/auto/network/access/qnetworkreply/BLACKLIST b/tests/auto/network/access/qnetworkreply/BLACKLIST index 18450f1853..a2c6224ce0 100644 --- a/tests/auto/network/access/qnetworkreply/BLACKLIST +++ b/tests/auto/network/access/qnetworkreply/BLACKLIST @@ -47,21 +47,21 @@ windows-7sp1 windows-10 osx [backgroundRequest] -osx-10.12 +macos [connectToIPv6Address] -osx-10.12 +macos [deleteFromHttp] -osx-10.12 +macos [downloadProgress] -osx-10.12 +macos [encrypted] -osx-10.13 +macos [httpCanReadLine] -osx-10.12 +macos [httpRecursiveCreation] osx [httpWithNoCredentialUsage] -osx-10.12 +macos [ignoreSslErrorsList] osx [ignoreSslErrorsListWithSlot] @@ -69,27 +69,27 @@ osx [ioGetFromBuiltinHttp] osx [ioGetFromHttp] -osx-10.12 +macos [ioPostToHttpFromFile] -osx-10.13 +macos [ioPostToHttpFromSocketSynchronous] osx [ioPostToHttpUploadProgress] osx [ioPutToHttpFromFile] -osx-10.13 +macos [lastModifiedHeaderForHttp] -osx-10.12 +macos [multipartSkipIndices] -osx-10.12 +macos [nestedEventLoops] osx [postToHttp] -osx-10.12 +macos [postToHttpMultipart] -osx-10.12 +macos [postToHttpSynchronous] -osx-10.12 +macos [postToHttps] osx [postToHttpsMultipart] @@ -97,17 +97,17 @@ osx [postToHttpsSynchronous] osx [putGetDeleteGetFromHttp] -osx-10.12 +macos [putToHttpSynchronous] -osx-10.12 +macos [putToHttps] osx [putToHttpsSynchronous] osx [putWithRateLimiting] -osx-10.13 +macos [qtbug13431replyThrottling] -osx-10.12 +macos [receiveCookiesFromHttp] osx [receiveCookiesFromHttpSynchronous] @@ -117,7 +117,7 @@ osx [sendCookiesSynchronous] osx [sendCustomRequestToHttp] -osx-10.12 +macos [sslConfiguration] osx [synchronousRequest] diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp index 14718ad373..a7a81e9f0b 100644 --- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp +++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp @@ -86,6 +86,8 @@ private slots: void fromDevice(); void fromPath_data(); void fromPath(); + void fromPath_qregularexpression_data(); + void fromPath_qregularexpression(); void certInfo(); void certInfoQByteArray(); void task256066toPem(); @@ -434,7 +436,7 @@ void tst_QSslCertificate::subjectAlternativeNames() void tst_QSslCertificate::utf8SubjectNames() { QSslCertificate cert = QSslCertificate::fromPath(testDataDir + "certificates/cert-ss-san-utf8.pem", QSsl::Pem, - QRegExp::FixedString).first(); + QSslCertificate::FixedString).first(); QVERIFY(!cert.isNull()); // O is "Heavy Metal Records" with heavy use of "decorations" like accents, umlauts etc., @@ -625,6 +627,88 @@ void tst_QSslCertificate::fromPath() numCerts); } +void tst_QSslCertificate::fromPath_qregularexpression_data() +{ + QTest::addColumn<QString>("path"); + QTest::addColumn<int>("syntax"); + QTest::addColumn<bool>("pemencoding"); + QTest::addColumn<int>("numCerts"); + + QTest::newRow("empty fixed pem") << QString() << int(QSslCertificate::FixedString) << true << 0; + QTest::newRow("empty fixed der") << QString() << int(QSslCertificate::FixedString) << false << 0; + QTest::newRow("empty regexp pem") << QString() << int(QSslCertificate::RegExp) << true << 0; + QTest::newRow("empty regexp der") << QString() << int(QSslCertificate::RegExp) << false << 0; + QTest::newRow("empty wildcard pem") << QString() << int(QSslCertificate::Wildcard) << true << 0; + QTest::newRow("empty wildcard der") << QString() << int(QSslCertificate::Wildcard) << false << 0; + QTest::newRow("\"certificates\" fixed pem") << (testDataDir + "certificates") << int(QSslCertificate::FixedString) << true << 0; + QTest::newRow("\"certificates\" fixed der") << (testDataDir + "certificates") << int(QSslCertificate::FixedString) << false << 0; + QTest::newRow("\"certificates\" regexp pem") << (testDataDir + "certificates") << int(QSslCertificate::RegExp) << true << 0; + QTest::newRow("\"certificates\" regexp der") << (testDataDir + "certificates") << int(QSslCertificate::RegExp) << false << 0; + QTest::newRow("\"certificates\" wildcard pem") << (testDataDir + "certificates") << int(QSslCertificate::Wildcard) << true << 0; + QTest::newRow("\"certificates\" wildcard der") << (testDataDir + "certificates") << int(QSslCertificate::Wildcard) << false << 0; + QTest::newRow("\"certificates/cert.pem\" fixed pem") << (testDataDir + "certificates/cert.pem") << int(QSslCertificate::FixedString) << true << 1; + QTest::newRow("\"certificates/cert.pem\" fixed der") << (testDataDir + "certificates/cert.pem") << int(QSslCertificate::FixedString) << false << 0; + QTest::newRow("\"certificates/cert.pem\" regexp pem") << (testDataDir + "certificates/cert.pem") << int(QSslCertificate::RegExp) << true << 1; + QTest::newRow("\"certificates/cert.pem\" regexp der") << (testDataDir + "certificates/cert.pem") << int(QSslCertificate::RegExp) << false << 0; + QTest::newRow("\"certificates/cert.pem\" wildcard pem") << (testDataDir + "certificates/cert.pem") << int(QSslCertificate::Wildcard) << true << 1; + QTest::newRow("\"certificates/cert.pem\" wildcard der") << (testDataDir + "certificates/cert.pem") << int(QSslCertificate::Wildcard) << false << 0; + QTest::newRow("\"certificates/*\" fixed pem") << (testDataDir + "certificates/*") << int(QSslCertificate::FixedString) << true << 0; + QTest::newRow("\"certificates/*\" fixed der") << (testDataDir + "certificates/*") << int(QSslCertificate::FixedString) << false << 0; + QTest::newRow("\"certificates/*\" regexp pem") << (testDataDir + "certificates/*") << int(QSslCertificate::RegExp) << true << 0; + QTest::newRow("\"certificates/*\" regexp der") << (testDataDir + "certificates/*") << int(QSslCertificate::RegExp) << false << 0; + QTest::newRow("\"certificates/*\" wildcard pem") << (testDataDir + "certificates/*") << int(QSslCertificate::Wildcard) << true << 7; + QTest::newRow("\"certificates/ca*\" wildcard pem") << (testDataDir + "certificates/ca*") << int(QSslCertificate::Wildcard) << true << 1; + QTest::newRow("\"certificates/cert*\" wildcard pem") << (testDataDir + "certificates/cert*") << int(QSslCertificate::Wildcard) << true << 4; + QTest::newRow("\"certificates/cert-[sure]*\" wildcard pem") << (testDataDir + "certificates/cert-[sure]*") << int(QSslCertificate::Wildcard) << true << 3; + QTest::newRow("\"certificates/cert-[not]*\" wildcard pem") << (testDataDir + "certificates/cert-[not]*") << int(QSslCertificate::Wildcard) << true << 0; + QTest::newRow("\"certificates/*\" wildcard der") << (testDataDir + "certificates/*") << int(QSslCertificate::Wildcard) << false << 2; + QTest::newRow("\"c*/c*.pem\" fixed pem") << (testDataDir + "c*/c*.pem") << int(QSslCertificate::FixedString) << true << 0; + QTest::newRow("\"c*/c*.pem\" fixed der") << (testDataDir + "c*/c*.pem") << int(QSslCertificate::FixedString) << false << 0; + QTest::newRow("\"c*/c*.pem\" regexp pem") << (testDataDir + "c*/c*.pem") << int(QSslCertificate::RegExp) << true << 0; + QTest::newRow("\"c*/c*.pem\" regexp der") << (testDataDir + "c*/c*.pem") << int(QSslCertificate::RegExp) << false << 0; + QTest::newRow("\"c*/c*.pem\" wildcard pem") << (testDataDir + "c*/c*.pem") << int(QSslCertificate::Wildcard) << true << 5; + QTest::newRow("\"c*/c*.pem\" wildcard der") << (testDataDir + "c*/c*.pem") << int(QSslCertificate::Wildcard) << false << 0; + QTest::newRow("\"d*/c*.pem\" fixed pem") << (testDataDir + "d*/c*.pem") << int(QSslCertificate::FixedString) << true << 0; + QTest::newRow("\"d*/c*.pem\" fixed der") << (testDataDir + "d*/c*.pem") << int(QSslCertificate::FixedString) << false << 0; + QTest::newRow("\"d*/c*.pem\" regexp pem") << (testDataDir + "d*/c*.pem") << int(QSslCertificate::RegExp) << true << 0; + QTest::newRow("\"d*/c*.pem\" regexp der") << (testDataDir + "d*/c*.pem") << int(QSslCertificate::RegExp) << false << 0; + QTest::newRow("\"d*/c*.pem\" wildcard pem") << (testDataDir + "d*/c*.pem") << int(QSslCertificate::Wildcard) << true << 0; + QTest::newRow("\"d*/c*.pem\" wildcard der") << (testDataDir + "d*/c*.pem") << int(QSslCertificate::Wildcard) << false << 0; + QTest::newRow("\"c.*/c.*.pem\" fixed pem") << (testDataDir + "c.*/c.*.pem") << int(QSslCertificate::FixedString) << true << 0; + QTest::newRow("\"c.*/c.*.pem\" fixed der") << (testDataDir + "c.*/c.*.pem") << int(QSslCertificate::FixedString) << false << 0; + QTest::newRow("\"c.*/c.*.pem\" regexp pem") << (testDataDir + "c.*/c.*.pem") << int(QSslCertificate::RegExp) << true << 5; + QTest::newRow("\"c.*/c.*.pem\" regexp der") << (testDataDir + "c.*/c.*.pem") << int(QSslCertificate::RegExp) << false << 0; + QTest::newRow("\"c.*/c.*.pem\" wildcard pem") << (testDataDir + "c.*/c.*.pem") << int(QSslCertificate::Wildcard) << true << 0; + QTest::newRow("\"c.*/c.*.pem\" wildcard der") << (testDataDir + "c.*/c.*.pem") << int(QSslCertificate::Wildcard) << false << 0; + QTest::newRow("\"d.*/c.*.pem\" fixed pem") << (testDataDir + "d.*/c.*.pem") << int(QSslCertificate::FixedString) << true << 0; + QTest::newRow("\"d.*/c.*.pem\" fixed der") << (testDataDir + "d.*/c.*.pem") << int(QSslCertificate::FixedString) << false << 0; + QTest::newRow("\"d.*/c.*.pem\" regexp pem") << (testDataDir + "d.*/c.*.pem") << int(QSslCertificate::RegExp) << true << 0; + QTest::newRow("\"d.*/c.*.pem\" regexp der") << (testDataDir + "d.*/c.*.pem") << int(QSslCertificate::RegExp) << false << 0; + QTest::newRow("\"d.*/c.*.pem\" wildcard pem") << (testDataDir + "d.*/c.*.pem") << int(QSslCertificate::Wildcard) << true << 0; + QTest::newRow("\"d.*/c.*.pem\" wildcard der") << (testDataDir + "d.*/c.*.pem") << int(QSslCertificate::Wildcard) << false << 0; +#ifdef Q_OS_LINUX + QTest::newRow("absolute path wildcard pem") << (testDataDir + "certificates/*.pem") << int(QSslCertificate::Wildcard) << true << 7; +#endif + + QTest::newRow("trailing-whitespace") << (testDataDir + "more-certificates/trailing-whitespace.pem") << int(QSslCertificate::FixedString) << true << 1; + QTest::newRow("no-ending-newline") << (testDataDir + "more-certificates/no-ending-newline.pem") << int(QSslCertificate::FixedString) << true << 1; + QTest::newRow("malformed-just-begin") << (testDataDir + "more-certificates/malformed-just-begin.pem") << int(QSslCertificate::FixedString) << true << 0; + QTest::newRow("malformed-just-begin-no-newline") << (testDataDir + "more-certificates/malformed-just-begin-no-newline.pem") << int(QSslCertificate::FixedString) << true << 0; +} + +void tst_QSslCertificate::fromPath_qregularexpression() +{ + QFETCH(QString, path); + QFETCH(int, syntax); + QFETCH(bool, pemencoding); + QFETCH(int, numCerts); + + QCOMPARE(QSslCertificate::fromPath(path, + pemencoding ? QSsl::Pem : QSsl::Der, + QSslCertificate::PatternSyntax(syntax)).size(), + numCerts); +} + void tst_QSslCertificate::certInfo() { // MD5 Fingerprint=B6:CF:57:34:DA:A9:73:21:82:F7:CF:4D:3D:85:31:88 @@ -711,7 +795,7 @@ void tst_QSslCertificate::certInfo() "55:ba:e7:fb:95:5d:91"; QSslCertificate cert = QSslCertificate::fromPath(testDataDir + "certificates/cert.pem", QSsl::Pem, - QRegExp::FixedString).first(); + QSslCertificate::FixedString).first(); QVERIFY(!cert.isNull()); QCOMPARE(cert.issuerInfo(QSslCertificate::Organization)[0], QString("CryptSoft Pty Ltd")); @@ -768,7 +852,7 @@ void tst_QSslCertificate::certInfo() void tst_QSslCertificate::certInfoQByteArray() { QSslCertificate cert = QSslCertificate::fromPath(testDataDir + "certificates/cert.pem", QSsl::Pem, - QRegExp::FixedString).first(); + QSslCertificate::FixedString).first(); QVERIFY(!cert.isNull()); // in this test, check the bytearray variants before the enum variants to see if @@ -820,7 +904,7 @@ void tst_QSslCertificate::nulInCN() QSKIP("Generic QSslCertificatePrivate fails this test"); #endif QList<QSslCertificate> certList = - QSslCertificate::fromPath(testDataDir + "more-certificates/badguy-nul-cn.crt"); + QSslCertificate::fromPath(testDataDir + "more-certificates/badguy-nul-cn.crt", QSsl::Pem, QSslCertificate::FixedString); QCOMPARE(certList.size(), 1); const QSslCertificate &cert = certList.at(0); @@ -839,7 +923,7 @@ void tst_QSslCertificate::nulInSan() QSKIP("Generic QSslCertificatePrivate fails this test"); #endif QList<QSslCertificate> certList = - QSslCertificate::fromPath(testDataDir + "more-certificates/badguy-nul-san.crt"); + QSslCertificate::fromPath(testDataDir + "more-certificates/badguy-nul-san.crt", QSsl::Pem, QSslCertificate::FixedString); QCOMPARE(certList.size(), 1); const QSslCertificate &cert = certList.at(0); @@ -859,7 +943,7 @@ void tst_QSslCertificate::nulInSan() void tst_QSslCertificate::largeSerialNumber() { QList<QSslCertificate> certList = - QSslCertificate::fromPath(testDataDir + "more-certificates/cert-large-serial-number.pem"); + QSslCertificate::fromPath(testDataDir + "more-certificates/cert-large-serial-number.pem", QSsl::Pem, QSslCertificate::FixedString); QCOMPARE(certList.size(), 1); @@ -871,7 +955,7 @@ void tst_QSslCertificate::largeSerialNumber() void tst_QSslCertificate::largeExpirationDate() // QTBUG-12489 { QList<QSslCertificate> certList = - QSslCertificate::fromPath(testDataDir + "more-certificates/cert-large-expiration-date.pem"); + QSslCertificate::fromPath(testDataDir + "more-certificates/cert-large-expiration-date.pem", QSsl::Pem, QSslCertificate::FixedString); QCOMPARE(certList.size(), 1); @@ -884,7 +968,7 @@ void tst_QSslCertificate::largeExpirationDate() // QTBUG-12489 void tst_QSslCertificate::blacklistedCertificates() { - QList<QSslCertificate> blacklistedCerts = QSslCertificate::fromPath(testDataDir + "more-certificates/blacklisted*.pem", QSsl::Pem, QRegExp::Wildcard); + QList<QSslCertificate> blacklistedCerts = QSslCertificate::fromPath(testDataDir + "more-certificates/blacklisted*.pem", QSsl::Pem, QSslCertificate::Wildcard); QVERIFY(blacklistedCerts.count() > 0); for (int a = 0; a < blacklistedCerts.count(); a++) { QVERIFY(blacklistedCerts.at(a).isBlacklisted()); @@ -893,15 +977,15 @@ void tst_QSslCertificate::blacklistedCertificates() void tst_QSslCertificate::selfsignedCertificates() { - QVERIFY(QSslCertificate::fromPath(testDataDir + "certificates/cert-ss.pem").first().isSelfSigned()); - QVERIFY(!QSslCertificate::fromPath(testDataDir + "certificates/cert.pem").first().isSelfSigned()); + QVERIFY(QSslCertificate::fromPath(testDataDir + "certificates/cert-ss.pem", QSsl::Pem, QSslCertificate::FixedString).first().isSelfSigned()); + QVERIFY(!QSslCertificate::fromPath(testDataDir + "certificates/cert.pem", QSsl::Pem, QSslCertificate::FixedString).first().isSelfSigned()); QVERIFY(!QSslCertificate().isSelfSigned()); } void tst_QSslCertificate::toText() { QList<QSslCertificate> certList = - QSslCertificate::fromPath(testDataDir + "more-certificates/cert-large-expiration-date.pem"); + QSslCertificate::fromPath(testDataDir + "more-certificates/cert-large-expiration-date.pem", QSsl::Pem, QSslCertificate::FixedString); QCOMPARE(certList.size(), 1); const QSslCertificate &cert = certList.at(0); @@ -943,7 +1027,7 @@ void tst_QSslCertificate::toText() void tst_QSslCertificate::multipleCommonNames() { QList<QSslCertificate> certList = - QSslCertificate::fromPath(testDataDir + "more-certificates/test-cn-two-cns-cert.pem"); + QSslCertificate::fromPath(testDataDir + "more-certificates/test-cn-two-cns-cert.pem", QSsl::Pem, QSslCertificate::FixedString); QVERIFY(certList.count() > 0); QStringList commonNames = certList[0].subjectInfo(QSslCertificate::CommonName); @@ -954,14 +1038,14 @@ void tst_QSslCertificate::multipleCommonNames() void tst_QSslCertificate::subjectAndIssuerAttributes() { QList<QSslCertificate> certList = - QSslCertificate::fromPath(testDataDir + "more-certificates/test-cn-with-drink-cert.pem"); + QSslCertificate::fromPath(testDataDir + "more-certificates/test-cn-with-drink-cert.pem", QSsl::Pem, QSslCertificate::FixedString); QVERIFY(certList.count() > 0); QList<QByteArray> attributes = certList[0].subjectInfoAttributes(); QVERIFY(attributes.contains(QByteArray("favouriteDrink"))); attributes.clear(); - certList = QSslCertificate::fromPath(testDataDir + "more-certificates/natwest-banking.pem"); + certList = QSslCertificate::fromPath(testDataDir + "more-certificates/natwest-banking.pem", QSsl::Pem, QSslCertificate::FixedString); QVERIFY(certList.count() > 0); QByteArray shortName("1.3.6.1.4.1.311.60.2.1.3"); @@ -996,17 +1080,17 @@ void tst_QSslCertificate::verify() errors.clear(); // Verify a valid cert signed by a CA - QList<QSslCertificate> caCerts = QSslCertificate::fromPath(testDataDir + "verify-certs/cacert.pem"); + QList<QSslCertificate> caCerts = QSslCertificate::fromPath(testDataDir + "verify-certs/cacert.pem", QSsl::Pem, QSslCertificate::FixedString); QSslSocket::addDefaultCaCertificate(caCerts.first()); - toVerify = QSslCertificate::fromPath(testDataDir + "verify-certs/test-ocsp-good-cert.pem"); + toVerify = QSslCertificate::fromPath(testDataDir + "verify-certs/test-ocsp-good-cert.pem", QSsl::Pem, QSslCertificate::FixedString); errors = QSslCertificate::verify(toVerify); VERIFY_VERBOSE(errors.count() == 0); errors.clear(); // Test a blacklisted certificate - toVerify = QSslCertificate::fromPath(testDataDir + "verify-certs/test-addons-mozilla-org-cert.pem"); + toVerify = QSslCertificate::fromPath(testDataDir + "verify-certs/test-addons-mozilla-org-cert.pem", QSsl::Pem, QSslCertificate::FixedString); errors = QSslCertificate::verify(toVerify); bool foundBlack = false; foreach (const QSslError &error, errors) { @@ -1019,7 +1103,7 @@ void tst_QSslCertificate::verify() errors.clear(); // This one is expired and untrusted - toVerify = QSslCertificate::fromPath(testDataDir + "more-certificates/cert-large-serial-number.pem"); + toVerify = QSslCertificate::fromPath(testDataDir + "more-certificates/cert-large-serial-number.pem", QSsl::Pem, QSslCertificate::FixedString); errors = QSslCertificate::verify(toVerify); VERIFY_VERBOSE(errors.contains(QSslError(QSslError::SelfSignedCertificate, toVerify[0]))); VERIFY_VERBOSE(errors.contains(QSslError(QSslError::CertificateExpired, toVerify[0]))); @@ -1027,15 +1111,15 @@ void tst_QSslCertificate::verify() toVerify.clear(); // This one is signed by a valid cert, but the signer is not a valid CA - toVerify << QSslCertificate::fromPath(testDataDir + "verify-certs/test-intermediate-not-ca-cert.pem").first(); - toVerify << QSslCertificate::fromPath(testDataDir + "verify-certs/test-ocsp-good-cert.pem").first(); + toVerify << QSslCertificate::fromPath(testDataDir + "verify-certs/test-intermediate-not-ca-cert.pem", QSsl::Pem, QSslCertificate::FixedString).first(); + toVerify << QSslCertificate::fromPath(testDataDir + "verify-certs/test-ocsp-good-cert.pem", QSsl::Pem, QSslCertificate::FixedString).first(); errors = QSslCertificate::verify(toVerify); VERIFY_VERBOSE(errors.contains(QSslError(QSslError::InvalidCaCertificate, toVerify[1]))); toVerify.clear(); // This one is signed by a valid cert, and the signer is a valid CA - toVerify << QSslCertificate::fromPath(testDataDir + "verify-certs/test-intermediate-is-ca-cert.pem").first(); - toVerify << QSslCertificate::fromPath(testDataDir + "verify-certs/test-intermediate-ca-cert.pem").first(); + toVerify << QSslCertificate::fromPath(testDataDir + "verify-certs/test-intermediate-is-ca-cert.pem", QSsl::Pem, QSslCertificate::FixedString).first(); + toVerify << QSslCertificate::fromPath(testDataDir + "verify-certs/test-intermediate-ca-cert.pem", QSsl::Pem, QSslCertificate::FixedString).first(); errors = QSslCertificate::verify(toVerify); VERIFY_VERBOSE(errors.count() == 0); @@ -1065,7 +1149,7 @@ QString tst_QSslCertificate::toString(const QList<QSslError>& errors) void tst_QSslCertificate::extensions() { QList<QSslCertificate> certList = - QSslCertificate::fromPath(testDataDir + "more-certificates/natwest-banking.pem"); + QSslCertificate::fromPath(testDataDir + "more-certificates/natwest-banking.pem", QSsl::Pem, QSslCertificate::FixedString); QVERIFY(certList.count() > 0); QSslCertificate cert = certList[0]; @@ -1163,7 +1247,7 @@ void tst_QSslCertificate::extensions() void tst_QSslCertificate::extensionsCritical() { QList<QSslCertificate> certList = - QSslCertificate::fromPath(testDataDir + "verify-certs/test-addons-mozilla-org-cert.pem"); + QSslCertificate::fromPath(testDataDir + "verify-certs/test-addons-mozilla-org-cert.pem", QSsl::Pem, QSslCertificate::FixedString); QVERIFY(certList.count() > 0); QSslCertificate cert = certList[0]; @@ -1284,12 +1368,12 @@ void tst_QSslCertificate::version_data() QTest::newRow("null certificate") << QSslCertificate() << QByteArray(); QList<QSslCertificate> certs; - certs << QSslCertificate::fromPath(testDataDir + "verify-certs/test-ocsp-good-cert.pem"); + certs << QSslCertificate::fromPath(testDataDir + "verify-certs/test-ocsp-good-cert.pem", QSsl::Pem, QSslCertificate::FixedString); QTest::newRow("v3 certificate") << certs.first() << QByteArrayLiteral("3"); certs.clear(); - certs << QSslCertificate::fromPath(testDataDir + "certificates/cert.pem"); + certs << QSslCertificate::fromPath(testDataDir + "certificates/cert.pem", QSsl::Pem, QSslCertificate::FixedString); QTest::newRow("v1 certificate") << certs.first() << QByteArrayLiteral("1"); } @@ -1326,7 +1410,7 @@ void tst_QSslCertificate::pkcs12() QVERIFY(ok); f.close(); - QList<QSslCertificate> leafCert = QSslCertificate::fromPath(testDataDir + QLatin1String("pkcs12/leaf.crt")); + QList<QSslCertificate> leafCert = QSslCertificate::fromPath(testDataDir + QLatin1String("pkcs12/leaf.crt"), QSsl::Pem, QSslCertificate::FixedString); QVERIFY(!leafCert.isEmpty()); QCOMPARE(cert, leafCert.first()); @@ -1341,7 +1425,7 @@ void tst_QSslCertificate::pkcs12() QVERIFY(!leafKey.isNull()); QCOMPARE(key, leafKey); - QList<QSslCertificate> caCert = QSslCertificate::fromPath(testDataDir + QLatin1String("pkcs12/inter.crt")); + QList<QSslCertificate> caCert = QSslCertificate::fromPath(testDataDir + QLatin1String("pkcs12/inter.crt"), QSsl::Pem, QSslCertificate::FixedString); QVERIFY(!caCert.isEmpty()); QVERIFY(!caCerts.isEmpty()); diff --git a/tests/auto/network/ssl/qsslsocket/BLACKLIST b/tests/auto/network/ssl/qsslsocket/BLACKLIST index 7b4a29f463..749c59d968 100644 --- a/tests/auto/network/ssl/qsslsocket/BLACKLIST +++ b/tests/auto/network/ssl/qsslsocket/BLACKLIST @@ -3,9 +3,9 @@ windows [spontaneousWrite] windows-7sp1 [connectToHostEncrypted] -osx-10.13 +macos [setSslConfiguration] windows-10 msvc-2015 windows-7sp1 [connectToHostEncryptedWithVerificationPeerName] -osx-10.13 +macos diff --git a/tests/auto/other/lancelot/lancelot.pro b/tests/auto/other/lancelot/lancelot.pro index 6ece7315ed..5b9117983a 100644 --- a/tests/auto/other/lancelot/lancelot.pro +++ b/tests/auto/other/lancelot/lancelot.pro @@ -1,6 +1,7 @@ CONFIG += testcase TARGET = tst_lancelot QT += testlib gui-private +qtConfig(opengl): QT += opengl SOURCES += tst_lancelot.cpp \ paintcommands.cpp diff --git a/tests/auto/other/macnativeevents/BLACKLIST b/tests/auto/other/macnativeevents/BLACKLIST index 2922e22d9f..b0a6551587 100644 --- a/tests/auto/other/macnativeevents/BLACKLIST +++ b/tests/auto/other/macnativeevents/BLACKLIST @@ -19,7 +19,7 @@ osx osx [testMouseDragToNonClientArea] osx -osx-10.12 ci +macos ci # The following key tests fail after switching to synchronous # expose events, and we don't know why yet. QTBUG-62042 [testKeyPressOnToplevel] @@ -32,8 +32,8 @@ osx osx # QTQAINFRA-1292 [testPushButtonPressRelease] -osx-10.12 ci +macos ci # QTQAINFRA-1292 [testModifierCtrlWithDontSwapCtrlAndMeta] -osx-10.12 ci +macos ci diff --git a/tests/auto/tools/moc/allmocs_baseline_in.json b/tests/auto/tools/moc/allmocs_baseline_in.json index 2a70a52587..0ce464a709 100644 --- a/tests/auto/tools/moc/allmocs_baseline_in.json +++ b/tests/auto/tools/moc/allmocs_baseline_in.json @@ -1023,6 +1023,7 @@ "final": false, "name": "prop1", "read": "getProp1", + "required": false, "scriptable": true, "stored": true, "type": "FwdClass1", @@ -1035,6 +1036,7 @@ "final": false, "name": "prop2", "read": "getProp2", + "required": false, "scriptable": true, "stored": true, "type": "FwdClass2", @@ -1047,6 +1049,7 @@ "final": false, "name": "prop3", "read": "getProp3", + "required": false, "scriptable": true, "stored": true, "type": "FwdClass3", @@ -1157,6 +1160,7 @@ "final": false, "name": "flags", "read": "flags", + "required": false, "scriptable": true, "stored": true, "type": "Flags", @@ -1181,6 +1185,7 @@ "final": false, "name": "flags", "read": "flags", + "required": false, "scriptable": true, "stored": true, "type": "Foo::Bar::Flags", @@ -1193,6 +1198,7 @@ "final": false, "name": "flagsList", "read": "flagsList", + "required": false, "scriptable": true, "stored": true, "type": "QVector<Foo::Bar::Flags>", @@ -1706,6 +1712,7 @@ "final": false, "name": "blah", "read": "blah", + "required": false, "scriptable": true, "stored": true, "type": "A::SomeEnum", @@ -1755,6 +1762,7 @@ "final": false, "name": "blah", "read": "blah", + "required": false, "scriptable": true, "stored": true, "type": "A::SomeEnum", @@ -1924,6 +1932,7 @@ "final": false, "name": "gadgetPoperty", "read": "gadgetPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Gadget::SomeEnum", @@ -1935,6 +1944,7 @@ "final": false, "name": "objectPoperty", "read": "objectPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Object::SomeEnum", @@ -1958,6 +1968,7 @@ "final": false, "name": "nestedGadgetPoperty", "read": "nestedGadgetPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Nested::Gadget::SomeEnum", @@ -1981,6 +1992,7 @@ "final": false, "name": "nestedObjectPoperty", "read": "nestedObjectPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Nested::Object::SomeEnum", @@ -2109,6 +2121,7 @@ "final": false, "name": "gadgetPoperty", "read": "gadgetPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Gadget::SomeEnum", @@ -2120,6 +2133,7 @@ "final": false, "name": "objectPoperty", "read": "objectPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Object::SomeEnum", @@ -2143,6 +2157,7 @@ "final": false, "name": "nestedGadgetPoperty", "read": "nestedGadgetPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Nested::Gadget::SomeEnum", @@ -2166,6 +2181,7 @@ "final": false, "name": "nestedObjectPoperty", "read": "nestedObjectPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Nested::Object::SomeEnum", diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 2bad8f2e63..a4ee6795c4 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Copyright (C) 2020 Olivier Goffart <ogoffart@woboq.com> ** Contact: https://www.qt.io/licensing/ ** @@ -721,6 +721,7 @@ private slots: void cxxAttributes(); void mocJsonOutput(); void mocInclude(); + void requiredProperties(); signals: void sigWithUnsignedArg(unsigned foo); @@ -4029,6 +4030,29 @@ void tst_Moc::mocInclude() QCOMPARE(obj.prop1->x, 45); } +class RequiredTest :public QObject +{ + Q_OBJECT + + Q_PROPERTY(int required MEMBER m_required REQUIRED) + Q_PROPERTY(int notRequired MEMBER m_notRequired) + +private: + int m_required; + int m_notRequired; +}; + +void tst_Moc::requiredProperties() +{ + QMetaObject mo = RequiredTest::staticMetaObject; + QMetaProperty required = mo.property(mo.indexOfProperty("required")); + QVERIFY(required.isValid()); + QVERIFY(required.isRequired()); + QMetaProperty notRequired = mo.property(mo.indexOfProperty("notRequired")); + QVERIFY(notRequired.isValid()); + QVERIFY(!notRequired.isRequired()); +} + QTEST_MAIN(tst_Moc) // the generated code must compile with QT_NO_KEYWORDS diff --git a/tests/auto/widgets/dialogs/qdialog/BLACKLIST b/tests/auto/widgets/dialogs/qdialog/BLACKLIST index 72e3dff6dd..ad86386895 100644 --- a/tests/auto/widgets/dialogs/qdialog/BLACKLIST +++ b/tests/auto/widgets/dialogs/qdialog/BLACKLIST @@ -1,4 +1,4 @@ [snapToDefaultButton] -osx-10.14 +macos [showFullScreen] -osx-10.13 ci +macos ci diff --git a/tests/auto/widgets/dialogs/qfiledialog2/BLACKLIST b/tests/auto/widgets/dialogs/qfiledialog2/BLACKLIST index 875855b59e..9e14db48d0 100644 --- a/tests/auto/widgets/dialogs/qfiledialog2/BLACKLIST +++ b/tests/auto/widgets/dialogs/qfiledialog2/BLACKLIST @@ -1,4 +1,2 @@ [QTBUG4419_lineEditSelectAll] -osx-10.12 -osx-10.14 -osx-10.13 +macos diff --git a/tests/auto/widgets/dialogs/qprogressdialog/BLACKLIST b/tests/auto/widgets/dialogs/qprogressdialog/BLACKLIST index 2b784414cd..92f9680e7e 100644 --- a/tests/auto/widgets/dialogs/qprogressdialog/BLACKLIST +++ b/tests/auto/widgets/dialogs/qprogressdialog/BLACKLIST @@ -1,2 +1,2 @@ [autoShow] -osx-10.13 +macos diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp index 0010718d3e..4206ce1f87 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp @@ -8016,11 +8016,21 @@ public: //Doesn't use the extended style option so the exposed rect is the boundingRect if (!(flags() & QGraphicsItem::ItemUsesExtendedStyleOption)) { QCOMPARE(option->exposedRect, boundingRect()); +#if QT_DEPRECATED_SINCE(5, 13) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED QCOMPARE(option->matrix, QMatrix()); +QT_WARNING_POP +#endif } else { QVERIFY(option->exposedRect != QRect()); QVERIFY(option->exposedRect != boundingRect()); +#if QT_DEPRECATED_SINCE(5, 13) +QT_WARNING_PUSH +QT_WARNING_DISABLE_DEPRECATED QCOMPARE(option->matrix, sceneTransform().toAffine()); +QT_WARNING_POP +#endif } } QGraphicsRectItem::paint(painter, option, widget); diff --git a/tests/auto/widgets/graphicsview/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp b/tests/auto/widgets/graphicsview/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp index ed79904ed8..0d8e5b4d54 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp @@ -31,7 +31,6 @@ #include <qgraphicsitemanimation.h> #include <QtCore/qtimeline.h> -#include <QtGui/qmatrix.h> class tst_QGraphicsItemAnimation : public QObject { diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp index d521c6f11c..bd027f9eb1 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp @@ -67,7 +67,7 @@ using namespace QTestPrivate; Q_DECLARE_METATYPE(ExpectedValueDescription) Q_DECLARE_METATYPE(QList<int>) Q_DECLARE_METATYPE(QList<QRectF>) -Q_DECLARE_METATYPE(QMatrix) +Q_DECLARE_METATYPE(QTransform) Q_DECLARE_METATYPE(QPainterPath) Q_DECLARE_METATYPE(Qt::ScrollBarPolicy) Q_DECLARE_METATYPE(ScrollBarCount) @@ -291,7 +291,7 @@ void tst_QGraphicsView::construction() QCOMPARE(view.sceneRect(), QRectF()); QVERIFY(view.viewport()); QCOMPARE(view.viewport()->metaObject()->className(), "QWidget"); - QCOMPARE(view.matrix(), QMatrix()); + QCOMPARE(view.transform(), QTransform()); QVERIFY(view.items().isEmpty()); QVERIFY(view.items(QPoint()).isEmpty()); QVERIFY(view.items(QRect()).isEmpty()); @@ -1208,37 +1208,37 @@ void tst_QGraphicsView::matrix() void tst_QGraphicsView::matrix_convenience() { QGraphicsView view; - QCOMPARE(view.matrix(), QMatrix()); + QCOMPARE(view.transform(), QTransform()); // Check the convenience functions view.rotate(90); - QCOMPARE(view.matrix(), QMatrix().rotate(90)); + QCOMPARE(view.transform(), QTransform().rotate(90)); view.scale(2, 2); - QCOMPARE(view.matrix(), QMatrix().scale(2, 2) * QMatrix().rotate(90)); + QCOMPARE(view.transform(), QTransform().scale(2, 2) * QTransform().rotate(90)); view.shear(1.2, 1.2); - QCOMPARE(view.matrix(), QMatrix().shear(1.2, 1.2) * QMatrix().scale(2, 2) * QMatrix().rotate(90)); + QCOMPARE(view.transform(), QTransform().shear(1.2, 1.2) * QTransform().scale(2, 2) * QTransform().rotate(90)); view.translate(1, 1); - QCOMPARE(view.matrix(), QMatrix().translate(1, 1) * QMatrix().shear(1.2, 1.2) * QMatrix().scale(2, 2) * QMatrix().rotate(90)); + QCOMPARE(view.transform(), QTransform().translate(1, 1) * QTransform().shear(1.2, 1.2) * QTransform().scale(2, 2) * QTransform().rotate(90)); } void tst_QGraphicsView::matrix_combine() { // Check matrix combining QGraphicsView view; - QCOMPARE(view.matrix(), QMatrix()); - view.setMatrix(QMatrix().rotate(90), true); - view.setMatrix(QMatrix().rotate(90), true); - view.setMatrix(QMatrix().rotate(90), true); - view.setMatrix(QMatrix().rotate(90), true); - QCOMPARE(view.matrix(), QMatrix()); - - view.resetMatrix(); - QCOMPARE(view.matrix(), QMatrix()); - view.setMatrix(QMatrix().rotate(90), false); - view.setMatrix(QMatrix().rotate(90), false); - view.setMatrix(QMatrix().rotate(90), false); - view.setMatrix(QMatrix().rotate(90), false); - QCOMPARE(view.matrix(), QMatrix().rotate(90)); + QCOMPARE(view.transform(), QTransform()); + view.setTransform(QTransform().rotate(90), true); + view.setTransform(QTransform().rotate(90), true); + view.setTransform(QTransform().rotate(90), true); + view.setTransform(QTransform().rotate(90), true); + QCOMPARE(view.transform(), QTransform()); + + view.resetTransform(); + QCOMPARE(view.transform(), QTransform()); + view.setTransform(QTransform().rotate(90), false); + view.setTransform(QTransform().rotate(90), false); + view.setTransform(QTransform().rotate(90), false); + view.setTransform(QTransform().rotate(90), false); + QCOMPARE(view.transform(), QTransform().rotate(90)); } void tst_QGraphicsView::centerOnPoint() @@ -2125,8 +2125,8 @@ void tst_QGraphicsView::mapFromScenePath() QPainterPath path2; path2.addPolygon(polygon2); - QPolygonF pathPoly = view.mapFromScene(path).toFillPolygon(); - QPolygonF path2Poly = path2.toFillPolygon(); + QPolygonF pathPoly = view.mapFromScene(path).toFillPolygon(QTransform()); + QPolygonF path2Poly = path2.toFillPolygon(QTransform()); for (int i = 0; i < pathPoly.size(); ++i) { QVERIFY(qAbs(pathPoly[i].x() - path2Poly[i].x()) < 3); diff --git a/tests/auto/widgets/itemviews/qabstractitemview/BLACKLIST b/tests/auto/widgets/itemviews/qabstractitemview/BLACKLIST new file mode 100644 index 0000000000..1233bec166 --- /dev/null +++ b/tests/auto/widgets/itemviews/qabstractitemview/BLACKLIST @@ -0,0 +1,2 @@ +[task200665_itemEntered] +macos # Can't move cursor (QTBUG-76312) diff --git a/tests/auto/widgets/kernel/qwidget/BLACKLIST b/tests/auto/widgets/kernel/qwidget/BLACKLIST index be19d8fd0b..cf35491ec0 100644 --- a/tests/auto/widgets/kernel/qwidget/BLACKLIST +++ b/tests/auto/widgets/kernel/qwidget/BLACKLIST @@ -24,9 +24,7 @@ opensuse-42.3 [childEvents] macos [renderInvisible] -osx-10.12 -osx-10.11 -osx-10.14 +macos [optimizedResizeMove] osx [optimizedResize_topLevel] diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index dd747a8616..c015bf85d0 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -72,6 +72,7 @@ #include <QtWidgets/QGraphicsProxyWidget> #include <QtGui/qwindow.h> #include <qtimer.h> +#include <QtWidgets/QDoubleSpinBox> #if defined(Q_OS_OSX) #include "tst_qwidget_mac_helpers.h" // Abstract the ObjC stuff out so not everyone must run an ObjC++ compile. @@ -187,6 +188,7 @@ private slots: void tabOrderNoChange2(); void appFocusWidgetWithFocusProxyLater(); void appFocusWidgetWhenLosingFocusProxy(); + void explicitTabOrderWithComplexWidget(); #if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) void activation(); #endif @@ -2110,6 +2112,32 @@ void tst_QWidget::appFocusWidgetWhenLosingFocusProxy() QCOMPARE(QApplication::focusWidget(), lineEdit); } +void tst_QWidget::explicitTabOrderWithComplexWidget() +{ + // Check that handling tab/backtab with a widget comprimised of other widgets + // handles tabbing correctly + Container window; + auto lineEditOne = new QLineEdit; + window.box->addWidget(lineEditOne); + auto lineEditTwo = new QLineEdit; + window.box->addWidget(lineEditTwo); + QWidget::setTabOrder(lineEditOne, lineEditTwo); + lineEditOne->setFocus(); + window.show(); + QApplication::setActiveWindow(&window); + QVERIFY(QTest::qWaitForWindowActive(&window)); + QTRY_COMPARE(QApplication::focusWidget(), lineEditOne); + + window.tab(); + QTRY_COMPARE(QApplication::focusWidget(), lineEditTwo); + window.tab(); + QTRY_COMPARE(QApplication::focusWidget(), lineEditOne); + window.backTab(); + QTRY_COMPARE(QApplication::focusWidget(), lineEditTwo); + window.backTab(); + QTRY_COMPARE(QApplication::focusWidget(), lineEditOne); +} + #if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) void tst_QWidget::activation() { diff --git a/tests/auto/widgets/util/qscroller/BLACKLIST b/tests/auto/widgets/util/qscroller/BLACKLIST new file mode 100644 index 0000000000..347ab6440b --- /dev/null +++ b/tests/auto/widgets/util/qscroller/BLACKLIST @@ -0,0 +1,5 @@ +[scrollTo] +macos + +[scroll] +macos diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index ea1b330152..3878e7ccb2 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -2756,10 +2756,7 @@ void tst_QComboBox::resetModel() class StringListModel : public QStringListModel { public: - StringListModel(const QStringList &list) : QStringListModel(list) - { - } - + using QStringListModel::QStringListModel; void reset() { QStringListModel::beginResetModel(); @@ -2767,8 +2764,8 @@ void tst_QComboBox::resetModel() } }; QComboBox cb; - StringListModel model( QStringList() << "1" << "2"); - QSignalSpy spy(&cb, SIGNAL(currentIndexChanged(int))); + StringListModel model({"1", "2"}); + QSignalSpy spy(&cb, QOverload<int>::of(&QComboBox::currentIndexChanged)); QCOMPARE(spy.count(), 0); QCOMPARE(cb.currentIndex(), -1); //no selection @@ -2779,7 +2776,7 @@ void tst_QComboBox::resetModel() model.reset(); QCOMPARE(spy.count(), 2); - QCOMPARE(cb.currentIndex(), -1); //no selection + QCOMPARE(cb.currentIndex(), 0); //first item selected } diff --git a/tests/auto/widgets/widgets/qdoublespinbox/BLACKLIST b/tests/auto/widgets/widgets/qdoublespinbox/BLACKLIST index 8f5648d0f9..9da179e365 100644 --- a/tests/auto/widgets/widgets/qdoublespinbox/BLACKLIST +++ b/tests/auto/widgets/widgets/qdoublespinbox/BLACKLIST @@ -1,4 +1,2 @@ [editingFinished] -osx-10.12 -osx-10.14 -osx-10.13 +macos diff --git a/tests/auto/widgets/widgets/qmdiarea/BLACKLIST b/tests/auto/widgets/widgets/qmdiarea/BLACKLIST index 1dd876ea97..6010772be7 100644 --- a/tests/auto/widgets/widgets/qmdiarea/BLACKLIST +++ b/tests/auto/widgets/widgets/qmdiarea/BLACKLIST @@ -2,15 +2,12 @@ ubuntu-16.04 rhel-7.6 opensuse-leap -osx-10.11 -osx-10.13 +macos ubuntu-18.04 -osx-10.14 +macos rhel-7.4 -osx-10.12 +macos opensuse-42.3 [resizeTimer] -osx-10.12 -osx-10.14 -osx-10.13 +macos diff --git a/tests/auto/widgets/widgets/qmenu/BLACKLIST b/tests/auto/widgets/widgets/qmenu/BLACKLIST index ba9c184a67..5677172f8e 100644 --- a/tests/auto/widgets/widgets/qmenu/BLACKLIST +++ b/tests/auto/widgets/widgets/qmenu/BLACKLIST @@ -1,14 +1,12 @@ [task258920_mouseBorder] -osx-10.14 -osx-10.13 +macos [layoutDirection] -osx-10.12 -osx-10.13 +macos # Fails when enabling synchronous expose events QTBUG-62092 [pushButtonPopulateOnAboutToShow] -osx-10.13 +macos [tearOff] -osx-10.14 +macos [activeSubMenuPosition] winrt [submenuTearOffDontClose] diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp index 207327f073..8ad4324c9e 100644 --- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp +++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp @@ -40,6 +40,7 @@ #include <QWidgetAction> #include <QDesktopWidget> #include <QScreen> +#include <QSpinBox> #include <qdialog.h> #include <qmenu.h> @@ -114,6 +115,7 @@ private slots: void QTBUG30595_rtl_submenu(); void QTBUG20403_nested_popup_on_shortcut_trigger(); void QTBUG47515_widgetActionEnterLeave(); + void QTBUG8122_widgetActionCrashOnClose(); void QTBUG_10735_crashWithDialog(); #ifdef Q_OS_MAC @@ -1352,6 +1354,60 @@ void tst_QMenu::QTBUG47515_widgetActionEnterLeave() } } +void tst_QMenu::QTBUG8122_widgetActionCrashOnClose() +{ + if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation)) + QSKIP("Window activation is not supported"); + if (QGuiApplication::platformName() == QLatin1String("cocoa")) + QSKIP("See QTBUG-63031"); +#ifdef Q_OS_WINRT + QSKIP("WinRT does not support QTest::mouseMove"); +#endif + + const QRect availableGeometry = QGuiApplication::primaryScreen()->availableGeometry(); + QRect geometry(QPoint(), availableGeometry.size() / 3); + geometry.moveCenter(availableGeometry.center()); + QPoint pointOutsideMenu = geometry.bottomRight() - QPoint(5, 5); + + QMainWindow topLevel; + topLevel.setGeometry(geometry); + + auto menuBar = topLevel.menuBar(); + auto menu = menuBar->addMenu("Menu"); + auto wAct = new QWidgetAction(menu); + auto spinBox1 = new QSpinBox(menu); + wAct->setDefaultWidget(spinBox1); + menu->addAction(wAct); + auto subMenu = menu->addMenu("Submenu"); + auto nextMenuAct = menu->addMenu(subMenu); + auto wAct2 = new QWidgetAction(menu); + auto spinBox2 = new QSpinBox(menu); + wAct2->setDefaultWidget(spinBox2); + subMenu->addAction(wAct2); + QObject::connect(spinBox2, &QSpinBox::editingFinished, menu, &QMenu::hide); + + topLevel.show(); + topLevel.setWindowTitle(QTest::currentTestFunction()); + QVERIFY(QTest::qWaitForWindowActive(&topLevel)); + QWindow *topLevelWindow = topLevel.windowHandle(); + QVERIFY(topLevelWindow); + + const QPoint menuActionPos = menuBar->mapTo(&topLevel, menuBar->actionGeometry(menu->menuAction()).center()); + QTest::mouseClick(topLevelWindow, Qt::LeftButton, Qt::KeyboardModifiers(), menuActionPos); + QVERIFY(QTest::qWaitForWindowExposed(menu)); + + QPoint w1Center = topLevel.mapFromGlobal(spinBox1->mapToGlobal(spinBox1->rect().center())); + QTest::mouseClick(topLevelWindow, Qt::LeftButton, Qt::KeyboardModifiers(), w1Center); + menu->setActiveAction(nextMenuAct); + QVERIFY(QTest::qWaitForWindowExposed(subMenu)); + + QPoint w2Center = topLevel.mapFromGlobal(spinBox2->mapToGlobal(spinBox2->rect().center())); + QTest::mouseClick(topLevelWindow, Qt::LeftButton, Qt::KeyboardModifiers(), w2Center); + QTest::mouseMove(topLevelWindow, topLevel.mapFromGlobal(pointOutsideMenu)); + QTRY_VERIFY(menu->isHidden()); +} + + class MyMenu : public QMenu { Q_OBJECT diff --git a/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro b/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro index 039f5a71b8..f78dc510bf 100644 --- a/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro +++ b/tests/auto/widgets/widgets/qopenglwidget/qopenglwidget.pro @@ -1,5 +1,5 @@ CONFIG += testcase TARGET = tst_qopenglwidget -QT += opengl gui-private core-private testlib widgets +QT += opengl opengl-private gui-private core-private testlib widgets SOURCES += tst_qopenglwidget.cpp diff --git a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp index bc1496d0f6..e27600bad2 100644 --- a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp +++ b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp @@ -33,6 +33,7 @@ #include <qpushbutton.h> #include <qstyle.h> +#include <qstyleoption.h> class tst_QTabBar : public QObject { @@ -279,30 +280,53 @@ void tst_QTabBar::hideTab() QTEST(tabbar.currentIndex(), "finalIndex"); } +class TabBar : public QTabBar +{ +public: + using QTabBar::QTabBar; + using QTabBar::initStyleOption; + using QTabBar::moveTab; +}; + void tst_QTabBar::hideAllTabs() { - QTabBar tabbar; + TabBar tabbar; + auto checkPositions = [&tabbar](const QVector<int> &positions) + { + QStyleOptionTab option; + int iPos = 0; + for (int i = 0; i < tabbar.count(); ++i) { + if (!tabbar.isTabVisible(i)) + continue; + tabbar.initStyleOption(&option, i); + QCOMPARE(option.position, positions.at(iPos++)); + } + }; tabbar.addTab("foo"); tabbar.addTab("bar"); tabbar.addTab("baz"); tabbar.setCurrentIndex(0); + checkPositions({QStyleOptionTab::Beginning, QStyleOptionTab::Middle, QStyleOptionTab::End}); // Check we don't crash trying to hide an unexistant tab QSize prevSizeHint = tabbar.sizeHint(); tabbar.setTabVisible(3, false); + checkPositions({QStyleOptionTab::Beginning, QStyleOptionTab::Middle, QStyleOptionTab::End}); QCOMPARE(tabbar.currentIndex(), 0); QSize sizeHint = tabbar.sizeHint(); QVERIFY(sizeHint.width() == prevSizeHint.width()); prevSizeHint = sizeHint; tabbar.setTabVisible(1, false); + checkPositions({QStyleOptionTab::Beginning, QStyleOptionTab::End}); QCOMPARE(tabbar.currentIndex(), 0); sizeHint = tabbar.sizeHint(); QVERIFY(sizeHint.width() < prevSizeHint.width()); prevSizeHint = sizeHint; tabbar.setTabVisible(2, false); + checkPositions({QStyleOptionTab::OnlyOneTab}); QCOMPARE(tabbar.currentIndex(), 0); sizeHint = tabbar.sizeHint(); QVERIFY(sizeHint.width() < prevSizeHint.width()); @@ -571,14 +595,6 @@ void tst_QTabBar::selectionBehaviorOnRemove() QCOMPARE(tabbar.currentIndex(), expected); } -class TabBar : public QTabBar -{ - Q_OBJECT -public: - void callMoveTab(int from, int to){ moveTab(from, to); } -}; - - Q_DECLARE_METATYPE(QTabBar::Shape) void tst_QTabBar::moveTab_data() { @@ -613,7 +629,7 @@ void tst_QTabBar::moveTab() bar.setShape(shape); while(--tabs >= 0) bar.addTab(QString::number(tabs)); - bar.callMoveTab(from, to); + bar.moveTab(from, to); } diff --git a/tests/auto/widgets/widgets/qtoolbutton/BLACKLIST b/tests/auto/widgets/widgets/qtoolbutton/BLACKLIST index 52ba36562f..315e179d0a 100644 --- a/tests/auto/widgets/widgets/qtoolbutton/BLACKLIST +++ b/tests/auto/widgets/widgets/qtoolbutton/BLACKLIST @@ -1,2 +1,2 @@ [task176137_autoRepeatOfAction] -osx-10.13 +macos |