Commit Graph

28712 Commits

Author SHA1 Message Date
Thiago Macieira
5fa3e2a82e tst_QDBusConnection: add a test for a regular signal connection
Since it's a slot with the same name as an existing one, this test also
verifies that QDBusConnection::connect() can properly distinguish
between overloads.

This test moves the receiver out of the main class, just to be sure that
we don't leave connections behind when tests are run (like
slotsWithLessParameters did).

Change-Id: I87e17314d8b24ae983b1fffd1453ad81952c49aa
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-07-02 16:38:02 +00:00
Thiago Macieira
169f1beaf5 Move QElapsedTimer to src/corelib/kernel
It's really a kernel functionality, as it implements really low-level
functionality and it's used by the event dispatcher. It was in tools/
only because QTime is.

QDeadlineTimer is also coming to kernel/.

Change-Id: Ifea6e497f11a461db432ffff14491c6d9b839eb0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-07-02 07:51:45 +00:00
Anton Kudryavtsev
6662919ecd CoreLib: use QStringRef to optimize memory allocation
Replace substring functions that return QString with
corresponding functions that return QStringRef where
it's possible.

Create QString from QStringRef only where necessary.

Change-Id: Id9ea11b16947220cd27787c0b529de62d10b6c26
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-07-02 07:39:06 +00:00
Anton Kudryavtsev
2185b2f054 ItemModel: Extract Method isVariantLessThan()
As noted in comments, QSortFilterProxyModel and QStandardItemModel
duplicate code to compare QVariant; extract this into a separate method
they can share.

Since there is only one common suitable header for both files,
the method was placed in qabstractitemmodel.cpp

Change-Id: I82bb4a2d6084059b8a70a8d556c16f1a29f4f686
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-02 07:38:00 +00:00
Lars Knoll
98526119c6 Handle the -[no]make command line arguments in qmake
Change-Id: I979f648b4301152e4a13ffe90aa05d9ded8556c8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-02 06:18:55 +00:00
Lars Knoll
e9ba9609f1 Determine the set of modules to skip in qmake
Change-Id: I421f50e5944962eae41700180ee49a916a2a023d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-02 06:18:48 +00:00
Lars Knoll
c167308c5d Fix handling of -v/-verbose command line flags to configure
This is not a feature that should get propagated to other
configure runs, so simply hardcode support for it.

Change-Id: Ieb1c33243154b3583e91061d3592d7e87c36f402
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-02 06:18:40 +00:00
Lars Knoll
3114237877 Call arch test through the new qmake based configure system
Detect host and target architecture from within qmake, and set
QT_ARCH accordingly.

Change-Id: I30255f88c7645d197bd07355a1dff02b377cbbe8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-02 06:18:32 +00:00
Thiago Macieira
d72ac3f35f moc: remove _MSC_EXTENSIONS #define
Because we obviously don't support Microsoft's extensions in C++. This
is required because some MS headers have code that isn't proper C++,
like iso646.h:

 #if !defined(__cplusplus) || defined(_MSC_EXTENSIONS)
  #define and   &&

Change-Id: Ib57b52598e2f452985e9fffd145a3d4ec28e773d
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-07-02 02:02:34 +00:00
Frederik Gladhorn
5b66f4ba40 Allow passing configure opts with two dashes again
The regexp were capturing too greedy:
$$replace(c, "^--?(.*)", "\\1") changes --developer-build to
-developer-build. Do not accidentally capture the second dash.

Change-Id: I19586a1678fc3bf3f450ec31f5bd7e71e9514b34
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-07-01 21:17:53 +00:00
Liang Qi
200fdd96f0 Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
	configure
	configure.json

Change-Id: Iba032d9a29c273da2585632bc6e22bbafb961808
2016-07-01 13:21:29 +02:00
Lars Knoll
cb260c6c7f Harmonize directwrite handling between the configures
There is a config test for DirectWrite we should run, so
use that instead of autoDetect=false in the new system.
Also, don't add the feature to the CONFIG variable in
configure.exe, as it's not used that way anyway.

