litestar-vite 0.2.1__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of litestar-vite might be problematic. Click here for more details.
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/PKG-INFO +1 -1
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/inertia/_utils.py +1 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/inertia/exception_handler.py +6 -6
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/inertia/middleware.py +1 -5
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/inertia/request.py +5 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/inertia/response.py +6 -1
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/pyproject.toml +1 -1
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.github/CODEOWNERS +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.github/dependabot.yaml +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.github/workflows/cd.yaml +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.github/workflows/ci.yaml +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.github/workflows/docs-preview.yaml +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.github/workflows/docs.yaml +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.github/workflows/pr-title.yaml +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.github/workflows/publish.yaml +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.gitignore +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.pre-commit-config.yaml +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/.python-version +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/CONTRIBUTING.rst +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/LICENSE +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/Makefile +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/README.md +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/docs/Makefile +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/docs/conf.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/docs/contribution-guide.rst +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/docs/fix_missing_references.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/docs/index.rst +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/docs/reference/config.rst +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/docs/reference/plugin.rst +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/docs/usage/index.rst +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/docs/usage/placeholder.rst +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/__init__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/app.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/package-lock.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/package.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/public/assets/main-l0sNRNKZ.js +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/public/assets/styles-l0sNRNKZ.js +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/public/manifest.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/resources/main.ts +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/resources/styles.css +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/templates/index.html.j2 +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/tsconfig.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/basic/vite.config.ts +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/app.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/package-lock.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/package.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/public/assets/main-l0sNRNKZ.js +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/public/assets/styles-l0sNRNKZ.js +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/public/manifest.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/resources/main.ts +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/resources/styles.css +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/templates/index.html.j2 +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/tsconfig.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/flash/vite.config.ts +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/app.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/package-lock.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/package.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/postcss.config.cjs +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/public/assets/main-BIhkjqcE.js +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/public/assets/styles-B8hX6ha2.css +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/public/manifest.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/resources/Layout.vue +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/resources/main.js +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/resources/pages/Dashboard.vue +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/resources/pages/Home.vue +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/resources/styles.css +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/resources/templates/index.html +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/resources/vite-env.d.ts +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/tailwind.config.cjs +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/tsconfig.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/vite.config.ts +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/__init__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/__metadata__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/cli.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/commands.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/config.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/inertia/__init__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/inertia/config.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/inertia/plugin.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/inertia/routes.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/inertia/types.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/loader.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/plugin.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/py.typed +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/template_engine.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/templates/__init__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/templates/index.html.j2 +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/templates/main.ts.j2 +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/templates/package.json.j2 +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/templates/styles.css.j2 +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/templates/tsconfig.json.j2 +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/litestar_vite/templates/vite.config.ts.j2 +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/pdm.lock +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/__init__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/conftest.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/templates/__init__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/templates/index.html.j2 +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/__init__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/app.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/__init__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/public/.gitkeep +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/public/assets/main-l0sNRNKZ.js +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/public/assets/styles-l0sNRNKZ.js +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/public/manifest.json +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/resources/.gitkeep +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/resources/main.ts +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/resources/styles.css +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/templates/.gitkeep +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/templates/index.html +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_cli/__init__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_cli/conftest.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_cli/test_init.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_commands.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_config.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_inertia/__init__.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_inertia/conftest.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_inertia/templates/index.html.j2 +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_inertia/test_inertia_request.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_inertia/test_inertia_response.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_inertia/test_routes.py +0 -0
- {litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_template_engine.py +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import contextlib
|
|
1
2
|
import re
|
|
2
3
|
from typing import TYPE_CHECKING, Any, cast
|
|
3
4
|
|
|
@@ -28,7 +29,6 @@ from litestar.status_codes import (
|
|
|
28
29
|
HTTP_422_UNPROCESSABLE_ENTITY,
|
|
29
30
|
HTTP_500_INTERNAL_SERVER_ERROR,
|
|
30
31
|
)
|
|
31
|
-
from litestar.types import Empty
|
|
32
32
|
|
|
33
33
|
from litestar_vite.inertia.response import InertiaBack, InertiaRedirect, InertiaResponse, error
|
|
34
34
|
|
|
@@ -44,7 +44,7 @@ class _HTTPConflictException(HTTPException):
|
|
|
44
44
|
status_code = HTTP_409_CONFLICT
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
def exception_to_http_response(request: Request[UserT, AuthT, StateT], exc: Exception) -> Response[Any]:
|
|
47
|
+
def exception_to_http_response(request: Request[UserT, AuthT, StateT], exc: Exception) -> Response[Any]: # noqa: PLR0911
|
|
48
48
|
"""Handler for all exceptions subclassed from HTTPException."""
|
|
49
49
|
inertia_enabled = getattr(request, "inertia_enabled", False) or getattr(request, "is_inertia", False)
|
|
50
50
|
if isinstance(exc, NotFoundError):
|
|
@@ -57,7 +57,6 @@ def exception_to_http_response(request: Request[UserT, AuthT, StateT], exc: Exce
|
|
|
57
57
|
if request.app.debug and http_exc not in (PermissionDeniedException, NotFoundError):
|
|
58
58
|
return cast("Response[Any]", create_debug_response(request, exc))
|
|
59
59
|
return cast("Response[Any]", create_exception_response(request, http_exc(detail=str(exc.__cause__))))
|
|
60
|
-
has_active_session = not (not request.session or request.scope["session"] is Empty)
|
|
61
60
|
is_inertia = getattr(request, "is_inertia", False)
|
|
62
61
|
status_code = getattr(exc, "status_code", HTTP_500_INTERNAL_SERVER_ERROR)
|
|
63
62
|
preferred_type = MediaType.HTML if inertia_enabled and not is_inertia else MediaType.JSON
|
|
@@ -67,7 +66,7 @@ def exception_to_http_response(request: Request[UserT, AuthT, StateT], exc: Exce
|
|
|
67
66
|
inertia_plugin = cast("InertiaPlugin", request.app.plugins.get("InertiaPlugin"))
|
|
68
67
|
if extras:
|
|
69
68
|
content.update({"extra": extras})
|
|
70
|
-
|
|
69
|
+
with contextlib.suppress(Exception):
|
|
71
70
|
flash(request, detail, category="error")
|
|
72
71
|
if extras and len(extras) >= 1:
|
|
73
72
|
message = extras[0]
|
|
@@ -75,8 +74,9 @@ def exception_to_http_response(request: Request[UserT, AuthT, StateT], exc: Exce
|
|
|
75
74
|
error_detail = cast("str", message.get("message", detail)) # type: ignore[union-attr] # pyright: ignore[reportUnknownMemberType,reportUnknownArgumentType]
|
|
76
75
|
match = FIELD_ERR_RE.search(error_detail)
|
|
77
76
|
field = match.group(1) if match else default_field
|
|
78
|
-
if isinstance(message, dict)
|
|
79
|
-
|
|
77
|
+
if isinstance(message, dict):
|
|
78
|
+
with contextlib.suppress(Exception):
|
|
79
|
+
error(request, field, error_detail)
|
|
80
80
|
if status_code in {HTTP_422_UNPROCESSABLE_ENTITY, HTTP_400_BAD_REQUEST} or isinstance(
|
|
81
81
|
exc,
|
|
82
82
|
PermissionDeniedException,
|
|
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
|
|
|
15
15
|
StateT,
|
|
16
16
|
UserT,
|
|
17
17
|
)
|
|
18
|
-
from litestar.types import ASGIApp
|
|
18
|
+
from litestar.types import ASGIApp, Receive, Scope, Send
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
async def redirect_on_asset_version_mismatch(request: Request[UserT, AuthT, StateT]) -> InertiaRedirect | None:
|
|
@@ -32,10 +32,6 @@ async def redirect_on_asset_version_mismatch(request: Request[UserT, AuthT, Stat
|
|
|
32
32
|
return InertiaRedirect(request, redirect_to=str(request.url))
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
if TYPE_CHECKING:
|
|
36
|
-
from litestar.types import Receive, Scope, Send
|
|
37
|
-
|
|
38
|
-
|
|
39
35
|
class InertiaMiddleware(AbstractMiddleware):
|
|
40
36
|
def __init__(self, app: ASGIApp) -> None:
|
|
41
37
|
super().__init__(app)
|
|
@@ -69,6 +69,11 @@ class InertiaDetails:
|
|
|
69
69
|
"""Partial Data Reload."""
|
|
70
70
|
return self._get_header_value(InertiaHeaders.PARTIAL_DATA)
|
|
71
71
|
|
|
72
|
+
@cached_property
|
|
73
|
+
def referer(self) -> str | None:
|
|
74
|
+
"""Partial Data Reload."""
|
|
75
|
+
return self._get_header_value(InertiaHeaders.REFERER)
|
|
76
|
+
|
|
72
77
|
@cached_property
|
|
73
78
|
def is_partial_render(self) -> bool:
|
|
74
79
|
"""Is Partial Data Reload."""
|
|
@@ -34,6 +34,7 @@ if TYPE_CHECKING:
|
|
|
34
34
|
from litestar.connection.base import AuthT, StateT, UserT
|
|
35
35
|
from litestar.types import ResponseCookies, ResponseHeaders, TypeEncodersMap
|
|
36
36
|
|
|
37
|
+
from litestar_vite.inertia.request import InertiaRequest
|
|
37
38
|
from litestar_vite.inertia.routes import Routes
|
|
38
39
|
|
|
39
40
|
from .plugin import InertiaPlugin
|
|
@@ -339,8 +340,12 @@ class InertiaBack(Redirect):
|
|
|
339
340
|
"""Initialize external redirect, Set status code to 409 (required by Inertia),
|
|
340
341
|
and pass redirect url.
|
|
341
342
|
"""
|
|
343
|
+
referer = request.headers.get("referer", str(request.base_url))
|
|
344
|
+
inertia_enabled = getattr(request, "inertia_enabled", False) or getattr(request, "is_inertia", False)
|
|
345
|
+
if inertia_enabled:
|
|
346
|
+
referer = cast("InertiaRequest[Any, Any, Any]", request).inertia.referer or referer
|
|
342
347
|
super().__init__(
|
|
343
|
-
path=request.headers.get("
|
|
348
|
+
path=request.headers.get("referer", str(request.base_url)),
|
|
344
349
|
status_code=HTTP_307_TEMPORARY_REDIRECT if request.method == "GET" else HTTP_303_SEE_OTHER,
|
|
345
350
|
cookies=request.cookies,
|
|
346
351
|
**kwargs,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{litestar_vite-0.2.1 → litestar_vite-0.2.2}/examples/inertia/public/assets/styles-B8hX6ha2.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/public/assets/main-l0sNRNKZ.js
RENAMED
|
File without changes
|
{litestar_vite-0.2.1 → litestar_vite-0.2.2}/tests/test_app/web/public/assets/styles-l0sNRNKZ.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|