Commit graph

373 commits

Author SHA1 Message Date
Daniel Gultsch 6a458b853c Merge pull request #1513 from fiaxh/pgp_background_decryption
PGP messages background decryption
2015-10-30 10:18:27 +01:00
Daniel Gultsch c7ff196f58 push CN into nick pep node when uploading certificate. subscribe to nick node 2015-10-29 13:41:08 +01:00
fiaxh 29a849cb92 Decrypt PGP messages in background 2015-10-28 19:57:11 +00:00
Sam Whited e747ecef4d Don't synchronize on non-final field 2015-10-26 20:13:48 -05:00
Daniel Gultsch 3c45f00443 fixed read conversations showing up as notifications after a restart 2015-10-21 17:41:44 +02:00
Daniel Gultsch cfeb67d71d introduced code to verify omemo device keys with x509 certificates.
cleaned up TrustKeysActivity to automatically close if there is nothing to do
2015-10-16 23:48:42 +02:00
Daniel Gultsch 5f9476448f make unread status and notifications presistent across restarts 2015-10-14 21:18:34 +02:00
Daniel Gultsch b23cb5a9e4 initial UI work to allow setting up accounts from certifcates 2015-10-09 13:37:08 +02:00
saqura 403db3b080 Show whether MAM is supported in MUCs
The conference details in "Advanced Mode" now indicate whether MAM is
supported by the conference server.
2015-10-06 16:23:05 +02:00
Daniel Gultsch 5fb77a9739 fixed NPE when executing rename callback in muc 2015-09-28 15:36:55 +02:00
Daniel Gultsch b9002d7fd5 added missing type='submit' to mam queries
fixed some nasty inheritance problems along the way
fixes #1411
2015-09-15 22:52:39 +02:00
Daniel Gultsch 96575d6290 added possibiltiy to set conferences as moderated (only visible in advanced mode) 2015-09-13 17:13:46 +02:00
Daniel Gultsch 4220fa948b added mp4 to well known extensions. fixes #1403 2015-09-12 10:42:56 +02:00
Daniel Gultsch 7eb228d1a5 Issues with URLs with multiple dots in file. fixes #1373 2015-09-04 19:58:53 +02:00
Daniel Gultsch fc594e249a added special error state for dns timeout 2015-09-01 22:37:52 +02:00
Daniel Gultsch b0c19d6bac fixed bug that prevented newly opened conversations to load the entire history via mam. fixes #1328 2015-08-30 11:24:37 +02:00
Daniel Gultsch ea2ce78d6e be more restrictive about marking messages as sent_received in muc parser 2015-08-26 12:11:12 +02:00
Daniel Gultsch 8043833156 bugfix: next encryption is now being properly detected 2015-08-23 19:40:45 +02:00
Andreas Straub 6cd9383e53 Let UNTRUSTED/UNDECIDED keys become INACTIVE 2015-08-01 18:30:11 +02:00
Daniel Gultsch 60cd307f73 enable axolotl encryption for jingle supported file transfers 2015-08-01 01:19:16 +02:00
Daniel Gultsch 658919f239 improved 'next encryption' selection 2015-07-31 00:52:46 +02:00
Andreas Straub 74ab36fda2 Fix session logic: enforce same type of encryption 2015-07-30 19:18:09 +02:00
Daniel Gultsch 58d80f58be use gcm for file encryption over http 2015-07-29 23:45:37 +02:00
Andreas Straub e6df4d81d2 Tag carbon messages in parser, adapt session logic
Messages sent from another device of the own account are now explicitly
tagged as carboned message. The session detection logic now uses this
tag to find "session borders".
2015-07-29 16:41:58 +02:00
Andreas Straub efcefc2e63 Refactor out inner classes, cache trust store
Moves SQLiteAxolotlStore and XmppAxolotlSession into proper classes.