Change-Id: I9266ccda8405adce765eac8f0435d723c6bc6f1f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-01 07:32:12 +00:00
Lars Knoll
9fb56cfaae Correctly detect the MSVC compiler
But without a version number for now.

Change-Id: I0a976ba463cff6812faf85de03a6ad003ea582f5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-01 07:32:07 +00:00
Fredrik de Vibe
2f4ce3b778 Removed needless null check.
The pointer 'receiver' has already been checked and dereferenced at this
point, so a static_cast will not turn it into a null pointer, hence the
check is not needed.

This was caught by Coverity, CID 159389.

Change-Id: I1772110e968c2216dc71d406ddb157b1ae930cb0
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-06-30 19:35:39 +00:00
Andy Nichols
6bdc549abe Remove unused function loadIntegration from EGLFS
There was a leftover function for loading EGLFS device integrations
from the time before device integrations were plugins.

Change-Id: I88606d14f773f4cf9f68e0341044e8281ed86442
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-06-30 10:53:56 +00:00
Błażej Szczygieł
e2665600c0 xcb: Send expose event while shrinking windows
Send synthesized expose event while shrinking the QWindow. This fixes
the regression which can break some applications which need the paint
events while shrinking the QWindow.

Added auto test.

Task-number: QTBUG-54040
Change-Id: Iaa992abba67f428237fa12c6cae56592b8fcadb0
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-06-30 06:51:48 +00:00
Milla Pohjanheimo
699f9ecc20 Blacklisting a flaky imageAt() autotest on RHEL 7.2
tst_QAbstractTextDocumentLayout::imageAt() is flaky and is blacklisted

Task-number: QTBUG-53648
Change-Id: Ia9b0c8934a82d7518ff9d9e1538d995ab73feedb
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2016-06-30 06:33:58 +00:00
Anton Kudryavtsev
25f040820c QAbstractItemView: avoid search through QIndexEditorHash
Search's implicit cast (QModelIndex to QPersistentModelIndex) is slow.
Use cheap pre-test to avoid when we can.

Use method from 1d859ef805

Change-Id: Ic3d06869de717963bad6357abb99f3e025642078
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-30 04:57:16 +00:00
Andy Nichols
bd03048aa6 Fix VNC platform plugin building on i386
There was some leftover code that used qt_conv16ToRgb from Qt 4.

Change-Id: If34df00c828ae749d59824ad055e0e82928af9a8
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-06-29 15:00:17 +00:00
Anton Kudryavtsev
5c9e393117 QString: add some missing overloaded operator+
to keep compatibility with and without
using QT_USE_QSTRINGBUILDER.

Change-Id: If8218fe0693cdb7ad1250beb272e0e7c356bbf4a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-06-29 14:58:25 +00:00
Liang Qi
592da13664 Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7 2016-06-29 12:50:54 +00:00
Liang Qi
f27d8b9f57 Merge remote-tracking branch 'origin/5.6' into 5.7
Change-Id: If6ba05867e7c98159e1b94ff71923e8b36bdbccb
2016-06-29 10:10:22 +02:00
Anton Kudryavtsev
b9b3bff424 QAbstractItemView: use erase and std::remove_if with QList
... instead of using erase() in a loop, with quadratic complexity.

Change-Id: Id9c70a0d1d27b5057e5bf64c315bd66cbcd67330
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-06-29 07:51:20 +00:00
Oswald Buddenhagen
d0e4f28dea pass pkg-config environment to qmake invocations
qmake tries to use pkg-config when the config.test contains PKG_CONFIG,
which will of course fail without the sysrooted env vars. and unlike in
the old configure, these don't become automatically available by virtue
of the script simply exporting them.

longer-term, the test programs shouldn't mention pkg-config deps
explicitly, as these are redundant with what is specified in the JSON
file. relevant changes are already pending.

Task-number: QTBUG-54403
Change-Id: Ie9d3bbb2e4febffde5fd122d7d0a8b70b8679fcc
Reviewed-by: Liang Qi <liang.qi@qt.io>
2016-06-28 18:23:42 +00:00
Oswald Buddenhagen
16203353d0 beautify generated spacing
don't have extra spaces in the pkg-config calls when no environment
variables are injected.

