portacode 1.4.16.dev4__tar.gz → 1.4.16.dev5__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.
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/PKG-INFO +1 -1
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/_version.py +2 -2
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md +18 -12
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/proxmox_infra.py +65 -8
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode.egg-info/PKG-INFO +1 -1
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/.claude/agents/communication-manager.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/.claude/settings.local.json +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/.gitignore +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/.gitmodules +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/LICENSE +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/MANIFEST.in +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/Makefile +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/backup.sh +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/connect.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/connect.sh +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/docker-compose.yaml +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/docs/images/device-transfer-button.png +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/docs/images/device-transfer-modal.png +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/docs/images/pair-device-button.png +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/docs/images/pairing-request.png +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/docs/images/student-workspace.png +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/simple_device/Dockerfile +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/simple_device/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/simple_device/data/device-01/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/simple_device/data/device-01/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/simple_device/docker-compose.yaml +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/Dockerfile +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/.local/share/portacode/run/gateway.pid +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/.gitignore +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/db.sqlite3 +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/settings.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/urls.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/__pycache__/wsgi.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/admin.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/apps.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/menu.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/models.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/urls.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/__pycache__/views.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/migrations/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-01/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-02/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-03/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-04/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-05/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-06/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-07/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-08/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-09/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/.local/share/portacode/keys/id_portacode +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/.local/share/portacode/keys/id_portacode.pub +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/data/student-10/workspace/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/docker-compose.yaml +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/galactic_bakeshop/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/galactic_bakeshop/asgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/galactic_bakeshop/settings.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/galactic_bakeshop/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/galactic_bakeshop/wsgi.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/manage.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/templates/treats/home.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/treats/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/treats/admin.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/treats/apps.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/treats/menu.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/treats/migrations/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/treats/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/treats/tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/treats/urls.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/initial_content/treats/views.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/examples/workshop_fleet/instructions/WELCOME.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/__main__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/cli.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/client.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/base.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/chunked_content.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/diff_handlers.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/file_handlers.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/project_aware_file_handlers.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/project_state/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/project_state/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/project_state/file_system_watcher.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/project_state/git_manager.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/project_state/handlers.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/project_state/manager.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/project_state/models.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/project_state/utils.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/project_state_handlers.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/registry.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/session.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/system_handlers.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/tab_factory.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/terminal_handlers.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/test_proxmox_infra.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/update_handler.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/multiplex.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/terminal.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/data.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/keypair.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/__pycache__/__init__.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/__pycache__/link_capture_wrapper.cpython-311.pyc +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/elinks +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/gio-open +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/gnome-open +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/gvfs-open +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/kde-open +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/kfmclient +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/link_capture_exec.sh +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/link_capture_wrapper.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/links +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/links2 +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/lynx +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/mate-open +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/netsurf +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/sensible-browser +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/w3m +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/x-www-browser +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/link_capture/bin/xdg-open +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/logging_categories.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/pairing.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/service.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/static/js/test-ntp-clock.html +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/static/js/utils/ntp-clock.js +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/utils/NTP_ARCHITECTURE.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/utils/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/utils/diff_apply.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/utils/diff_renderer.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/utils/ntp_clock.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode.egg-info/SOURCES.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode.egg-info/dependency_links.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode.egg-info/entry_points.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode.egg-info/requires.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode.egg-info/top_level.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/pyproject.toml +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/restore.sh +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/run_tests.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/setup.cfg +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/setup.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test.sh +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/test_device_online.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/test_file_operations.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/test_git_status_ui.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/test_login_flow.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/test_navigate_testing_folder.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/test_play_store_screenshots.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/test_terminal_buffer_performance.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/test_terminal_interaction.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/test_terminal_loading_race_condition.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_modules/test_terminal_start.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/test_request_id.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/.env.example +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/README.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/cli.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/core/__init__.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/core/base_test.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/core/cli_manager.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/core/hierarchical_runner.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/core/playwright_manager.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/core/runner.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/core/shared_cli_manager.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/core/test_discovery.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/testing_framework/requirements.txt +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/UI_UX/opening_a_file_on_desktop_results_in_nothing.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/agent_context_management.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/django_server_time_sync.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/issues/device_performance_degradation.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/issues/git_data_not_captured_in_proxmox.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/issues/indefinite_resource_loading.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/issues/portacode_service_silently_down.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/issues/premature_terminal_exit.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/issues/project_cpu_hotspots.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/issues/terminals_exit_upon_starting.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/issues/wrong_item_classification_on_client_side.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/todo/smartphone_terminal_input_frustrations.md +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/tools/generate_play_store_assets.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/tools/pairing_tester.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/tools/run_screenshot_suite.sh +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/tools/test_python_ntp_clock.py +0 -0
- {portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/validate.sh +0 -0
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '1.4.16.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 4, 16, '
|
|
31
|
+
__version__ = version = '1.4.16.dev5'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 4, 16, 'dev5')
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
{portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md
RENAMED
|
@@ -1152,18 +1152,24 @@ Provides system information in response to a `system_info` action. Handled by [`
|
|
|
1152
1152
|
* `cpu_share` (number): vCPU-equivalent share requested at creation.
|
|
1153
1153
|
* `status` (string): Lowercase lifecycle status (e.g., `running`, `stopped`, `deleted`).
|
|
1154
1154
|
* `created_at` (string|null): ISO timestamp recorded when the CT was provisioned.
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1155
|
+
* `managed` (boolean): `true` for Portacode-managed entries.
|
|
1156
|
+
* `unmanaged_containers` (array[object]): Facts about containers Portacode did not provision; fields mirror the managed list but are marked `managed=false`.
|
|
1157
|
+
* `unmanaged_count` (integer): Number of unmanaged containers detected on the node.
|
|
1158
|
+
* `allocated_ram_mib` (integer): Total RAM reserved by both managed and unmanaged containers.
|
|
1159
|
+
* `allocated_disk_gib` (integer): Total disk reserved by both managed and unmanaged containers.
|
|
1160
|
+
* `allocated_cpu_share` (number): Total CPU shares requested by both managed and unmanaged containers.
|
|
1161
|
+
* `available_ram_mib` (integer|null): Remaining RAM after subtracting all reservations from the host total (null when unavailable).
|
|
1162
|
+
* `available_disk_gib` (integer|null): Remaining disk GB after subtracting allocations from the host total.
|
|
1163
|
+
* `available_cpu_share` (number|null): Remaining CPU shares after allocations.
|
|
1164
|
+
* `host_total_ram_mib` (integer|null): Host memory capacity observed via Proxmox.
|
|
1165
|
+
* `host_total_disk_gib` (integer|null): Host disk capacity observed via Proxmox.
|
|
1166
|
+
* `host_total_cpu_cores` (integer|null): Number of CPU cores reported by Proxmox.
|
|
1167
|
+
* `default_storage` (string|null): Storage pool name selected during infrastructure configuration.
|
|
1168
|
+
* `default_storage_snapshot` (object|null): Fresh stats for the default storage pool:
|
|
1169
|
+
* `storage` (string): Storage pool identifier.
|
|
1170
|
+
* `total_gib` (integer|null): Capacity of the storage pool.
|
|
1171
|
+
* `avail_gib` (integer|null): Available space remaining.
|
|
1172
|
+
* `used_gib` (integer|null): Space already consumed.
|
|
1167
1173
|
* `portacode_version` (string): Installed CLI version returned by `portacode.__version__`.
|
|
1168
1174
|
|
|
1169
1175
|
### `proxmox_infra_configured`
|
{portacode-1.4.16.dev4 → portacode-1.4.16.dev5}/portacode/connection/handlers/proxmox_infra.py
RENAMED
|
@@ -259,6 +259,12 @@ def _bytes_to_gib(value: Any) -> int:
|
|
|
259
259
|
return int(round(_normalize_bytes(value) / (1024**3)))
|
|
260
260
|
|
|
261
261
|
|
|
262
|
+
def _normalize_storage_name(name: Any) -> str:
|
|
263
|
+
if not name:
|
|
264
|
+
return ""
|
|
265
|
+
return str(name).strip().lower()
|
|
266
|
+
|
|
267
|
+
|
|
262
268
|
def _parse_bool_flag(value: Any) -> bool:
|
|
263
269
|
if isinstance(value, bool):
|
|
264
270
|
return value
|
|
@@ -486,11 +492,38 @@ def _build_unmanaged_container_entry(ct: Dict[str, Any], cfg: Dict[str, Any], vm
|
|
|
486
492
|
}
|
|
487
493
|
|
|
488
494
|
|
|
495
|
+
def _get_storage_snapshot(proxmox: Any, node: str, storage_name: str | None) -> Dict[str, Any] | None:
|
|
496
|
+
if not storage_name:
|
|
497
|
+
return None
|
|
498
|
+
try:
|
|
499
|
+
storage = proxmox.nodes(node).storage(storage_name).status.get()
|
|
500
|
+
except Exception as exc:
|
|
501
|
+
logger.debug("Unable to read storage status %s:%s: %s", node, storage_name, exc)
|
|
502
|
+
return None
|
|
503
|
+
total_bytes = storage.get("total")
|
|
504
|
+
avail_bytes = storage.get("avail")
|
|
505
|
+
used_bytes = storage.get("used")
|
|
506
|
+
return {
|
|
507
|
+
"storage": storage_name,
|
|
508
|
+
"total_gib": _bytes_to_gib(total_bytes) if total_bytes is not None else None,
|
|
509
|
+
"avail_gib": _bytes_to_gib(avail_bytes) if avail_bytes is not None else None,
|
|
510
|
+
"used_gib": _bytes_to_gib(used_bytes) if used_bytes is not None else None,
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
def _storage_matches_default(storage_name: Any, default_storage: str | None) -> bool:
|
|
516
|
+
if not default_storage:
|
|
517
|
+
return True
|
|
518
|
+
return _normalize_storage_name(storage_name) == _normalize_storage_name(default_storage)
|
|
519
|
+
|
|
489
520
|
|
|
490
521
|
def _build_managed_containers_summary(
|
|
491
522
|
records: List[Dict[str, Any]],
|
|
492
523
|
unmanaged_records: List[Dict[str, Any]],
|
|
493
524
|
node_status: Dict[str, Any] | None,
|
|
525
|
+
storage_snapshot: Dict[str, Any] | None,
|
|
526
|
+
default_storage: str | None,
|
|
494
527
|
) -> Dict[str, Any]:
|
|
495
528
|
managed_containers: List[Dict[str, Any]] = []
|
|
496
529
|
total_ram = 0
|
|
@@ -518,6 +551,7 @@ def _build_managed_containers_summary(
|
|
|
518
551
|
"created_at": record.get("created_at"),
|
|
519
552
|
"status": status,
|
|
520
553
|
"managed": True,
|
|
554
|
+
"uses_default_storage": _storage_matches_default(record.get("storage"), default_storage),
|
|
521
555
|
}
|
|
522
556
|
)
|
|
523
557
|
|
|
@@ -526,7 +560,12 @@ def _build_managed_containers_summary(
|
|
|
526
560
|
for entry in unmanaged_records
|
|
527
561
|
if entry.get("reserve_on_boot")
|
|
528
562
|
)
|
|
529
|
-
unmanaged_total_disk = sum(
|
|
563
|
+
unmanaged_total_disk = sum(
|
|
564
|
+
_to_int(entry.get("disk_gib"))
|
|
565
|
+
for entry in unmanaged_records
|
|
566
|
+
if entry.get("reserve_on_boot")
|
|
567
|
+
and _storage_matches_default(entry.get("storage"), default_storage)
|
|
568
|
+
)
|
|
530
569
|
unmanaged_total_cpu = sum(
|
|
531
570
|
_to_float(entry.get("cpu_share"))
|
|
532
571
|
for entry in unmanaged_records
|
|
@@ -537,7 +576,12 @@ def _build_managed_containers_summary(
|
|
|
537
576
|
allocated_disk = total_disk + unmanaged_total_disk
|
|
538
577
|
allocated_cpu = total_cpu_share + unmanaged_total_cpu
|
|
539
578
|
|
|
540
|
-
|
|
579
|
+
host_ram_node, host_disk_node, host_cpu_node = _extract_host_totals(node_status)
|
|
580
|
+
storage_host_disk = storage_snapshot.get("total_gib") if storage_snapshot else None
|
|
581
|
+
host_ram = host_ram_node
|
|
582
|
+
host_disk = storage_host_disk if storage_host_disk is not None else host_disk_node
|
|
583
|
+
host_cpu = host_cpu_node
|
|
584
|
+
|
|
541
585
|
|
|
542
586
|
return {
|
|
543
587
|
"updated_at": datetime.utcnow().isoformat() + "Z",
|
|
@@ -557,6 +601,8 @@ def _build_managed_containers_summary(
|
|
|
557
601
|
"host_total_ram_mib": host_ram,
|
|
558
602
|
"host_total_disk_gib": host_disk,
|
|
559
603
|
"host_total_cpu_cores": host_cpu,
|
|
604
|
+
"default_storage": default_storage,
|
|
605
|
+
"default_storage_snapshot": storage_snapshot,
|
|
560
606
|
}
|
|
561
607
|
|
|
562
608
|
|
|
@@ -565,12 +611,15 @@ def _get_managed_containers_summary(force: bool = False) -> Dict[str, Any]:
|
|
|
565
611
|
records: List[Dict[str, Any]],
|
|
566
612
|
config: Dict[str, Any] | None,
|
|
567
613
|
managed_vmids: Set[str],
|
|
568
|
-
|
|
614
|
+
default_storage: str | None,
|
|
615
|
+
) -> Tuple[Dict[str, str], List[Dict[str, Any]], Dict[str, Any] | None, Dict[str, Any] | None]:
|
|
569
616
|
statuses: Dict[str, str] = {}
|
|
570
617
|
unmanaged: List[Dict[str, Any]] = []
|
|
571
618
|
node_status: Dict[str, Any] | None = None
|
|
572
619
|
if not config:
|
|
573
|
-
return statuses, unmanaged, node_status
|
|
620
|
+
return statuses, unmanaged, node_status, None
|
|
621
|
+
proxmox = None
|
|
622
|
+
node = None
|
|
574
623
|
try:
|
|
575
624
|
proxmox = _connect_proxmox(config)
|
|
576
625
|
node = _get_node_from_config(config)
|
|
@@ -591,10 +640,15 @@ def _get_managed_containers_summary(force: bool = False) -> Dict[str, Any]:
|
|
|
591
640
|
description = (cfg.get("description") or "")
|
|
592
641
|
if MANAGED_MARKER in description:
|
|
593
642
|
continue
|
|
594
|
-
|
|
643
|
+
unmanaged.append(_build_unmanaged_container_entry(ct, cfg, vmid_key))
|
|
595
644
|
except Exception as exc: # pragma: no cover - best effort
|
|
596
645
|
logger.debug("Failed to refresh container statuses: %s", exc)
|
|
597
|
-
|
|
646
|
+
storage_snapshot = (
|
|
647
|
+
_get_storage_snapshot(proxmox, node, default_storage)
|
|
648
|
+
if proxmox and node
|
|
649
|
+
else None
|
|
650
|
+
)
|
|
651
|
+
return statuses, unmanaged, node_status, storage_snapshot
|
|
598
652
|
|
|
599
653
|
now = time.monotonic()
|
|
600
654
|
with _MANAGED_CONTAINERS_CACHE_LOCK:
|
|
@@ -607,7 +661,10 @@ def _get_managed_containers_summary(force: bool = False) -> Dict[str, Any]:
|
|
|
607
661
|
managed_vmids: Set[str] = {
|
|
608
662
|
str(_to_int(record.get("vmid"))) for record in records if record.get("vmid") is not None
|
|
609
663
|
}
|
|
610
|
-
|
|
664
|
+
default_storage = config.get("default_storage") if config else None
|
|
665
|
+
statuses, unmanaged, node_status, storage_snapshot = _refresh_container_statuses(
|
|
666
|
+
records, config, managed_vmids, default_storage
|
|
667
|
+
)
|
|
611
668
|
for record in records:
|
|
612
669
|
vmid = record.get("vmid")
|
|
613
670
|
if vmid is None:
|
|
@@ -616,7 +673,7 @@ def _get_managed_containers_summary(force: bool = False) -> Dict[str, Any]:
|
|
|
616
673
|
status = statuses.get(vmid_key)
|
|
617
674
|
if status:
|
|
618
675
|
record["status"] = status
|
|
619
|
-
summary = _build_managed_containers_summary(records, unmanaged, node_status)
|
|
676
|
+
summary = _build_managed_containers_summary(records, unmanaged, node_status, storage_snapshot, default_storage)
|
|
620
677
|
with _MANAGED_CONTAINERS_CACHE_LOCK:
|
|
621
678
|
_MANAGED_CONTAINERS_CACHE["timestamp"] = now
|
|
622
679
|
_MANAGED_CONTAINERS_CACHE["summary"] = summary
|
|
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
|
|
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
|