uipath 2.0.7__tar.gz → 2.0.9__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 uipath might be problematic. Click here for more details.
- {uipath-2.0.7 → uipath-2.0.9}/.github/workflows/ci.yml +4 -0
- uipath-2.0.9/.github/workflows/commitlint.yml +26 -0
- {uipath-2.0.7 → uipath-2.0.9}/PKG-INFO +1 -1
- {uipath-2.0.7 → uipath-2.0.9}/pyproject.toml +1 -1
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_auth/_portal_service.py +1 -1
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_auth/auth_config.json +2 -2
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_runtime/_contracts.py +3 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/cli_init.py +1 -1
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/cli_pack.py +29 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/__init__.py +6 -1
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/interrupt_models.py +6 -0
- {uipath-2.0.7 → uipath-2.0.9}/tests/cli/test_init.py +1 -1
- {uipath-2.0.7 → uipath-2.0.9}/uv.lock +1 -1
- uipath-2.0.7/.github/workflows/commitlint.yml +0 -12
- {uipath-2.0.7 → uipath-2.0.9}/.cursorrules +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.editorconfig +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.gitattributes +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.github/workflows/build.yml +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.github/workflows/cd.yml +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.github/workflows/lint.yml +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.github/workflows/test.yml +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.gitignore +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.pre-commit-config.yaml +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.python-version +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.vscode/extensions.json +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/.vscode/settings.json +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/CONTRIBUTING.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/LICENSE +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/README.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/CONTRIBUTING.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/actions.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/assets/uipath-logo.svg +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/assets.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/buckets.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/connections.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/context_grounding.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/getting_started_agent.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/getting_started_cli.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/getting_started_cloud.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/getting_started_sdk.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/index.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/jobs.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/processes.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/queues.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/docs/sdk.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/justfile +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/mkdocs.yml +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/py.typed +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/__init__.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/README.md +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/__init__.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_auth/_auth_server.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_auth/_models.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_auth/_oidc_utils.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_auth/_utils.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_auth/index.html +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_auth/localhost.crt +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_auth/localhost.key +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_runtime/_logging.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_runtime/_runtime.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_templates/.psmdcp.template +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_templates/.rels.template +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_templates/[Content_Types].xml.template +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_templates/main.py.template +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_templates/package.nuspec.template +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_utils/_common.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_utils/_input_args.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/_utils/_parse_ast.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/cli_auth.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/cli_deploy.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/cli_new.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/cli_publish.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/cli_run.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_cli/middlewares.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_config.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_execution_context.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_folder_context.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/__init__.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/_base_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/actions_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/api_client.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/assets_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/buckets_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/connections_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/connections_service.pyi +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/context_grounding_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/folder_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/jobs_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/llm_gateway_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/processes_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_services/queues_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_uipath.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_utils/__init__.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_utils/_endpoint.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_utils/_infer_bindings.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_utils/_logs.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_utils/_request_override.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_utils/_request_spec.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_utils/_user_agent.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/_utils/constants.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/action_schema.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/actions.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/assets.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/connections.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/context_grounding.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/context_grounding_index.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/exceptions.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/job.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/llm_gateway.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/processes.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/models/queues.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/src/uipath/py.typed +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/tests/__init__.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/tests/conftest.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/tests/sdk/services/test_llm_integration.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/tests/sdk/services/test_llm_service.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/tests/sdk/services/test_uipath_llm_integration.py +0 -0
- {uipath-2.0.7 → uipath-2.0.9}/tests/sdk/test_config.py +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: Commit Lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_call:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
commit-lint:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
steps:
|
|
10
|
+
- name: Checkout
|
|
11
|
+
uses: actions/checkout@v2
|
|
12
|
+
with:
|
|
13
|
+
fetch-depth: 0
|
|
14
|
+
|
|
15
|
+
- name: Lint commits
|
|
16
|
+
uses: wagoid/commitlint-github-action@v3
|
|
17
|
+
|
|
18
|
+
- name: Block fixup commits
|
|
19
|
+
if: ${{ github.event_name != 'merge_group' }}
|
|
20
|
+
uses: 13rac1/block-fixup-merge-action@v2.0.0
|
|
21
|
+
|
|
22
|
+
- name: Block Merge Commits
|
|
23
|
+
if: ${{ github.event_name != 'merge_group' }}
|
|
24
|
+
uses: Morishiri/block-merge-commits-action@v1.0.1
|
|
25
|
+
with:
|
|
26
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: uipath
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.9
|
|
4
4
|
Summary: Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools.
|
|
5
5
|
Project-URL: Homepage, https://uipath.com
|
|
6
6
|
Project-URL: Repository, https://github.com/UiPath/uipath-python
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "uipath"
|
|
3
|
-
version = "2.0.
|
|
3
|
+
version = "2.0.9"
|
|
4
4
|
description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
|
|
5
5
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -158,6 +158,6 @@ def select_tenant(
|
|
|
158
158
|
{
|
|
159
159
|
"UIPATH_URL": f"https://{domain if domain else 'alpha'}.uipath.com/{account_name}/{tenant_name}",
|
|
160
160
|
"UIPATH_TENANT_ID": tenants_and_organizations["tenants"][tenant_idx]["id"],
|
|
161
|
-
"
|
|
161
|
+
"UIPATH_ORGANIZATION_ID": tenants_and_organizations["organization"]["id"],
|
|
162
162
|
}
|
|
163
163
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"client_id": "36dea5b8-e8bb-423d-8e7b-c808df8f1c00",
|
|
3
3
|
"redirect_uri": "https://localhost:__PY_REPLACE_PORT__/oidc/login",
|
|
4
|
-
"scope": "offline_access OrchestratorApiUserAccess ConnectionService DataService DocumentUnderstanding EnterpriseContextService Directory JamJamApi LLMGateway LLMOps OMS",
|
|
4
|
+
"scope": "offline_access OrchestratorApiUserAccess ConnectionService DataService DocumentUnderstanding EnterpriseContextService Directory JamJamApi LLMGateway LLMOps OMS RCS.FolderAuthorization",
|
|
5
5
|
"port": 8104
|
|
6
|
-
}
|
|
6
|
+
}
|
|
@@ -46,6 +46,9 @@ class UiPathResumeTrigger(BaseModel):
|
|
|
46
46
|
)
|
|
47
47
|
item_key: Optional[str] = Field(default=None, alias="itemKey")
|
|
48
48
|
api_resume: Optional[UiPathApiTrigger] = Field(default=None, alias="apiResume")
|
|
49
|
+
folder_path: Optional[str] = Field(default=None, alias="folderPath")
|
|
50
|
+
folder_key: Optional[str] = Field(default=None, alias="folderKey")
|
|
51
|
+
payload: Optional[Any] = Field(default=None, alias="interruptObject")
|
|
49
52
|
|
|
50
53
|
model_config = {"populate_by_name": True}
|
|
51
54
|
|
|
@@ -20,7 +20,7 @@ def generate_env_file(target_directory):
|
|
|
20
20
|
click.echo(f"Created {relative_path} file.")
|
|
21
21
|
with open(env_path, "w") as f:
|
|
22
22
|
f.write("UIPATH_ACCESS_TOKEN=YOUR_TOKEN_HERE\n")
|
|
23
|
-
f.write("UIPATH_URL=https://
|
|
23
|
+
f.write("UIPATH_URL=https://cloud.uipath.com/ACCOUNT_NAME/TENANT_NAME\n")
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def get_user_script(directory: str, entrypoint: Optional[str] = None) -> Optional[str]:
|
|
@@ -292,6 +292,21 @@ def pack_fn(projectName, description, entryPoints, version, authors, directory):
|
|
|
292
292
|
def read_toml_project(file_path: str) -> dict[str, any]:
|
|
293
293
|
with open(file_path, "rb") as f:
|
|
294
294
|
content = tomllib.load(f)
|
|
295
|
+
if "project" not in content:
|
|
296
|
+
raise Exception("pyproject.toml is missing the required field: project")
|
|
297
|
+
if "name" not in content["project"]:
|
|
298
|
+
raise Exception(
|
|
299
|
+
"pyproject.toml is missing the required field: project.name"
|
|
300
|
+
)
|
|
301
|
+
if "description" not in content["project"]:
|
|
302
|
+
raise Exception(
|
|
303
|
+
"pyproject.toml is missing the required field: project.description"
|
|
304
|
+
)
|
|
305
|
+
if "version" not in content["project"]:
|
|
306
|
+
raise Exception(
|
|
307
|
+
"pyproject.toml is missing the required field: project.version"
|
|
308
|
+
)
|
|
309
|
+
|
|
295
310
|
return {
|
|
296
311
|
"name": content["project"]["name"],
|
|
297
312
|
"description": content["project"]["description"],
|
|
@@ -320,6 +335,20 @@ def pack(root):
|
|
|
320
335
|
)
|
|
321
336
|
return
|
|
322
337
|
config = check_config(root)
|
|
338
|
+
if not config["project_name"] or config["project_name"].strip() == "":
|
|
339
|
+
raise Exception("Project name cannot be empty")
|
|
340
|
+
|
|
341
|
+
if not config["description"] or config["description"].strip() == "":
|
|
342
|
+
raise Exception("Project description cannot be empty")
|
|
343
|
+
|
|
344
|
+
invalid_chars = ["&", "<", ">", '"', "'", ";"]
|
|
345
|
+
for char in invalid_chars:
|
|
346
|
+
if char in config["project_name"]:
|
|
347
|
+
raise Exception(f"Project name contains invalid character: '{char}'")
|
|
348
|
+
|
|
349
|
+
for char in invalid_chars:
|
|
350
|
+
if char in config["description"]:
|
|
351
|
+
raise Exception(f"Project description contains invalid character: '{char}'")
|
|
323
352
|
click.echo(
|
|
324
353
|
f"Packaging project {config['project_name']}:{version or config['version']} description {config['description']} authored by {config['authors']}"
|
|
325
354
|
)
|
|
@@ -4,7 +4,12 @@ from .assets import UserAsset
|
|
|
4
4
|
from .connections import Connection, ConnectionToken
|
|
5
5
|
from .context_grounding import ContextGroundingQueryResponse
|
|
6
6
|
from .exceptions import IngestionInProgressException
|
|
7
|
-
from .interrupt_models import
|
|
7
|
+
from .interrupt_models import (
|
|
8
|
+
CreateAction,
|
|
9
|
+
InvokeProcess,
|
|
10
|
+
WaitAction,
|
|
11
|
+
WaitJob,
|
|
12
|
+
)
|
|
8
13
|
from .job import Job
|
|
9
14
|
from .processes import Process
|
|
10
15
|
from .queues import (
|
|
@@ -8,11 +8,15 @@ from .job import Job
|
|
|
8
8
|
|
|
9
9
|
class InvokeProcess(BaseModel):
|
|
10
10
|
name: str
|
|
11
|
+
process_folder_path: Optional[str] = None
|
|
12
|
+
process_folder_key: Optional[str] = None
|
|
11
13
|
input_arguments: Optional[Dict[str, Any]]
|
|
12
14
|
|
|
13
15
|
|
|
14
16
|
class WaitJob(BaseModel):
|
|
15
17
|
job: Job
|
|
18
|
+
process_folder_path: Optional[str] = None
|
|
19
|
+
process_folder_key: Optional[str] = None
|
|
16
20
|
|
|
17
21
|
|
|
18
22
|
class CreateAction(BaseModel):
|
|
@@ -28,3 +32,5 @@ class CreateAction(BaseModel):
|
|
|
28
32
|
|
|
29
33
|
class WaitAction(BaseModel):
|
|
30
34
|
action: Action
|
|
35
|
+
app_folder_path: Optional[str] = None
|
|
36
|
+
app_folder_key: Optional[str] = None
|
|
@@ -23,7 +23,7 @@ def test_init_env_file_creation(runner: CliRunner, temp_dir: str) -> None:
|
|
|
23
23
|
content = f.read()
|
|
24
24
|
assert "UIPATH_ACCESS_TOKEN=YOUR_TOKEN_HERE" in content
|
|
25
25
|
assert (
|
|
26
|
-
"UIPATH_URL=https://
|
|
26
|
+
"UIPATH_URL=https://cloud.uipath.com/ACCOUNT_NAME/TENANT_NAME"
|
|
27
27
|
in content
|
|
28
28
|
)
|
|
29
29
|
|
|
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
|
|
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
|