Change-Id: Ieb14f775b2a04726e8f62114b69d9be7fa662eb0
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-06-28 18:23:39 +00:00
Oswald Buddenhagen
0c382efc79 use globally available constants
configure_base.prf gained them in a bugfix in 5.6.

Change-Id: I7763b3dcdfbcc6cfb0392ddc4b6556f926395111
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-06-28 18:23:34 +00:00
James McDonnell
0d720a000f Improve SQLite3 configuration test
Reference an SQLite3 function to verify that the library is being
linked.  Discovered that the test didn't do this when I switched the
Windows configure to use a compile test to determine whether the
system has SQLite3.  The test passed even though the initial
configure changes failed to provide the test with information about
the SQLite3 libraries.

Change-Id: I3114cfc2dec3a42a60c8e1e432eb8375b440d7e0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-06-28 14:36:01 +00:00
Friedemann Kleint
0dc5d8e6c9 Fix some qdoc-warnings for Qt 5.8.
qtbase/src/corelib/tools/qstring.cpp:8341: warning: Unknown command '\length'
qtbase/src/corelib/tools/qstring.cpp:8354: warning: Unknown command '\length'
qtbase/src/corelib/tools/qstring.cpp:8366: warning: Unknown command '\length'
qtbase/src/corelib/doc/src/animation.qdoc:38: warning: Can't link to 'QAbstractAnimation::updateCurrentValue()'
qtbase/src/corelib/io/qdatastream.cpp:529: warning: Undocumented enum item 'Qt_5_8' in QDataStream::Version
qtbase/src/corelib/tools/qdatetime.cpp:4377: warning: No documentation for 'QDateTime::currentSecsSinceEpoch()'
qtbase/src/corelib/tools/qcommandlineoption.cpp:435: warning: Undocumented parameter 'flags' in QCommandLineOption::setFlags()
qtbase/src/network/ssl/qsslconfiguration.cpp:857: warning: Undocumented parameter 'dhparams' in QSslConfiguration::setDiffieHellmanParameters()
qtbase/src/network/ssl/qsslconfiguration.cpp:830: warning: Undocumented parameter 'hint' in QSslConfiguration::setPreSharedKeyIdentityHint()
qtbase/src/network/ssl/qssldiffiehellmanparameters.cpp:225: warning: No such enum item 'ErrorUnsafeParameters' in QSslDiffieHellmanParameters::Error
qtbase/src/network/ssl/qssldiffiehellmanparameters.cpp:225: warning: No such enum item 'ErrorInvalidInputData' in QSslDiffieHellmanParameters::Error
qtbase/src/network/ssl/qssldiffiehellmanparameters.cpp:225: warning: Undocumented enum item 'UnsafeParametersError' in QSslDiffieHellmanParameters::Error
qtbase/src/network/ssl/qssldiffiehellmanparameters.cpp:225: warning: Undocumented enum item 'NoError' in QSslDiffieHellmanParameters::Error
qtbase/src/network/ssl/qssldiffiehellmanparameters.cpp:225: warning: Undocumented enum item 'InvalidInputDataError' in QSslDiffieHellmanParameters::Error
qtbase/src/network/ssl/qssldiffiehellmanparameters.cpp:105: warning: Undocumented parameter 'encoding' in QSslDiffieHellmanParameters::QSslDiffieHellmanParameters()
qtbase/src/network/ssl/qssldiffiehellmanparameters.cpp:129: warning: Undocumented parameter 'encoding' in QSslDiffieHellmanParameters::QSslDiffieHellmanParameters()
qtbase/src/network/ssl/qssldiffiehellmanparameters.cpp:208: warning: Can't link to 'clear()'
qtbase/src/network/ssl/qssldiffiehellmanparameters.cpp:277: warning: Undocumented parameter 'dhparam' in operator<<()
qtbase/src/network/ssl/qssldiffiehellmanparameters.cpp:277: warning: No such parameter 'dhparm' in operator<<()
qtbase/src/widgets/kernel/qapplication.cpp:999: warning: Cannot find 'QApplication::autoMaximizeThreshold' specified with '\property' in any header file