IdentityKeys trust statuses are now cached in an LruCache to prevent
hammering the database when rendering the UI.
2015-07-29 02:59:26 +02:00
Daniel Gultsch 8f14d2bfbd removed recursion in message.getMerged*() 2015-07-28 23:00:30 +02:00
Daniel Gultsch cd204d5931 show warning when trying to highlight users that have left the conference 2015-07-22 15:57:17 +02:00
Daniel Gultsch f7634a85be treat private, non-anonymous mucs like 1:1 chats notification wise 2015-07-22 15:31:00 +02:00
Andreas Straub 012f036840 Optimize imports 2015-07-20 14:26:29 +02:00
Andreas Straub e8ec2ee628 Don't merge messages with different trust statuses 2015-07-19 22:23:28 +02:00
Andreas Straub 9e8d9a6401 Show trust status of messages' originating session
Shade lock icon red if message was received in a session that has not
been marked trusted by the user or fingerprint is unknown
2015-07-19 22:23:27 +02:00
Andreas Straub d173913eba Overhauled Message tagging
Messages are now tagged with the IdentityKey fingerprint of the
originating session. IdentityKeys have one of three trust states:
undecided (default), trusted, and untrusted/not yet trusted.
2015-07-19 22:17:58 +02:00
Andreas Straub 491f623708 Fix displaying Contact IdentityKeys
Migrate ContactDetailsActivity to use new SQL IdentityKeys storage,
remove dead code from Contact class.
2015-07-19 21:32:27 +02:00
Andreas Straub 1b0596d574 Tag messages with originating session
This can be used later in order to display trust status of messages, as
well as for potential resending of messages in case of preKey conflicts.
2015-07-19 21:32:26 +02:00
Andreas Straub 3815d4efa3 Fetch bundles on-demand, encrypt in background
Bundles are now fetched on demand when a session needs to be
established. This should lessen the chance of changes to the bundles
occuring before they're used, as well as lessen the load of fetching
bundles.

