Commit graph

7336 commits

Author SHA1 Message Date
rinpatch adbd0032fa Merge branch 'features/validators-video' into 'develop'
Pipeline Ingestion: Video and Article

See merge request pleroma/pleroma!2908
2020-09-16 13:36:27 +00:00
lain 6b088ed76a Merge branch 'issue/2089' into 'develop'
[#2089] fix notifications

See merge request pleroma/pleroma!3000
2020-09-16 12:22:48 +00:00
Maksim Pechnikov 599f8bb152 RepoStreamer.chunk_stream -> Repo.chunk_stream 2020-09-16 09:47:18 +03:00
Ivan Tashkinov 2f155fb89f Merge remote-tracking branch 'remotes/origin/develop' into media-preview-proxy-nostream 2020-09-15 20:29:39 +03:00
eugenijm 3ab59a6f3c Mastodon API: fix the public timeline returning an error when the reply_visibility parameter is set to self for an unauthenticated user 2020-09-15 13:00:56 +03:00
Haelwenn 5c4ff5c73c Merge branch 'fix/mrf-simple-welcome-chats' into 'develop'
Ensure we only apply media_nsfw simple policy on parsable objects

Closes #2133

See merge request pleroma/pleroma!2992
2020-09-15 08:25:10 +00:00
Mark Felder 709723182d Ensure SimplePolicy's tags in string representation don't trip up the object validator 2020-09-14 17:06:42 -05:00
stwf 38b2db297b search indexing metadata respects discoverable flag 2020-09-14 13:18:11 -04:00
rinpatch bb407edce4 RichMedia: fix a compilation error due to nonexistent variable
No idea why this passed Gitlab CI
2020-09-14 15:46:00 +03:00
rinpatch f70335002d RichMedia: Do a HEAD request to check content type/length
This shouldn't be too expensive, since the connections are pooled,
but it should save us some bandwidth since we won't fetch non-html
files and files that are too large for us to process (especially
since you can't cancel a request without closing the connection
with HTTP1).
2020-09-14 14:45:58 +03:00
rinpatch f66a15c4a5 RichMedia parser: do not set a cache TTL for unchanging errors 2020-09-14 14:44:25 +03:00
Maksim Pechnikov 3e53ab4e98 added notification constraints 2020-09-14 14:08:12 +03:00
Maksim 489a107cf4 Apply 1 suggestion(s) to 1 file(s) 2020-09-13 11:54:15 +00:00
Ivan Tashkinov cd234a5321 [#2497] Media preview proxy: preview bypass for small images
(basing on Content-Length and Content-Type).
2020-09-12 11:20:41 +03:00
Ivan Tashkinov 32831f371f [#2497] Media preview proxy: redirecting to media proxy url in case of preview error or unsupported content type. 2020-09-12 10:33:42 +03:00
Mark Felder c0b36621f1 Ensure we only apply NSFW Simple policy on parsable objects 2020-09-11 23:22:14 -05:00
Alex Gleason 9733c9d065
Merge remote-tracking branch 'upstream/develop' into chat-moderation 2020-09-11 14:13:38 -05:00
Alex Gleason e229536e5c
Chat Moderation: use explicit sender and recipient fields 2020-09-11 14:11:00 -05:00
Alex Gleason 02d70228b5
AdminAPI: fix delete chat message 2020-09-11 14:10:35 -05:00
Alex Gleason 9dd0b23da4
AdminAPI: show chat 2020-09-11 14:10:28 -05:00
Alex Gleason f13b52a703
AdminAPI: list messages in a chat 2020-09-11 14:10:19 -05:00
Alex Gleason c41430b23e
Refactor with Chat.for_user_query/1 2020-09-11 14:10:13 -05:00
Alex Gleason fb0de07343
AdminAPI: list chats for a user 2020-09-11 14:10:05 -05:00
Alex Gleason b40a627ab0
AdminAPI: delete a chat message 2020-09-11 14:09:58 -05:00
Alex Gleason f88dc1937e
MastodonAPI.StatusView.get_user/1 --> CommonAPI.get_user/1 2020-09-11 14:09:50 -05:00
Haelwenn (lanodan) Monnier f1f44069ae
Fetcher: Correctly return MRF reject reason 2020-09-11 20:00:41 +02:00
Ivan Tashkinov 0bda85857e Merge remote-tracking branch 'remotes/origin/develop' into media-preview-proxy
# Conflicts:
#	lib/pleroma/instances/instance.ex
2020-09-11 17:19:58 +03:00
rinpatch 89a7efab69 ConnectionPool: Log possible HTTP1 blocks 2020-09-11 15:37:39 +03:00
Haelwenn 36c9197ac3 Apply 1 suggestion(s) to 1 file(s) 2020-09-11 10:46:16 +00:00
Haelwenn (lanodan) Monnier dbc013f24c
instance: Handle not getting a favicon 2020-09-11 11:37:46 +02:00
Haelwenn (lanodan) Monnier f18178cb09
AttachmentValidator: directly embed url schema and pass it fix_media_type 2020-09-11 01:40:20 +02:00
Haelwenn (lanodan) Monnier 1b3d5956b1
Pipeline Ingestion: Article 2020-09-11 01:40:20 +02:00
Haelwenn (lanodan) Monnier 2132b24a9d
object_validators: likes & announcements as [ObjectID] 2020-09-11 01:39:39 +02:00
Haelwenn (lanodan) Monnier 846b59ccb0
Pipeline Ingestion: Video 2020-09-11 01:39:39 +02:00
Haelwenn (lanodan) Monnier b73e9ef686
transmogrifier: Call strip_internal_fields on pipeline ingestion 2020-09-11 01:39:38 +02:00
Haelwenn (lanodan) Monnier da876d09e8
federator: normalize only actor, catch actor error 2020-09-11 00:56:21 +02:00
Ivan Tashkinov 4d18a50f3c [#2497] Formatting fix. 2020-09-10 21:54:26 +03:00
Alexander Strizhakov 15aece7238 remove validate_expires_at from enqueue method 2020-09-10 21:52:31 +03:00
Alexander Strizhakov 2c2094d4b2 configurable lifetime for ephemeral activities 2020-09-10 21:51:59 +03:00
Alexander Strizhakov f24828a3e8 oban warning 2020-09-10 21:51:30 +03:00
Alexander Strizhakov eb5ff715f7 pin/unpin for activities with expires_at option 2020-09-10 21:50:41 +03:00
Alexander Strizhakov b3485a6dbf little clean up 2020-09-10 21:50:41 +03:00
Alexander Strizhakov 357d971a10 expiration for new pipeline 2020-09-10 21:50:41 +03:00
Alexander Strizhakov 93e1c8df9d reject activity creation
if passed expires_at option and expiring activities are not configured
2020-09-10 21:50:41 +03:00
Alexander Strizhakov 4981b5a1a3 copyright header 2020-09-10 21:50:41 +03:00
Alexander Strizhakov 629a8de9cb deprecation warning
changed namespace for activity expiration configuration
2020-09-10 21:50:41 +03:00
Alexander Strizhakov de4c935071 don't expire pinned posts 2020-09-10 21:50:41 +03:00
Alexander Strizhakov 9bf1065a06 schedule activity expiration in Oban 2020-09-10 21:50:40 +03:00
rinpatch 0254696e30 Merge branch 'feature/1790-oban-overuse-clear-oauth-token' into 'develop'
Feature/1790 removing expired tokens through Oban scheduled jobs

See merge request pleroma/pleroma!2957
2020-09-10 18:45:04 +00:00
rinpatch 541a3eede2 Merge branch 'chores/remove-ostatus-fixtures' into 'develop'
Remove OStatus in testsuite

See merge request pleroma/pleroma!2968
2020-09-10 18:41:00 +00:00
rinpatch 53cf7fef6e Merge branch 'fix/streaming-termination-errors' into 'develop'
Fix two pseudo-errors in websocket handler

Closes #2131

See merge request pleroma/pleroma!2982
2020-09-10 18:40:54 +00:00
rinpatch 45c299e5b5 Merge branch '2130-mfa-users-oauth-login-fix' into 'develop'
[#2130] Fixed OAuth OOB authentication for users with enabled MFA

Closes #2130

See merge request pleroma/pleroma!2979
2020-09-10 18:38:48 +00:00
Ivan Tashkinov dc4e06e199 [#2497] Removed support for thumbnail_max_* params for media preview proxy
(per https://git.pleroma.social/pleroma/pleroma/-/merge_requests/2497#note_70771)
2020-09-10 21:28:07 +03:00
rinpatch 01fa68fe45 Websocket handler: fix never matching code on failed auth
`:cowboy_req.reply` does not return tuples since 2.0, see
https://ninenines.eu/docs/en/cowboy/2.4/manual/cowboy_req.reply/
2020-09-10 21:26:52 +03:00
rinpatch e16e8f9816 Websocket handler: do not raise if handler is terminated before switching protocols
Closes #2131
2020-09-10 21:14:23 +03:00
rinpatch cb06e98da2 websocket handler: Do not log client ping frames as errors 2020-09-10 21:14:23 +03:00
Alexander Strizhakov e8bfb50fa3
pass options without adapter key 2020-09-10 20:09:44 +03:00
Alexander Strizhakov 8af1fd3223
oban warning 2020-09-10 16:01:20 +03:00
Alexander Strizhakov 7dd986a563
expire mfa tokens through Oban 2020-09-10 16:01:19 +03:00
Alexander Strizhakov 3ce658b930
schedule expired oauth tokens deletion with Oban 2020-09-10 16:01:19 +03:00
Maksim Pechnikov 9853c90abb added paginate links to headers for /chats/:id/messages 2020-09-10 12:39:29 +03:00
Ivan Tashkinov 148bc24435 [#2497] Removed Hackney-specific code
(no longer needed due to adapter options unification).
2020-09-10 11:54:10 +03:00
Alexander Strizhakov ab56dd54e7
use Pleroma.HTTP in emoji packs tasks 2020-09-10 11:23:39 +03:00
Ivan Tashkinov cad69669fc [#2130] Fixed OAuth OOB authentication for users with enabled MFA. 2020-09-09 22:44:38 +03:00
Ivan Tashkinov b4860c57a6 [#2497] Formatting fix. 2020-09-09 19:43:36 +03:00
Ivan Tashkinov 68a74d6659 [#2497] Added missing alias, removed legacy :adapter option specification for HTTP.get/_. 2020-09-09 19:30:42 +03:00
Mark Felder 4ee99dafcc Merge branch 'develop' into media-preview-proxy 2020-09-09 11:11:36 -05:00
Mark Felder d23d0c27c2 Handle possibility of user account in a bulk operation not having an email address 2020-09-08 16:48:54 -05:00
Mark Felder 75b6fef25d Add mix task for bulk [un]confirming the local instance users 2020-09-08 16:39:41 -05:00
Mark Felder 23ca5f75af Make it possible to bulk send confirmation emails to all unconfirmed users 2020-09-08 16:39:08 -05:00
rinpatch 0d2814ec8e Metadata: Move restriction check from Feed provider to activated_providers 2020-09-08 20:21:34 +03:00
Mark Felder 2011142ed9 Use :restrict_unauthenticated testing for more granular control 2020-09-08 20:21:34 +03:00
Mark Felder a85ed6defb Do not serve RSS/Atom feeds when instance is private 2020-09-08 20:21:34 +03:00
Mark Felder 14d07081fd Feed provider only generates a redirect, so always activate it.
Making this configurable is misleading.
2020-09-08 20:21:34 +03:00
Mark Felder ff07014b26 Disable providers of user and status metadata when instance is private 2020-09-08 20:21:34 +03:00
Mark Felder 630444ee08 Do not make RelMe metadata provider optional.
There's really no sound reason to turn this off anyway.
2020-09-08 20:21:34 +03:00
Haelwenn (lanodan) Monnier 947ee55ae2 user: harden get_friends_query(), get_followers_query() and their wrappers 2020-09-08 20:21:34 +03:00
Haelwenn (lanodan) Monnier 16c451f8f1 search: Apply following filter only when user is usable 2020-09-08 20:21:34 +03:00
Haelwenn (lanodan) Monnier 10ef532c63 AP C2S: Restrict character limit on Note 2020-09-08 20:21:34 +03:00
Egor Kislitsyn a781ac6ca5 Fix atom leak in AdminAPIController 2020-09-08 20:21:34 +03:00
rinpatch 27c3973b78 Merge branch 'temp-hackney-fix' into 'develop'
temp hackney fix

See merge request pleroma/pleroma!2951
2020-09-08 19:45:44 +03:00
rinpatch 7490b76bbf Merge branch 'fix/upload-filter-exiftool-webp' into 'develop'
Skip processing webp image files because we can't strip EXIF

Closes #2080

See merge request pleroma/pleroma!2924
2020-09-08 19:45:44 +03:00
Haelwenn (lanodan) Monnier 921f926e96
Remove OStatus in testsuite 2020-09-08 18:43:57 +02:00
Haelwenn (lanodan) Monnier ee0e05f930
Drop unused "inReplyToAtomUri" in objects 2020-09-08 18:43:57 +02:00
Alexander Strizhakov 87d2805791
combo fixes 2020-09-08 17:40:23 +02:00
Mark Felder 21efda2edb Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into unlisted 2020-09-08 09:31:26 -05:00
rinpatch 0a05670b44 Merge branch 'fix/upload-filter-exiftool-webp' into 'develop'
Skip processing webp image files because we can't strip EXIF

Closes #2080

See merge request pleroma/pleroma!2924
2020-09-08 12:21:33 +00:00
rinpatch 4b76d7ce67 Merge branch 'fix/admin-controller-atom-leak' into 'develop'
Fix atom leak in AdminAPIController

See merge request pleroma/secteam/pleroma!6
2020-09-08 14:00:00 +03:00
lain 9b85592b8b Merge branch 'fix/rich-media-fake-statuses' into 'develop'
Rich Media: Do not cache URLs for preview statuses

Closes #1987

See merge request pleroma/pleroma!2956
2020-09-08 13:56:42 +03:00
rinpatch 964bc8e2e8 Merge branch 'bugfix/favicon-too-long' into 'develop'
instance: Drop favicon URLs longer than 255 characters

Closes #2116

See merge request pleroma/pleroma!2949
2020-09-08 13:55:52 +03:00
feld 43b07c31cb Merge branch 'fix/2095-deactivated-account-reset' into 'develop'
Disallow password resets for deactivated accounts

Closes #2095

See merge request pleroma/pleroma!2935
2020-09-08 13:53:47 +03:00
rinpatch dccbed856d Merge branch 'http-fixes' into 'develop'
Improvements and fixes for http requests

See merge request pleroma/pleroma!2904
2020-09-08 13:53:16 +03:00
rinpatch ea4b6c64d6 Merge branch 'feat/rich-media-improvements' into 'develop'
Rich media improvements

See merge request pleroma/pleroma!2944
2020-09-08 13:00:49 +03:00
rinpatch 8c3241df44 Merge branch 'fix/2047-rich-media-parser' into 'develop'
RichMedia parser fix

Closes #2047

See merge request pleroma/pleroma!2941
2020-09-08 13:00:15 +03:00
rinpatch 13e606941c Merge branch 'fix/2087-metadata' into 'develop'
Fix/2087 metadata

See merge request pleroma/secteam/pleroma!11
2020-09-08 12:55:30 +03:00
rinpatch 74d46a1b09 Merge branch 'secfix/search-crash' into 'develop'
Fix crash done via search

See merge request pleroma/secteam/pleroma!12
2020-09-08 12:53:11 +03:00
rinpatch 84acfab156 Merge branch 'fix-searching-following' into 'develop'
search: fix 'following' query parameter

See merge request pleroma/pleroma!2943
2020-09-08 12:53:02 +03:00
rinpatch 718c7cc847 Merge branch 'fix/apc2s-limits' into 'develop'
AP C2S: Restrict character limit on Note

Closes #2

See merge request pleroma/secteam/pleroma!9
2020-09-08 12:51:38 +03:00
Mark Felder 4ea07f74e9 Revert/simplify.
We only need to check the content-type. There's no chance a webp file
will get mismatched as another image type.
2020-09-08 12:29:38 +03:00
Mark Felder 216c84a8f4 Bypass the filter based on content-type as well in case a webp image is uploaded with the wrong file extension. 2020-09-08 12:29:38 +03:00
Mark Felder 2165a24974 Improve upload filter return values so we can identify when filters make no changes to the input 2020-09-08 12:29:38 +03:00
Mark Felder fa347b9c2f Fix uploading webp image files when Exiftool Upload Filter is enabled 2020-09-08 12:29:38 +03:00
Alibek Omarov 95688c90ad ForceBotUnlistedPolicy: simplify code 2020-09-08 01:15:15 +02:00
Alibek Omarov 8b695c3eeb ForceBotUnlistedPolicy: format 2020-09-07 22:53:45 +02:00
Alibek Omarov 699224a900 ForceBotUnlistedPolicy: initial add, tiny clean up from my previous version 2020-09-07 22:15:42 +02:00
Alexander Strizhakov 18d21aed00
deprecation warnings 2020-09-07 19:59:17 +03:00
Alexander Strizhakov 696bf09433
passing adapter options directly without adapter key 2020-09-07 19:59:17 +03:00
Alexander Strizhakov a83916fdac
adapter options unification
not needed options deletion
2020-09-07 19:59:17 +03:00
Alexander Strizhakov ee67c98e55
removing Stats worker from Oban cron jobs 2020-09-07 19:16:14 +03:00
rinpatch 6c6de8e5df Merge branch 'temp-hackney-fix' into 'develop'
temp hackney fix

See merge request pleroma/pleroma!2951
2020-09-07 12:47:43 +00:00
rinpatch d5c286b802 Merge branch 'bugfix/favicon-too-long' into 'develop'
instance: Drop favicon URLs longer than 255 characters

Closes #2116

See merge request pleroma/pleroma!2949
2020-09-07 11:12:30 +00:00
lain fdab01ab56 Merge branch 'fix/rich-media-fake-statuses' into 'develop'
Rich Media: Do not cache URLs for preview statuses

Closes #1987

See merge request pleroma/pleroma!2956
2020-09-07 10:19:19 +00:00
Haelwenn (lanodan) Monnier 08aef7dd4e
instance: Log catch favicon errors as warnings 2020-09-07 08:40:52 +02:00
Maksim Pechnikov 917d325972 added api spec 2020-09-07 07:17:30 +03:00
Maksim Pechnikov 5ae56aafb2 added import mutes 2020-09-06 21:42:51 +03:00
Mark Felder 563718cab9 Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into media-preview-proxy 2020-09-06 08:15:34 -05:00
rinpatch 170599c390 RichMedia: do not log webpages missing metadata as errors
Also fixes the return value of Parser.parse on errors, previously
was just `:ok` due to the logger call in the end
2020-09-05 22:05:35 +03:00
rinpatch 129a2f48df ConnectionPool middleware: handle connection opening errors 2020-09-05 21:36:17 +03:00
rinpatch 9d6aca5bee ConnectionPool: fix the previous hotfix
I rushed the hotfix and forgot how `pop_in` actually works,
I want to die. We need some integration tests for the HTTP client
2020-09-05 21:27:06 +03:00
rinpatch 5298de3be6 ConnectionPool middleware: fix a crash due to unimplemented behaviour
Structs don't implement Access behaviour, so this crashed. Tests didn't
catch it and I didn't test that part of the codepath. Very sorry
2020-09-05 21:17:03 +03:00
rinpatch e198ba492e Rich Media: Do not cache URLs for preview statuses
Closes #1987
2020-09-05 20:53:46 +03:00
Ivan Tashkinov 88a6ee4a59 [#2497] Func defs grouping fix. 2020-09-05 20:23:18 +03:00
Ivan Tashkinov f170d47130 [#2497] Adjusted media proxy preview invalidation. Allowed client-side caching for media preview. Adjusted prewarmer to fetch only proxiable URIs.
Removed :preview pool in favor of existing :media one. Misc. refactoring.
2020-09-05 20:19:09 +03:00
Ivan Tashkinov c3b02341bf [#2497] Made media preview proxy fall back to media proxy instead of to source url. Adjusted tests. Refactoring. 2020-09-05 16:16:35 +03:00
Haelwenn (lanodan) Monnier 0d91f65284
Prevent AccountView and instance.get_or_update_favicon fails 2020-09-05 05:43:50 +02:00
rinpatch 10da13c713 ConnectionPool middleware: Fix connection leak on ReverseProxy redirects
Requires a patched Tesla due to upstream not saving opts between
redirects, patch submitted at https://github.com/teamon/tesla/pull/414
2020-09-04 22:10:40 +03:00
Alexander Strizhakov 473458b0fb
fix for ReverseProxy 2020-09-04 14:45:30 +03:00
Alexander Strizhakov 8bd2b6eb13
temp hackney fix 2020-09-04 14:24:15 +03:00
rinpatch d34fe2840d HTTP: radically simplify pool checkin/checkout
Use a custom tesla middleware instead of adapter helper function +
custom redirect middleware.

This will also fix "Client died before releasing the connection"
messages when the request pool is overloaded. Since the checkout is
now done after passing ConcurrentLimiter.

This is technically less efficient, since the connection needs to be
checked in/out every time the middleware is left or entered respectively.
But I don't think the nanoseconds we might lose on redirects
to the same host are worth the complexity.
2020-09-03 23:44:13 +03:00
Mark Felder f25b0e87f3 URL passed to helper is already MediaProxy
Set :preview pool on the request
2020-09-03 15:28:57 -05:00
Mark Felder d1e1057e22 Merge branch 'media-preview-proxy' of git.pleroma.social:pleroma/pleroma into feld-media-preview-proxy 2020-09-03 14:48:43 -05:00
Mark Felder 6141eb94ab Fetch preview requests through the MediaProxy. Separate connection options are not needed.
Use a separate pool for preview requests
2020-09-03 14:42:11 -05:00
Ivan Tashkinov 60c925380d [#2497] Added support for enforcing output format for media proxy preview, used for avatar_static & header_static (AccountView). 2020-09-03 20:13:29 +03:00
Mark Felder 85446cc30c Merge branch 'develop' into media-preview-proxy 2020-09-03 10:34:06 -05:00
lain 9433311923 Merge branch 'bugfix/incoming-poll-emoji' into 'develop'
Fix emoji in Question, force generated context/context_id insertion

Closes #1870

See merge request pleroma/pleroma!2915
2020-09-03 11:50:30 +00:00
lain f26b580e80 Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into seanking/pleroma-fix_install_fe_bug 2020-09-03 11:29:39 +02:00
feld d1a6f67b1d Merge branch 'fix/2095-deactivated-account-reset' into 'develop'
Disallow password resets for deactivated accounts

Closes #2095

See merge request pleroma/pleroma!2935
2020-09-02 17:11:24 +00:00
lain 0ab03e8564 Merge branch 'fix/1991-tzdata-update' into 'develop'
user agent if Endpoint is not started yet

Closes #1991

See merge request pleroma/pleroma!2945
2020-09-02 17:09:55 +00:00
lain 119e11f455 Merge branch 'bugfix/mastoapi-lists' into 'develop'
Fix removing an account from a list

Closes #2103

See merge request pleroma/pleroma!2940
2020-09-02 17:03:45 +00:00
lain 581f382e71 ListController: DRY up stuff. 2020-09-02 18:32:00 +02:00
Mark Felder cbf7f0e029 Disallow password resets for deactivated accounts.
Ensure all responses to password reset events are identical.
2020-09-02 09:09:13 -05:00
rinpatch d48fc90978 StatusView: Start fetching rich media cards as soon as possible 2020-09-02 16:45:54 +03:00
Alexander Strizhakov a11f23c130
user agent if Endpoint is not started yet 2020-09-02 15:45:47 +03:00
rinpatch 19691389b9 Rich media: Add failure tracking 2020-09-02 14:59:52 +03:00
rinpatch 46236d1d87 html.ex: optimize external url extraction
By using a :not() selector and only extracting attributes from the
first match.
2020-09-02 12:45:20 +03:00
rinpatch 47ff425cfd Merge branch 'fix/2047-rich-media-parser' into 'develop'
RichMedia parser fix

Closes #2047

See merge request pleroma/pleroma!2941
2020-09-02 09:38:43 +00:00
rinpatch b2d776d77d Merge branch 'http-fixes' into 'develop'
Improvements and fixes for http requests

See merge request pleroma/pleroma!2904
2020-09-02 09:36:56 +00:00
Alexander Strizhakov 84fbf16161
timeout option moved to gun adapter helper 2020-09-02 10:50:51 +03:00
Alexander Strizhakov 1c57ef4498
default pool for tz_data client 2020-09-02 10:33:43 +03:00
Alexander Strizhakov 79f65b4374
correct pool and uniform headers format 2020-09-02 09:16:51 +03:00