Change-Id: I4ac00f0fc0dbc4d421cf7c0273635d9681962645
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-06-28 13:27:46 +00:00
Andy Nichols
be9a49b916 SQL TDS fix missing override keyword
Plugin failed to build with clang due to missing Q_DECL_OVERRIDE

Change-Id: Idad54f3f0ea7403c388b39189d86cfab10f9fb04
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-06-28 13:05:17 +00:00
Oswald Buddenhagen
a8c98dcb89 fix default inc/lib path detection on msys
using the Makefile target separator to determine the host system is of
course not a terribly good idea. the correct variable to query would be
DIR_SEPARATOR, which always reflects the host. however, a direct os
query is less obscure in this case.

Task-number: QTBUG-54346
Change-Id: I6bc1372a7c9a84a241a97f9f767f046b026411c3
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2016-06-28 10:41:44 +00:00
Andy Nichols
1d9a319199 Limit the number of targets the VNC platform plugin is be built for
The VNC platform plugin is a port from the 4.8 code, which only
supported embedded Linux.  Right now that is the only platform this is
tested with so unless there is a need for other platforms to be hosting
applications over VNC we should limit it to only being built on unix
platforms that are not Android, or Darwin.

Change-Id: I49407669ee8ca6e9e3ed95b5bb350c7730839cf8
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-06-28 10:18:45 +00:00
Andy Nichols
8d67ce3c6f Cleanup VNC platform plugins debug messages
There were many development debug statements still intact, so now they
have been removed.  Some Debug messages were turned into Warnings when
it makes sense to warn the end user of something.  The rest of the
useful debug messages were converted to be in the qt.qpa.vnc logging
catagory.

Change-Id: I8e9525f02794ab5eccd4c8fcbc2b1f7c9c25b482
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-06-28 10:18:41 +00:00
Andy Nichols
adf6bd931f Add plugin arguments to VNC plugin
It is now possible to specify a port number to run the VNC server on, as
well as the screen properties:
Logical Size
Physical Size
Depth

Change-Id: I79b38c6e37ad5abb5e158eca9a17d7e8a86e692f
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-06-28 10:18:38 +00:00
Andy Nichols
2cf3696d9f Support multiple connected clients in the VNC plugin
Previously it was only possible for one client to connect at a time.
Now it is possible for multiple clients to connect to the VNC server and
view and interact with the application.

Change-Id: I886583a3abea2955367bf2da490127b041b5c5fb
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-06-28 10:18:34 +00:00
Lars Knoll
2204e9a7c4 Enable compilation of the VNC QPA plugin
Change-Id: I15e63638efbb613357f07015fee1955782970a6c
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-06-28 10:18:30 +00:00
Lars Knoll
1f1b773a35 Support for client side cursors in the VNC plugin
Client side cursors are a major performance optimization,
avoiding the need to transmit images to the client
just because the cursor has moved.

Change-Id: Icdf4ff948571d39d82c86d251bca46390889d02f
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-06-28 10:18:27 +00:00
Lars Knoll
ef4db5a347 cleanups in the VNC plugin
Change-Id: Iac930d3c7036b285ff5003691bfecf6071795d54
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-06-28 10:18:23 +00:00
Lars Knoll
a1dbf346e6 Support showing the mouse cursor in the VNC plugin
Change-Id: I380e36b3a814db7ba779d998260d1a75d1d20e0c
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-06-28 10:18:19 +00:00
Lars Knoll
53f7e565db Implement support for key events in the VNC plugin
Make sure we receive key events from the VNC client and
forward them to the app through the QPA interface.

Change-Id: I8d44d614670ec753e35ff36fa3ef2d74b07f4bbc
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-06-28 10:18:15 +00:00
Lars Knoll
1955da90a0 Properly forward mouse events to the VNC client
Change-Id: I3cee27bab4cd81079adedf3968ac4dfebf43aa11
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-06-28 10:18:12 +00:00
Lars Knoll
6d70e543aa Initial work on a VNC QPA plugin
The basics work and the VNC client is showing pixels