Also, the message encryption is now done in a background thread, as this
can be somewhat costly if many sessions are present. This is probably
not going to be an issue in real use, but it's good practice anyway.
2015-07-19 21:32:26 +02:00
Andreas Straub 299bbdf27f Reformat code to use tabs
This really sucks to do it like this. Sorry. :(
2015-07-19 21:32:26 +02:00
Andreas Straub f73aa1a200 Reworked axolotl protocol layer
Numerous fixes
2015-07-19 21:32:25 +02:00
Andreas Straub b8048a5538 CryptoNext persistance layer mockup
Initial sketch of the peripheral storage infrastructure for the new
axolotl-based encryption scheme.
2015-07-19 21:32:21 +02:00
Daniel Gultsch ce527c8b76 account for downloaded http files in dup checker 2015-07-18 00:01:34 +02:00
Daniel Gultsch ce79f4bbe3 renamed downloadable to transferable 2015-07-10 15:11:03 +02:00
Daniel Gultsch bef731a3c8 refactored sendMessage and merged with resendMessage 2015-07-05 11:59:38 +02:00
Daniel Gultsch d30fb6f0a1 avoid very rare npe 2015-07-03 21:32:46 +02:00
Daniel Gultsch e4d1bd415d also offer http download for some 'well known extensions' 2015-07-02 23:19:50 +02:00
Daniel Gultsch f5ba9d4223 refactored message context menu 2015-07-02 23:13:00 +02:00
Daniel Gultsch c20a088ea8 changed mime type handling 2015-07-01 16:01:18 +02:00
Daniel Gultsch aca9d8036c made httpconnection (download) ready all kind of files 2015-06-30 17:15:02 +02:00
Daniel Gultsch d7de311379 refactored bodyContainsDownloadable to be more flexible 2015-06-30 13:52:53 +02:00
Daniel Gultsch 7e11570f2c show attach button in conferences when http upload is available 2015-06-29 15:21:41 +02:00
Daniel Gultsch 9eb9a52205 initial http upload support
be careful: little error handling and no encryption
2015-06-29 15:21:41 +02:00
Daniel Gultsch 58201b4408 changed paragraph divider 2015-06-10 03:30:17 +02:00
Daniel Gultsch 53e8964dc1 reworked handeling of system contacts 2015-06-03 14:05:54 +02:00
Daniel Gultsch fe1cff016f avoid unnessary muc mam queries when message count is 0 after subject 2015-06-02 13:33:20 +02:00
Daniel Gultsch dc91ff8f29 renamed OtrEngine to OtrService 2015-05-26 04:36:32 +02:00
Daniel Gultsch b731995a51 added mam stuff to new message parser 2015-05-20 03:48:14 +02:00
Daniel Gultsch e32f380dae provide helper function for getting the content of a child directly 2015-05-20 03:48:14 +02:00
Daniel Gultsch fce30f22c9 made white space check in bodyContainsDownloadable less aggresive 2015-05-16 12:49:04 +02:00
Daniel Gultsch 51aeeb766c use zero width white space as message seperator 2015-05-13 11:56:59 +02:00
Daniel Gultsch 93e444ac3a don't set unknown error in muc 2015-05-12 03:57:05 +02:00
Daniel Gultsch b6f85ba0dd avoid using paragraph style breaks by accident 2015-05-11 14:18:30 +02:00
Daniel Gultsch 53e43daa0d add a little bit of space between merged messages. 2015-05-11 09:08:56 +02:00
Daniel Gultsch 22b12091a1 rewrote parts of message adapter to avoid using NULL views 2015-05-11 07:57:52 +02:00
Daniel Gultsch 239e86a98a optimized heart render code a bit 2015-05-10 12:04:11 +02:00
Daniel Gultsch 33d1621e3b added white heart to new rendering as well 2015-05-10 11:56:23 +02:00
Daniel Gultsch 1e28f60038 changed conversation red to material red 2015-05-10 03:14:13 +02:00
Daniel Gultsch 4c486f5e58 paint single unicode hearts as red and slightly larger 2015-05-10 03:12:44 +02:00
Daniel Gultsch 5136bf9832 r/o support for vcard avatars. pep avatars will be prefered 2015-05-05 06:17:34 +02:00
iNPUTmice 62faa163f0 fixed typos 2015-04-13 18:18:25 +02:00
lookshe 6da77bdf3b Bugfix for issue #1121
check with lowercase to also match JPEG, JPeg ...

changed image url in comment
2015-04-13 16:21:00 +02:00
iNPUTmice 332fe0fd19 don't resume old session when changing resource 2015-04-09 12:46:54 +02:00
iNPUTmice 99b2ef7e9d respond to unreadable OTR messages with error message. fixed #1021 2015-03-21 16:07:17 +01:00
Mateusz "maxmati" Nowoty?ski 74e5317095 Do not Strigprep JIDs from database 2015-03-11 15:59:31 +01:00
iNPUTmice 87a048fe6f display geo uris as location. show 'send loction' in share menu if request location intent can be resolved 2015-03-07 14:15:38 +01:00
Daniel Gultsch ac577fe4fd added methods to count number of unread messages 2015-03-02 11:53:15 +01:00
iNPUTmice d318af098d merge messages with related status (unsend, send, send_received) 2015-03-01 12:05:54 +01:00
iNPUTmice f3be0d99cc don't add users with null nicks to muc user list 2015-02-27 17:04:13 +01:00
iNPUTmice fa45ceabc9 initilize keys with jsonobject value on parse error 2015-02-26 16:55:49 +01:00
iNPUTmice 3db5a48529 clear muc tiles cache only when necessary 2015-02-21 22:19:10 +01:00
iNPUTmice 7ee5e95959 added typing notifications through XEP-0085. fixed #210 2015-02-21 11:06:52 +01:00
iNPUTmice 45de788773 use time instead of uptime for unmute 2015-02-12 18:52:10 +01:00
Daniel Gultsch 00b2e30938 trim message bodys on display 2015-02-07 12:29:17 +01:00
Michael 29331e49b9 fix mergable() for /me command. 2015-01-25 16:58:06 +01:00
iNPUTmice 7839438f51 changed message duplicate finder 2015-01-20 22:54:58 +01:00
iNPUTmice 1e607d7b1b don't trim bodies 2015-01-19 12:15:27 +01:00
Sam Whited edd58f19b4 Add download button on notification if applicable 2015-01-16 01:10:01 -05:00
Daniel Gultsch 50c8065015 Merge pull request #866 from SamWhited/xep0245
Add XEP-0245 (/me command) support
2015-01-12 01:22:40 +01:00
Sam Whited 3c5224251c Add XEP-0245 (/me command) support 2015-01-11 18:32:00 -05:00
Daniel Gultsch b07b7519a6 keep proper image file extension 2015-01-11 15:19:36 +01:00
Daniel Gultsch 18eb187949 make room persistant when changing subject or other muc options 2015-01-10 23:10:32 +01:00
Daniel Gultsch a9159568b9 allow for very basic muc configuration 2015-01-08 21:29:26 +01:00
Daniel Gultsch 8d655f445a more muc options
* show invite button only with admin privileges or on public conferences
* Offer to ban user in public conferences.
Thanks to @betheg for the awesome ground work for this
2015-01-07 18:34:24 +01:00
Daniel Gultsch ef525fb10e basic affiliation changes in muc 2015-01-07 15:03:29 +01:00
Daniel Gultsch bdb335e6b0 Show affiliation instead of role in MucDetails and offer 'advanced mode' to display role 2015-01-05 15:06:39 +01:00
Daniel Gultsch 2723c9ccb9 made checks for valid image extensions case insensitive 2015-01-04 23:04:23 +01:00
Daniel Gultsch f338d89753 no longer use ConcurrentHashMap in favor of synchronize on a final HashMap 2015-01-04 00:14:40 +01:00
Daniel Gultsch be7de054be record voice and attachment refactor 2015-01-03 16:06:59 +01:00
Daniel Gultsch 8bda54d48c code cleanup 2015-01-03 00:47:22 +01:00
Daniel Gultsch 3df23a4f75 allow cancellation of waiting files 2015-01-02 14:27:49 +01:00
Daniel Gultsch 3833e6dfef improved OTR verification part one 2015-01-02 01:21:14 +01:00
Sam Whited e4d9dca2fe Add ability to change password on server
Fixes #260
2014-12-25 21:38:55 +01:00
Daniel Gultsch ef1f72ea27 catch another exception in fingerprint generation 2014-12-25 19:53:35 +01:00
Sam Whited af7a64491f Add support for XEP-0191 (Blocking command)
Fixes #791

Squash of commits:
534f25d7dae3ce6852243e28fdd0a69ac01e9463
808fdf5147f27a912a60bee39aa4bf1ddd4f43b4
1eaf8a8330710ad35ba7c368e04f909af623ae4c
31585242c2359efdcd0eeddb9745077f54dbc9eb
2e69bd0bd0286ed1e98a42f4c3421ba4d8cf524b
e904fb5015bf3a1904ab941a1957edf3b1e7abd2
eebbadf3b3816bbf8fcccb763e419fed252d266f
7c5b87724ce494e5a6e8026557ed50a8fd9f23e8
b0eaaf446937794fe19cbdb4f8309c3ff83d4e42
8c652f9e8bb3512958d9ad8c6f1326505f2d98c8
ad0ea1ad948ff6f8fde7b0b10f5163dc8852032f
f5d49897e0dba691ef53a0eddb9ed34d129ad442
a08fa64c505bd895b7c626cfad182380373be20b
de67079113e08394a276048c31f6b21baa300829
9069f342173ba30c2b20c67529c7ff497a6a257d
0169fa79d161ee898c4b6762e207087682a952d8
8585a5bd75a5d56927fed8317729bd15fffe4dcc
0053528a078369e0b65dcf71bda251072a1299c7
e901a9c3554bd7cca193e92919b463991eadfea7
c5c78257434813c69ab9b7558bcc8f7cbe858433
e905af348d46d77bc46b5f7211527684acc02fab
13a0f9a10c7892b0f90f5fabd2f2615701b0fd66
2cfba1e24b0139839e4453b92be7e20634d150cf
58e074fb5bb44b05a8104250fccd7c024c808c1a
0d6cf98fc8eab212d798ac79b336f9b70a14f06d
e23620f56b85bcab9f3b5d9ce1c01524cd9674dc
d72cd2fcc8d54176c3ff53411a69b9bb4642eff3
195143dff8836623a37094a6b8fa6aa01ef31580
5f5f3caf3a1e480a99d27ee5c34ba516419c52e4
1dee3d5861c9f9c710da4cbda3688d94c622ca93
23949b8aa32c78b27bab49bb3c4f3ff588925ce1
9bf97f8ae522796e0dacb7f6fe7a7f90f86a93a1
2014-12-22 08:19:00 -05:00
iNPUTmice 1517641713 get rid of special self presence object and incorporate that into roster 2014-12-20 17:23:03 +01:00
iNPUTmice ce4848f742 more null checks for otr fingerprints 2014-12-20 16:01:28 +01:00
iNPUTmice 40335785aa don't include empty fingerprints in list of otrfingerprints 2014-12-20 15:21:03 +01:00
iNPUTmice f00e168752 clean up conversation history after swtiching to a different conversation 2014-12-17 21:05:47 +01:00
iNPUTmice e084266595 migrated more jid parsing to use getAttributeAsJid. added error logging 2014-12-15 17:29:17 +01:00
iNPUTmice de06cb38d1 refactored the way certain messages are being found within a conversation 2014-12-14 18:10:46 +01:00
iNPUTmice 899802646c reverse through mam history when loading larger chuncks 2014-12-13 15:32:11 +01:00
iNPUTmice b523518e4b various mam improvments 2014-12-13 12:25:52 +01:00
iNPUTmice 1dcdc79a71 changed lastMessageReceived into lastMessageTransmitted to account for sent messages as well. (will trigger on sm ack) 2014-12-10 14:08:06 +01:00
iNPUTmice ccdb0fd971 save server id from mam messages. check for dups before adding mam 2014-12-10 14:08:06 +01:00
iNPUTmice 0ab530932a added max history age (default 1w). automatically sort newly added mam messages 2014-12-10 14:08:06 +01:00
iNPUTmice 4a94389f05 very basic mam support 2014-12-10 14:08:06 +01:00
iNPUTmice 34558cc277 store last message received date in conversation 2014-12-10 14:08:06 +01:00
iNPUTmice e623e28487 fixed #651 2014-12-03 17:05:37 +01:00
iNPUTmice 8f62d95e1f further npe checks 2014-12-03 10:45:47 +01:00
iNPUTmice c273637156 made muc parser more compatible with legacy mucs?! (whatever that is exactly) 2014-12-03 01:46:26 +01:00
iNPUTmice 4a80914603 fixed another npe in hasBookmark 2014-12-03 00:18:07 +01:00
iNPUTmice 39a3f372dd clean up getProposedNick 2014-12-03 00:06:57 +01:00
iNPUTmice 96bbd16ca5 worked around rare npe 2014-12-01 10:58:06 +01:00
Michael bdfdc5fb10 MUC: do not add yourself to the muc user list. 2014-11-23 15:19:07 +01:00
Michael dc0dba3faf remove unused imports. 2014-11-21 19:17:27 +01:00
Michael 44faec7051 STATUS_CODE_SELF_PRESENCE is not set in all case. 2014-11-21 16:14:56 +01:00
iNPUTmice de0b36fc78 verify contacts key only on initiating side of smp 2014-11-21 13:42:25 +01:00
Michael 3e3767cb06 change status codes string 'number' to a better readable constant. 2014-11-20 21:37:56 +01:00
iNPUTmice 0ad6d0616f brought ad hoc conferences back. fixed #688 fixed #367 2014-11-20 18:20:42 +01:00
iNPUTmice e9948f6b84 sent read marker to full jid 2014-11-19 17:40:42 +01:00
iNPUTmice 1122e084a0 simplified message merge condition 2014-11-18 14:49:49 +01:00
iNPUTmice 018a0c7978 better usage of synchronized in some places 2014-11-18 03:10:59 +01:00
iNPUTmice f41c3eee04 context menu for muc participants + refactor trueCounterpart to use Jid class 2014-11-17 20:02:46 +01:00
Sam Whited b6d8977237 Use `Locale.US' for string comparisons in search 2014-11-17 12:19:45 -05:00
iNPUTmice 8865cc406c trim search before searching 2014-11-17 17:31:26 +01:00
iNPUTmice 252c7e68d6 split search keywords by whitespaces and imply AND operatior 2014-11-17 17:24:33 +01:00
iNPUTmice 2036c58cd7 made tags searchable 2014-11-16 23:58:30 +01:00
iNPUTmice cf00f3fade happy hanukkah 2014-11-16 17:21:21 +01:00
iNPUTmice 88c3537b68 parse otr-fingerprint in qr codes and nfc. include otr fingerprint in shareable uri where ever possible 2014-11-16 00:20:20 +01:00
Sam Whited d2388a5a7e Remove extra status wrapper method 2014-11-15 11:31:15 -05:00
Sam Whited 251f4d6d7f Add incompatible server status 2014-11-15 11:29:58 -05:00
Sam Whited c09d450db8 Add security error status 2014-11-15 11:21:47 -05:00
Sam Whited d94b07c916 Make account status an enum 2014-11-15 11:12:41 -05:00
Sam Whited 847877f9d2 Add auth method pinning 2014-11-15 10:01:08 -05:00
iNPUTmice 35bf13f5ef Merge branch 'feature/file_transfer' into development
Conflicts:
	src/main/res/values/strings.xml
2014-11-15 15:52:15 +01:00
iNPUTmice 5b9c690c47 Merge branch 'feature/otr_verification' into development 2014-11-15 15:50:35 +01:00
iNPUTmice 47d44448f3 fixed description in notifications and conversation overview 2014-11-15 15:34:12 +01:00
iNPUTmice cc4f3702a8 made file transfers cancelable 2014-11-15 15:34:12 +01:00
iNPUTmice e7a70a46e0 some mime and pgp fixes for file transfer 2014-11-15 15:34:12 +01:00
iNPUTmice c7acfe85c3 progress for http images as well. fixed open button for sent files 2014-11-15 15:34:12 +01:00
iNPUTmice 7a90ca429b basic arbitrary file transfer 2014-11-15 15:34:11 +01:00
iNPUTmice 3118340ade fixed possible npe when loading null counterpart into message 2014-11-14 19:49:44 +01:00
iNPUTmice 2db569b20f made presences synchronized 2014-11-13 14:44:19 +01:00
iNPUTmice e6a4fa031b more npe checks in muc packet parser 2014-11-13 14:27:10 +01:00
iNPUTmice e33fc26cbe added snackbar to indicate smp. more error handling in verify activity 2014-11-11 17:40:51 +01:00
iNPUTmice 6cd2ff0d88 initial smp support 2014-11-11 17:40:51 +01:00
iNPUTmice 89ee999e1b more refactoring for presence selection. removed getTo, getFrom and getJid from Element 2014-11-10 01:24:35 +01:00
Sam Whited 385bea0fe3 s/getResourcepart().isEmpty()/isBareJid()/ 2014-11-09 13:13:19 -05:00
iNPUTmice 69ef17efc0 migrated some otr stuff to new jid classes 2014-11-09 17:46:00 +01:00
Daniel Gultsch cb1a36da79 Merge pull request #642 from SamWhited/accountgetjid
Rework `Account.getJid()' to return full JIDs
2014-11-09 17:06:09 +01:00
Sam Whited 180a0e4408 Rework `Account.getJid()' to return full JIDs
Remove `Account.getFullJid()'
2014-11-09 10:57:22 -05:00
iNPUTmice ad6fef063b fixed null pointer in message merger 2014-11-09 16:47:31 +01:00
iNPUTmice 377bd49ee8 refactored code to always contain full jid for counterpart 2014-11-09 16:21:13 +01:00
iNPUTmice 2b99b694eb fixed full jid for account 2014-11-09 16:20:36 +01:00
Sam Whited 1a3327f2b1 Create avatar's for JID's w/o localparts 2014-11-09 07:00:40 -05:00
Sam Whited 778fb9de6c Fix letter avatar selection in MUC 2014-11-09 07:00:40 -05:00
Sam Whited 9db624ec7b It builds again! 2014-11-09 07:00:40 -05:00
Sam Whited f108fc5a5c Update more files to use JID objects 2014-11-09 07:00:40 -05:00
Sam Whited bf9207456e Update another chunk of stuff to use JID objects 2014-11-09 07:00:40 -05:00
Sam Whited f15900426d Update more files to use JID objects 2014-11-09 07:00:40 -05:00
Sam Whited 9053f4aca0 Move a chunk of classes over to using JID objects 2014-11-09 07:00:40 -05:00
iNPUTmice 4d7bee2e38 fixed #634 2014-11-09 10:51:54 +01:00
Sam Whited 96563aca52 Add last seen info to the database
Fixes #612
2014-11-04 16:41:35 -05:00
iNPUTmice 1ea2e7dc3b fixed arrayoutofbounds + spelling 2014-11-01 14:33:34 +01:00
Sam Whited 46f147a82c Merge branch 'gradle' into development
Conflicts:
	.gitignore
	CHANGELOG.md
	README.md
	libs/MemorizingTrustManager
	libs/minidns
	libs/openpgp-api-lib
2014-10-30 15:33:13 -04:00
Sam Whited 281ce3105f Make conversations the root project 2014-10-22 15:47:11 -04:00