@omniaibot/win-x64 0.3.11 → 1.1.0
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.
- package/bin/omnibot-windows-x64/VERSION +1 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/SKILL.md +173 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/anti-patterns.md +29 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/command-reference.md +579 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/debugging-and-evidence.md +95 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/fallback-operations.md +157 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/operation-patterns.md +369 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/runtime-and-status.md +89 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/session-and-tabs.md +148 -0
- package/bin/{omnibot-win-x64 → omnibot-windows-x64}/omnibot-windows-x64.exe +0 -0
- package/package.json +5 -2
- package/bin/omnibot-win-x64/VERSION +0 -1
- package/bin/omnibot-win-x64/omnibot/skills/omnibot/SKILL.md +0 -159
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/81d243bd2c585b0f4821__mypyc.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_asyncio.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_bz2.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_cffi_backend.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_ctypes.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_decimal.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_hashlib.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_lzma.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_multiprocessing.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_overlapped.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_queue.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_socket.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_ssl.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_uuid.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_wmi.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/certifi/cacert.pem +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/charset_normalizer/cd.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/charset_normalizer/md.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/cryptography/hazmat/bindings/_rust.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/ffi.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/libbz2.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/libcrypto-3-x64.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/libexpat.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/liblzma.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/libmpdec-4.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/libssl-3-x64.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/omnibot/sop/tmwebdriver_sop.md +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/omnibot/sop/vue3_component_sop.md +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/pyexpat.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/python3.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/python313.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/select.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/unicodedata.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/vcruntime140.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/zlib.dll +0 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Sessions and Tabs
|
|
2
|
+
|
|
3
|
+
Sessions and tabs are core reliability concepts, not advanced usage.
|
|
4
|
+
|
|
5
|
+
## Session First
|
|
6
|
+
|
|
7
|
+
`OMNIBOT_SESSION_TOKEN` is mandatory for every workflow.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
OMNIBOT_SESSION_TOKEN=research omnibot tabs
|
|
11
|
+
OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The same token keeps one workflow isolated. Different tokens prevent independent agents from sharing default state.
|
|
15
|
+
|
|
16
|
+
## Tab Explicit
|
|
17
|
+
|
|
18
|
+
`--tab-id <TAB_ID>` is mandatory for every page-state command.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot get url --tab-id <TAB_ID>
|
|
22
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
|
|
23
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot get url --tab-id <TAB_ID>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Do not rely on default tab, active tab, current tab, or previous targeting state.
|
|
27
|
+
|
|
28
|
+
## Why Both
|
|
29
|
+
|
|
30
|
+
- Session = workflow isolation.
|
|
31
|
+
- Tab ID = page targeting.
|
|
32
|
+
|
|
33
|
+
Session alone does not prove which page receives a command. Tab ID alone does not isolate concurrent agents. Use both.
|
|
34
|
+
|
|
35
|
+
## Ref Scope
|
|
36
|
+
|
|
37
|
+
`@eN` refs are tab-scoped.
|
|
38
|
+
|
|
39
|
+
Never reuse `@eN` across tabs. Never assume a ref remains valid after navigation, reload, major DOM changes, or a different snapshot.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
|
|
43
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
|
|
44
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Multi-Agent Pattern
|
|
48
|
+
|
|
49
|
+
Agent A:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
OMNIBOT_SESSION_TOKEN=research
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Agent B:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
OMNIBOT_SESSION_TOKEN=checkout
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Agent C:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
OMNIBOT_SESSION_TOKEN=debug
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Each agent must:
|
|
68
|
+
|
|
69
|
+
1. Set a stable token.
|
|
70
|
+
2. Discover or create a tab.
|
|
71
|
+
3. Save the tab id.
|
|
72
|
+
4. Pass `--tab-id <TAB_ID>` on every page-state command.
|
|
73
|
+
5. Run `snapshot` -> action -> verify, or `get/is` -> action -> `get/is`.
|
|
74
|
+
|
|
75
|
+
Example:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
OMNIBOT_SESSION_TOKEN=research omnibot tab new https://example.com --label research
|
|
79
|
+
OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
|
|
80
|
+
OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## switch-tab
|
|
84
|
+
|
|
85
|
+
`switch-tab` is only for casual single-step usage.
|
|
86
|
+
|
|
87
|
+
Do not build a multi-step workflow on `switch-tab`. It creates implicit state and can be stale or crossed by concurrent agents.
|
|
88
|
+
|
|
89
|
+
Bad:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
OMNIBOT_SESSION_TOKEN=research omnibot switch-tab 123
|
|
93
|
+
OMNIBOT_SESSION_TOKEN=research omnibot click @e4
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Good:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
OMNIBOT_SESSION_TOKEN=research omnibot click --tab-id 123 @e4
|
|
100
|
+
OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id 123
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## focus-tab
|
|
104
|
+
|
|
105
|
+
Use `focus-tab` only when the user needs to see the browser UI.
|
|
106
|
+
|
|
107
|
+
It is not a reliable targeting primitive for agent workflows.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
OMNIBOT_SESSION_TOKEN=demo omnibot focus-tab 123
|
|
111
|
+
OMNIBOT_SESSION_TOKEN=demo omnibot snapshot -i --tab-id 123
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## browser claim/release
|
|
115
|
+
|
|
116
|
+
Use `browser claim` and `browser release` in multi-browser or multi-runtime scenarios where an agent must explicitly own or release a browser tab.
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
OMNIBOT_SESSION_TOKEN=research omnibot browser list
|
|
120
|
+
OMNIBOT_SESSION_TOKEN=research omnibot browser current
|
|
121
|
+
OMNIBOT_SESSION_TOKEN=research omnibot browser claim 123
|
|
122
|
+
OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id 123
|
|
123
|
+
OMNIBOT_SESSION_TOKEN=research omnibot browser release 123
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Claiming does not replace `--tab-id`. It only documents or coordinates ownership.
|
|
127
|
+
|
|
128
|
+
## visibility
|
|
129
|
+
|
|
130
|
+
Visibility controls where automation runs:
|
|
131
|
+
|
|
132
|
+
- `visible`: controls the user's already-open real browser tabs and preserves visible session state.
|
|
133
|
+
- `background`: avoids foregrounding tabs unless requested.
|
|
134
|
+
- `dedicated-profile`: launches or uses a separate profile.
|
|
135
|
+
- `headless`: uses a headless browser context.
|
|
136
|
+
- `launch`: starts a dedicated-profile or headless browser with an explicit user data dir.
|
|
137
|
+
|
|
138
|
+
Examples:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
omnibot visibility status
|
|
142
|
+
omnibot visibility set visible
|
|
143
|
+
omnibot visibility set background
|
|
144
|
+
omnibot visibility set headless --user-data-dir /tmp/omnibot-headless
|
|
145
|
+
omnibot visibility launch headless --user-data-dir /tmp/omnibot-headless
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Headless and dedicated-profile modes do not automatically share the user's current tabs or login state. Verify login state before assuming access.
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omniaibot/win-x64",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "omnibot executable for Windows x64",
|
|
5
5
|
"os": [
|
|
6
6
|
"win32"
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
"cpu": [
|
|
9
9
|
"x64"
|
|
10
10
|
],
|
|
11
|
+
"bin": {
|
|
12
|
+
"omnibot": "bin/omnibot-windows-x64/omnibot-windows-x64.exe"
|
|
13
|
+
},
|
|
11
14
|
"files": [
|
|
12
15
|
"bin/"
|
|
13
16
|
],
|
|
@@ -23,4 +26,4 @@
|
|
|
23
26
|
"type": "git",
|
|
24
27
|
"url": "git+https://github.com/DennisJcy/omnibot.git"
|
|
25
28
|
}
|
|
26
|
-
}
|
|
29
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.3.11
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: omnibot
|
|
3
|
-
description: Use when reading, inspecting, navigating, operating, debugging, installing skills, checking daemon status, or troubleshooting the omnibot CLI extension connection.
|
|
4
|
-
compatibility: Requires omnibot v2 CLI daemon and the omnibot Chromium extension connected to 127.0.0.1:18765.
|
|
5
|
-
allowed-tools: Bash
|
|
6
|
-
metadata:
|
|
7
|
-
author: omnibot
|
|
8
|
-
version: "2.0.0"
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# omnibot CLI
|
|
12
|
-
|
|
13
|
-
omnibot connects agents to the user's real Chromium browser session through a local daemon and CLI commands.
|
|
14
|
-
|
|
15
|
-
## Prerequisites
|
|
16
|
-
|
|
17
|
-
- Confirm the extension is connected with `omnibot doctor` or `omnibot tabs`.
|
|
18
|
-
- For browser actions, run commands through Bash and parse the returned JSON.
|
|
19
|
-
- The CLI auto-starts the local daemon. Users do not need to run `omnibot daemon start` for normal CLI operations.
|
|
20
|
-
|
|
21
|
-
## Command Discovery
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
omnibot --help
|
|
25
|
-
omnibot scan --help
|
|
26
|
-
omnibot execute-js --help
|
|
27
|
-
omnibot batch --help
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Install Skills
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
omnibot skills install --agent hermes --profile nuwa
|
|
36
|
-
omnibot skills install --agent opencode
|
|
37
|
-
omnibot skills install --agent claude
|
|
38
|
-
omnibot skills install --agent codex
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Check Runtime
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
omnibot doctor
|
|
45
|
-
omnibot tabs
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Common Failures
|
|
49
|
-
|
|
50
|
-
- Extension not connected: open Chrome or Edge with the omnibot extension loaded and keep an HTTP/HTTPS tab open.
|
|
51
|
-
- Wrong port: align extension Bridge Port with `--ws-port`; default is `18765`.
|
|
52
|
-
- No tabs: open an HTTP or HTTPS page; extension ignores non-scriptable pages.
|
|
53
|
-
- Daemon startup failed: run `omnibot doctor` and check the daemon log path from the error output.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Page Reading
|
|
58
|
-
|
|
59
|
-
Use real browser rendering when normal HTTP fetches cannot see logged-in, client-rendered, or dynamic content.
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
omnibot scan
|
|
63
|
-
omnibot scan --json
|
|
64
|
-
omnibot full-scan --duration 10
|
|
65
|
-
omnibot full-scan --duration 0 --text-only
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
**Selection Rules:**
|
|
69
|
-
- Use `scan` before any action because it does not scroll.
|
|
70
|
-
- Use `full-scan` for read-only article/search/feed pages because it scrolls to trigger lazy loading.
|
|
71
|
-
- Use `--json` when controls, forms, links, or list candidates are needed for a follow-up action.
|
|
72
|
-
- Use `--text-only` when the answer needs prose only and HTML tags would waste tokens.
|
|
73
|
-
|
|
74
|
-
**Search Workflow:**
|
|
75
|
-
```bash
|
|
76
|
-
omnibot navigate 'https://www.google.com/search?q=omnibot+cli'
|
|
77
|
-
omnibot full-scan --duration 5 --text-only
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Page Operation
|
|
83
|
-
|
|
84
|
-
Operate pages only after observing the current viewport.
|
|
85
|
-
|
|
86
|
-
**Required Order:**
|
|
87
|
-
1. Run `omnibot snapshot --json`.
|
|
88
|
-
2. Identify the target control, link, selector, `@eN` reference, or visible text.
|
|
89
|
-
3. Run the smallest operation command.
|
|
90
|
-
4. Run `omnibot snapshot --json` again to verify the page state.
|
|
91
|
-
|
|
92
|
-
**Common Commands:**
|
|
93
|
-
```bash
|
|
94
|
-
omnibot execute-js "document.querySelector('button[type=submit]').click()"
|
|
95
|
-
omnibot execute-js "window.scrollBy(0, 800)"
|
|
96
|
-
omnibot wait "return !!document.querySelector('.loaded')" --timeout 15 --interval 0.5
|
|
97
|
-
omnibot switch-tab <TAB_ID>
|
|
98
|
-
omnibot focus-tab <TAB_ID>
|
|
99
|
-
omnibot click @e11
|
|
100
|
-
omnibot click @e11 --new-tab
|
|
101
|
-
omnibot dblclick @e11
|
|
102
|
-
omnibot dblclick @e11 --new-tab
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**Snapshot and Interaction Order:**
|
|
106
|
-
1. Run `omnibot snapshot --json`.
|
|
107
|
-
2. Find the target `@eN` reference from the snapshot output.
|
|
108
|
-
3. Run `omnibot click @eN`, `omnibot dblclick @eN`, or the matching `--new-tab` variant.
|
|
109
|
-
4. Run `omnibot navigate --same-tab <url>` when only the current tab content should change.
|
|
110
|
-
5. Run `omnibot snapshot --json` again to verify the page changed.
|
|
111
|
-
|
|
112
|
-
**`@eN` Target Rules:**
|
|
113
|
-
- Prefer `@eN` over raw CSS selectors when snapshot output exposes an accessible role/name pair.
|
|
114
|
-
- Use `@eN` for buttons, links, tabs, tree nodes, list items, and other interactive elements returned by snapshot.
|
|
115
|
-
- Use `--new-tab` when the link or action should open in a new browser tab.
|
|
116
|
-
- Use `dblclick` only for folder/list/tree/text editors and similar controls that need a double activation.
|
|
117
|
-
- Use `navigate --same-tab` for in-page navigation or soft navigations that reuse the current tab.
|
|
118
|
-
- Run `omnibot snapshot --json` after the interaction to confirm the expected DOM/page state change.
|
|
119
|
-
|
|
120
|
-
**Rules:**
|
|
121
|
-
- Do not use `execute-js` for ordinary page reading.
|
|
122
|
-
- Prefer `wait` over sleeping in shell commands.
|
|
123
|
-
- Use `focus-tab` only when the user needs to see that tab in Chrome.
|
|
124
|
-
- Use `switch-tab` when only the CLI target tab should change.
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Debugging
|
|
129
|
-
|
|
130
|
-
Use debug commands when scan output is insufficient or when browser-level APIs are required.
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
omnibot screenshot -o /tmp/omni-shot.png
|
|
134
|
-
omnibot batch --commands-json '[{"cmd":"cdp","method":"DOM.getDocument","params":{"depth":1}}]'
|
|
135
|
-
omnibot execute-js "return location.href"
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
**Batch Rules:**
|
|
139
|
-
- Use `batch` for multiple CDP or extension commands that share one target tab.
|
|
140
|
-
- Pass `--tab-id` when the target is not the active CLI tab.
|
|
141
|
-
- Keep batch JSON valid and quote it with single quotes in shell commands.
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
## Command Reference
|
|
146
|
-
|
|
147
|
-
| Former MCP tool | CLI command | Default output |
|
|
148
|
-
| --- | --- | --- |
|
|
149
|
-
| `browser_get_tabs` | `omnibot tabs` | JSON |
|
|
150
|
-
| `browser_scan` | `omnibot scan [--json]` | Text |
|
|
151
|
-
| `browser_full_scan` | `omnibot full-scan [--json]` | Text |
|
|
152
|
-
| `browser_execute_js` | `omnibot execute-js <script>` | JSON |
|
|
153
|
-
| `browser_switch_tab` | `omnibot switch-tab <tab_id>` | JSON |
|
|
154
|
-
| `browser_focus_tab` | `omnibot focus-tab <tab_id>` | JSON |
|
|
155
|
-
| `browser_batch` | `omnibot batch --commands-json '<json>'` | JSON |
|
|
156
|
-
| `browser_wait` | `omnibot wait <condition_js>` | JSON |
|
|
157
|
-
| `browser_navigate` | `omnibot navigate <url>` | JSON |
|
|
158
|
-
| `browser_screenshot` | `omnibot screenshot [-o path]` | JSON |
|
|
159
|
-
| `get_license_status` | `omnibot license status` | JSON |
|
|
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
|