Change-Id: Ie31efce2f31dd5f57af209dcc9c8f9aace730afd
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-06-28 10:18:08 +00:00
Friedemann Kleint
05aedf4e1d Windows QPA: Restrict expose workaround to non-Aero themes.
The workaround may cause flicker, so only use it when necessary.

Task-number: QTBUG-7865
Change-Id: I813aa0669727303bc947a85a8893a90f29d3ff24
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2016-06-28 08:31:19 +00:00
Laszlo Agocs
2a7cee47e5 Avoid artifacts when hiding or closing a QOpenGLWidget or QQuickWidget child
windows and xcb enables SwitchableWidgetComposition meaning that widget
backing stores will fall back to the normal flush path when no render-to-texture
widgets are visible anymore in the window. This switch however can lead to
artifacts with the image of the rtt widget remaining visible until the next
full bacinkgstore sync. The safe and simple way around this is to do the
switch only in the next flush, keeping the flush where the switch is
discovered on the OpenGL-based composition path still.

Task-number: QTBUG-54241
Change-Id: I1d3f10999f69c58efa791dd724891add56949dee
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2016-06-28 06:48:39 +00:00
Ralf Nolden
fe9ca6ede8 NetBSD: enable detection of posix_fallocate()
posix_fallocate() is declared in unistd.h on NetBSD. Add the include
for proper detection on NetBSD 7.0 and up.

See http://netbsd.gw.com/cgi-bin/man-cgi?posix_fallocate++NetBSD-current

As that is violating the POSIX standards, a PR was opened at NetBSD
under http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=51287
for further tracking of the issue.

Change-Id: I40ec320677eef37bbc39f58e0bbac34f8cf7b8da
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-06-28 05:49:24 +00:00
Ralf Nolden
b3b2f502e9 NetBSD: use paccept() where accept4() is used
Where accept4() is used, NetBSD offers paccept() as a replacement function.
Modify check for using accept4() and use paccept() on NetBSD.

See http://netbsd.gw.com/cgi-bin/man-cgi?paccept++NetBSD-current
and http://reviews.llvm.org/D12485

Change-Id: I9b3ecba5f3afad6c357d3f7b8f89589bf313e273
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-06-28 05:49:18 +00:00
Ralf Nolden
1a96295755 Libpng config.tests: use pkg-config when available
Add pkg-config to the libpng usages as not all systems have the
symlink libpng.so -> libpng<version>.so (affected: NetBSD) that changes
with the version of the lib. If no-pkg-config is used, use -lpng as
before. Tested with FreeBSD 10.3, NetBSD 7.0.1 using png 1.6.21

Change-Id: I5c87f380c84da3d5c56c94da53adb900791c8caa
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-06-27 18:45:29 +00:00
Allan Sandfeld Jensen
29ac40d6cd Correct framework config options to remain as they used to
Commit 90eee08b3e changed how framework
config was defined, subtlely breaking Qt framework builds.

Task-number: QTBUG-54361
Change-Id: Ie7670d900d9eb4c2adb52ca1cd0f60f22acf8b81
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-06-27 14:39:22 +00:00
J-P Nurmi
2f7e940e83 QGtk3FileDialogHelper: respect QFileDialogOptions::ReadOnly
Change-Id: I982dd10632760fe91b89ade30d79f97f27d17dcd
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2016-06-27 09:10:03 +00:00
Olivier Goffart
0c44f26fae QDockWidget: fix floating group tab window not having the right title
Before, we were relying on the ZOrderChange event to update the
windows title or other flags of a floating tab window when tabs
are changed. But this did not catch all the cases. For example,
the first tab switch, or when tabs are dragged out.

Task-number: QTBUG-53754
Task-number: QTBUG-52107
Change-Id: I1523ce85ceaa95f044bd81f8ccbac0a86978fb33
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2016-06-25 11:46:51 +00:00
Thiago Macieira
59c3670b63 Make sure all private headers in Qt Core include qglobal_p.h
The rule was:
 - if the header included qglobal.h, turn that into qglobal_p.h
 - otherwise, insert the #include after the "We mean it" warning

qglobal_p.h currently only includes qglobal.h.

Change-Id: Ib056b47dde3341ef9a52ffff13ef677e471674b7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-06-25 08:01:04 +00:00