Commit Graph

7058 Commits

Author SHA1 Message Date
Kailash Sudhakar
63fe16604e Hide HasuraCon'22 banner
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8845
GitOrigin-RevId: 7ad2250d6f88a8b3e4e3da20328b095b3b8fa62d
2023-04-20 16:34:28 +00:00
Samir Talwar
71430082f2 server/tests-py: Remove the old local and CI runners.
We no longer need these!

Next up:

1. renaming anything with "new" in the name (because we don't have an "old" any more)
2. removing the server upgrade/downgrade tests (I am sure this is controversial)
3. deleting a lot of Python code

[NDAT-259]: https://hasurahq.atlassian.net/browse/NDAT-259?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8841
GitOrigin-RevId: df026d4a19dc0cf5c8730d41eafae5eebb6f6f50
2023-04-20 14:22:07 +00:00
Varun Choudhary
1846307cd6 console: show warning notification while replacing metadata, clearing metadata and setting time_limt
[GS-494]: https://hasurahq.atlassian.net/browse/GS-494?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8689
GitOrigin-RevId: c47b309359a9d3632153d525ab0b61e1f35ca7fa
2023-04-20 13:51:28 +00:00
Sean Park-Ross
3c3ad2d120 Docs: Update Apollo Subscriptions
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8838
GitOrigin-RevId: 628b9f7bf6a4815f1d094346e04b97f0b2df6a8a
2023-04-20 13:13:09 +00:00
Tom Harding
52c21832d8 Add an alias for EXISTS clauses in queries
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8537
GitOrigin-RevId: d931e4f32bef75dcba7cf8d370caa7539a7d3d8a
2023-04-20 12:34:51 +00:00
Puru Gupta
9d815b54ed docs: update docs for enabling EE rate limiting
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8811
Co-authored-by: Rob Dominguez <24390149+robertjdominguez@users.noreply.github.com>
GitOrigin-RevId: 111d059b7a002178c42f44926bbf220ab3ad2fe2
2023-04-20 11:16:44 +00:00
Puru Gupta
0383cb383b server: integration tests for zero-downtime env vars update on cloud
## Description

Add multitenant integration tests for zero downtime env variable configuration on cloud
- [x] `HASURA_GRAPHQL_STRINGIFY_NUMERIC_TYPES`
- [x] `HASURA_GRAPHQL_DEV_MODE`
- [x] `HASURA_GRAPHQL_DEFAULT_NAMING_CONVENTION`
- [x] `HASURA_GRAPHQL_ENABLED_APIS`
- [x] `HASURA_GRAPHQL_ENABLE_ALLOWLIST`
- [x] `HASURA_GRAPHQL_ADMIN_INTERNAL_ERRORS`
- [ ] `HASURA_GRAPHQL_EXPERIMENTAL_FEATURES`
   - [x] inherited_roles (GA tests not needed)
   - [ ] optimise_permission_filters (pending)
   - [x] naming_convention (done as part of `HASURA_GRAPHQL_DEFAULT_NAMING_CONVENTION`)
   - [x] streaming_subscriptions (GA tests not needed)
   - [x] apollo_federation
   - [x] hide_update_many_fields
   - [x] bigquery_string_numeric_input (done as part of `HASURA_GRAPHQL_STRINGIFY_NUMERIC_TYPES`)
   - [x] hide_aggregation_predicates
   - [x] hide_stream_fields
- [x] `HASURA_GRAPHQL_V1_BOOLEAN_NULL_COLLAPSE`

This PR also add the integration tests for changing auth mode dynamically. This test changes the auth mode from Admin Secret to JWT and finally to auth hook and checks that a sample query is run correctly.

```
Dynamic Auth mode changes are reflected properly
  test multitenant works fine when auth mode changes from ADMIN SECRET -> JWT -> AUTH HOOK  [ ]
  Spock is running on port 9231
  test multitenant works fine when auth mode changes from ADMIN SECRET -> JWT -> AUTH HOOK  [✔]
```

We know that OSS python tests (`test-server.sh`) has a more intensive auth mode tests. And hence the efforts in this [branch](https://github.com/hasura/graphql-engine-mono/compare/gqls/zero-downtime-envvars...naveen/tests-auth-changes-dynamically) tests multitenant server on all the auth tests of the pytest suite on a single running multitenant server. I can confirm that all those tests passed and thus gives us high confidence that we did not break any code related to auth.

Note that, the test in this PR is a very simple test to see that AUTH mode is working correctly. We are okay with this simple test because we have already tested the multitenant server on all the auth mode tests present in OSS pytest suite.

Epic: https://hasurahq.atlassian.net/browse/GS-232
Jira Ticket: https://hasurahq.atlassian.net/browse/GS-387

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7721
Co-authored-by: Naveen Naidu <30195193+Naveenaidu@users.noreply.github.com>
Co-authored-by: Anon Ray <616387+ecthiender@users.noreply.github.com>
GitOrigin-RevId: 7fbe3d0d6e1dd2334b911c94f7f8bbaa170a8b59
2023-04-20 10:36:43 +00:00
Gil Mizrahi
a5043ab215 cleanup(sqlserver): remove QueryWithDDL
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8834
GitOrigin-RevId: b31fba44bb67a16bcc1901ce51ce4ab1c6797f23
2023-04-20 10:02:58 +00:00
Samir Talwar
ffa3f5e3cc server/tests-py: Remove test_horizontal_scale.py.
This removes *test_horizontal_scale.py*, which tests horizontal scaling by running some tests against two HGE servers, both talking to PgBouncer.

This doesn't really test HGE; it's testing whether PgBouncer guarantees the same level of consistency as PostgreSQL. I'm not convinced that it's worthwhile, so I am deleting it.

[NDAT-542]: https://hasurahq.atlassian.net/browse/NDAT-542?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8821
GitOrigin-RevId: 2029f2fea11c7fd58ed47e724cb3cd50e67d5a43
2023-04-20 09:28:15 +00:00
Varun Choudhary
0641500f26 console: fix UI bug in "inspect modal" in operations tab (under monitoring)
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8833
GitOrigin-RevId: 3662dd68f2f19800b665475417ab9f4ce52dcaf4
2023-04-20 07:17:09 +00:00
pranshi06
a4a1283f98 docs: configurable log types
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8778
GitOrigin-RevId: 9cefc5843e553517df7858e9193d9df7ae5c474b
2023-04-19 20:27:08 +00:00
Sean Park-Ross
decd3dcc55 Docs: Small Changes 4
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8694
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Rob Dominguez <24390149+robertjdominguez@users.noreply.github.com>
GitOrigin-RevId: 134a08f70614c5fbc0fa889912c58134dd2548bc
2023-04-19 16:59:51 +00:00
Priya Sharma
d798e18fa2 console: randomise options in use case onboarding
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8820
GitOrigin-RevId: e4d622ac160b0e1e3a750d9a26a5caca5f68f5de
2023-04-19 16:55:09 +00:00
awjchen
5e97a1e475 server: set default service.name in opentelemetry exporter
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8169
GitOrigin-RevId: 0aac41869d6d9a100825f7a90fb976b75c006875
2023-04-19 16:16:31 +00:00
Samir Talwar
832fac9c69 server/tests-py: Remove test_startup_db_calls.py.
This removes the *test_startup_db_calls.py* tests. These tests are looking for a specific regression on resolving sources multiple times on startup. I have never seen them fail and I'm not convinced the tests are worthwhile.

This is compounded by the roundabout way in which we verify that we resolve the sources; we do it by inspecting the logs. This is a real pain to port to the fixture-based method of spinning HGE, and I don't believe it's worth the effort; I'd rather just delete it.

[NDAT-540]: https://hasurahq.atlassian.net/browse/NDAT-540?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8813
GitOrigin-RevId: 0a313e7998fa034fa96aaa10924d9d11dd1856f4
2023-04-19 15:30:19 +00:00
Gil Mizrahi
2635ed46bd sqlserver: implement native queries as CTEs
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8818
GitOrigin-RevId: 78d84c3558b2cc27e1c1a6c025de4c5035a9cafe
2023-04-19 14:54:56 +00:00
Nicolas Inchauspe
13a4710083 Remove code display in notification when useless
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8816
GitOrigin-RevId: bb9fb429670f286579d8cdad7ebcaa41e9c18b28
2023-04-19 14:07:16 +00:00
paritosh-08
4a15cfae99 docs: improve docs for auth-hook session variable caching
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8749
Co-authored-by: Rob Dominguez <24390149+robertjdominguez@users.noreply.github.com>
GitOrigin-RevId: c685451d5c4da343a6074d3d5fd82d73f6f240b4
2023-04-19 13:31:52 +00:00
Vijay Prasanna
2f7e89a9c2 console (feature): component to introspect and track functions in the new data tab UI
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8570
GitOrigin-RevId: addf15967efcbcdc86aedd42096d59b95be14a27
2023-04-19 12:53:10 +00:00
Vijay Prasanna
fad183d854 console: minor bug fixes (Tracking UI, Connect DB)
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8807
Co-authored-by: Luca Restagno <59067245+lucarestagno@users.noreply.github.com>
GitOrigin-RevId: f681dfb5b4ace38efe087e18aef6dde8dbd8b940
2023-04-19 12:11:28 +00:00
ananya-2410
72d0c73377 ci: tag release v2.24.0-beta.1
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8814
GitOrigin-RevId: ba9a5f44d3d8cdcd2990c2c192d4063b429f416e
2023-04-19 11:37:32 +00:00
Anon Ray
055cf11134 server/pro: remote schema queries should not be cached when forward client headers are set
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8806
GitOrigin-RevId: e2b5aa012146cf3cf1bc361d986c0619e9f78d26
2023-04-19 11:13:35 +00:00
Samir Talwar
26e03a07bb server/tests-py: Parallelize JWT tests.
This rewrites the JWT tests to generate and specify the secrets per test class, and to provide the server configuration to the HGE fixture.

It covers the tests in:

  - *test_jwt.py*
  - *test_jwt_claims_map.py*
  - *test_config_api.py*
  - *test_graphql_queries.py* (just a couple here)

This does reduce the number of code paths exercised with JWT, as we were previously running *all* tests with JWT tokens. However, this seems excessive; we don't need to tread every code path, just enough to ensure we handle the tokens appropriately. I believe that the test coverage in *test_jwt.py* does this well enough (though I'd prefer if we moved the coverage lower down in the stack as unit tests).

These tests were configured in multiple different ways by *test-server.sh*; this configuration is now moved to test subclasses within the various files. This results in a bit of duplication.

Unfortunately, the tests would ideally use parameterization rather than subclassing, but that doesn't work because of `hge_fixture_env`, which creates a "soft" dependency between the environment variables and `hge_server`. Parameterizing the former *should* force the latter to be recreated for each new set of environment variables, but `hge_server` isn't actually aware there's a dependency.

It currently looks like this adds lines of code; we'll more than make up for it when we delete the relevant lines from *test-server.sh*. I am not doing that here because I plan on deleting the whole file in a subsequent changeset.

[NDAT-538]: https://hasurahq.atlassian.net/browse/NDAT-538?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8803
GitOrigin-RevId: f7f2caa62de0b0a45e42964b69a8ae73d1575fe8
2023-04-19 10:30:21 +00:00
Philip Lykke Carlsen
983fc2ad47 Rename "Custom Return Types" → "Logical Models"
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8800
GitOrigin-RevId: e5e10f31c6cc8953a8ee947441a7f80b0e9b5e5e
2023-04-19 09:05:25 +00:00
Erik Magnusson
56beb705b2 Dsf 248 permissions add view checks to permissions
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8600
GitOrigin-RevId: f877085e96cc75d1ba784095ef5a6701ddad9fcc
2023-04-19 08:30:38 +00:00
ananya-2410
f93eed713f ci: update ubuntu image to focal-20230412
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8805
GitOrigin-RevId: 3d4e0dfca555e4f709e94e6658eacb213bcb1750
2023-04-19 07:28:10 +00:00
Daniel Chambers
91c88b2109 Properly return schema information about views and PK mutability from the Super Connector
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8786
GitOrigin-RevId: b7cd0dd5736a408a269819ea76dfbe53455060ee
2023-04-18 17:24:51 +00:00
Brandon Simmons
3332189756 benchmarks: resource_calibration.sh and CI throughput benchmarks
See this earlier iteration of this work for an example of the kind of report  we're producing: #7664

And related work in this repo: github.com:hasura/graphql-bench-helper

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7923
GitOrigin-RevId: 99d2a55e2fb5b55f3f33e2570cfd0bc23e448e0c
2023-04-18 16:44:54 +00:00
Gil Mizrahi
5ed9fcc0a3 bugfix(NativeQueries): fix validation failed on name with uppercase on postgres
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8790
GitOrigin-RevId: f3b9b041fd96c6087ff4bd3379ef6283befcdc54
2023-04-18 16:09:45 +00:00
Karthikeyan Chinnakonda
41ed0d369b server: add active multiplexed subscriptions metrics
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8644
Co-authored-by: Rob Dominguez <24390149+robertjdominguez@users.noreply.github.com>
GitOrigin-RevId: ff1f646cd6a4b8dd5106db4693b2c6ad465ae052
2023-04-18 15:33:01 +00:00
Luca Restagno
170c95e887 fix: data type handling for mysql
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8780
GitOrigin-RevId: b550fd7d74205ca9cedc7bce7e38aad8772529ee
2023-04-18 14:16:53 +00:00
Aaysha
30f32b676c login: Fix console crash when retrieving null value from local storage
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8795
GitOrigin-RevId: 95e39e46a3193fd0ac47a8e69b58e9172942d6e3
2023-04-18 13:22:56 +00:00
Sean Park-Ross
13b5f277ac Docs: Update diagrams in GraphQL federation
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8793
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
GitOrigin-RevId: 3711d81ab6922daaeb217fd7872ff91f88387d9a
2023-04-18 11:29:50 +00:00
Rikin Kachhia
fd97471936 console: add comment about cloud console local storage behaviour
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8791
GitOrigin-RevId: 988cd0b925eda34763f6d6778e271deed0cbd8f8
2023-04-18 10:27:19 +00:00
nevermore
83c597987a console: Fix use case experiment screen
[GT-588]: https://hasurahq.atlassian.net/browse/GT-588?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[GT-589]: https://hasurahq.atlassian.net/browse/GT-589?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8774
GitOrigin-RevId: beec40afb52ec55d870fddfb3b4521ebc923ffdd
2023-04-18 09:07:26 +00:00
Erik Magnusson
74fe1c3268 console: fix fallback dataype operators and filterable input
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8716
GitOrigin-RevId: cc91c31353f079b078e59e8065e4a70f1b7ba0d4
2023-04-18 08:05:17 +00:00
Daniel Chambers
4ccfc3490b Satisfy get_table_info from cached DBObjectsIntrospection for Data Connectors
[GDC-643]: https://hasurahq.atlassian.net/browse/GDC-643?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8761
GitOrigin-RevId: 6b8e15fc35f7f463d86c865c880779794f0f28b8
2023-04-18 05:37:34 +00:00
Shahidh K Muhammed
ff0c6d43ec docs: add a note on supported from version for ee console sso
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8783
GitOrigin-RevId: ed95b8e6126aa0fe02641b2953855c535ddac1a6
2023-04-18 00:37:27 +00:00
Daniel Harvey
69e329ee18 chore(server): break down Hasura.RQL.IR.Select somewhat
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8779
GitOrigin-RevId: 9e40de0ed36cfe84d1457bd7c6a96c80e31d357b
2023-04-17 15:21:05 +00:00
Samir Talwar
0ea8bd8df8 server/tests-py: Parallelize test_logging.py.
This adds the ability to capture logs to the HGE fixture, and uses this in test_logging.py to analyze the logs, instead of relying on a shell script redirecting the logs to a file.

We then inject the logs into the tests and parse the JSON. Because we're no longer reading a file, we need to do this in a separate thread, as we'll block on reading rather than the stream ending. (Once HGE stops, the stream will be closed.)

Some of the tests require a JWK server, so this has been extracted from test_jwk.py.

[NDAT-540]: https://hasurahq.atlassian.net/browse/NDAT-540?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8772
GitOrigin-RevId: 9413e714f1c42b8a0991d0d30c4358209fd30c0c
2023-04-17 13:09:34 +00:00
Rob Dominguez
0b47b07c03 docs: add note for cloud upgrades
[DOCS-352]: https://hasurahq.atlassian.net/browse/DOCS-352?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8776
GitOrigin-RevId: dc965ff582062af35bcbdd346b56e455d56e111f
2023-04-17 12:19:41 +00:00
Daniel Harvey
eab64a8ca3 chore(server): replace Metadata.hs-boot with 3 orphan instances
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8740
GitOrigin-RevId: 801f03045b9981b07f8c0abfdeb2722e715e63cd
2023-04-17 12:11:21 +00:00
Daniel Harvey
2fd3f91398 chore(server): metadata changes for array relationships for Native Queries
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8670
GitOrigin-RevId: c23e23e3cf48013ab76fc2fa98c8b8b800c6cee6
2023-04-17 11:31:59 +00:00
Rikin Kachhia
e95259e1f4 build: update manifests with latest version
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8775
GitOrigin-RevId: e5cfc438c3f14efc0dfd9a8bbbec984c7d203674
2023-04-17 10:32:05 +00:00
Luca Restagno
ed8be7dd69 fix: Too many API calls fired from the suggested relationships component
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8708
GitOrigin-RevId: 9d917b9015053e5653d2277f3dcdf69168bd1eff
2023-04-17 09:20:48 +00:00
Toan Nguyen
1ad1e08959 Docs: Hasura EE console SSO
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8355
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Rob Dominguez <24390149+robertjdominguez@users.noreply.github.com>
GitOrigin-RevId: 065de606fffcd2d3d1a18b9cb739bd1168ad9a77
2023-04-17 02:48:11 +00:00
Puru Gupta
d9b77d9dae server: remove cache specific headers when response is not cached
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8637
Co-authored-by: Daniele Cammareri <5709409+dancamma@users.noreply.github.com>
GitOrigin-RevId: 0af8adbb638394fb65926165b09ff237d060ce85
2023-04-16 19:33:26 +00:00
Matthew Goodwin
8f981d2678 console: add schema operations to new Manage Database UI
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8703
Co-authored-by: Vijay Prasanna <11921040+vijayprasanna13@users.noreply.github.com>
Co-authored-by: Nicolas Beaussart <7281023+beaussan@users.noreply.github.com>
GitOrigin-RevId: 3a0d41e5dff3b89dc81e55f071580e48c2982e66
2023-04-14 05:32:18 +00:00
Julian@Hasura
cd96ec94fc Enable automatic layout with collision detection in browse rows dropdown DSF-236
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8771
GitOrigin-RevId: 75e30b0f8b23018f305c62babe53399b12b5515d
2023-04-13 20:40:20 +00:00
Solomon
eada60b80d Add a Query Cache Max TTL, Bucket Size, and Bucket Rate Arg/Env options in HasuraPro
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6484
GitOrigin-RevId: 1a060ca8d81f123abaa54a64e905cc8e20b683c7
2023-04-13 20:04:24 +00:00